WGSL - Die neue Shadersprache
WGSL vs GLSL (03.04.2024)
Förderjahr 2023 / Projekt Call #18 / ProjektID: 6890 / Projekt: Math2Model

WGSL, die moderne Shadingsprache im Web

GPU Programmierung

Zur GPU-Programmierung stehen diverse Graphikschnittstellen (Graphik-APIs) zur Verfügung, von denen zwei in Browsern nutzbar sind: WebGL und WebGPU. Diese beiden Graphik-APIs kommen mit jeweils ihrer eigenen Shadingsprache (für Code, der auf Graphikkarten ausgeführt wird): Die Shadingsprache von WebGL ist GLSL; die Shadingsprache von WebGPU ist WGSL. Die damit erzeugten Befehlsabfolgen werden des Weiteren über low-level Graphik-APIs an die Graphikkarte (GPU) weitergeleitet.

Uebersicht an GPU APIs und Shadersprachen

 

Für unser Tool Math2Model standen sowohl GLSL oder WGSL als Optionen zur Verfügung, da das Babylon.js-Framework GLSL-Code intern nach WGSL übersetzen kann. Wir entschieden uns dafür, auf die neuere und modernere der beiden Sprachen zu setzen, nämlich WGSL.

Wir sehen diverse Vorteile in dieser Entscheidung:

  • Wir setzen damit auf moderne Technologie anstatt auf eine bereits sehr alte Sprache
  • WebGL bietet keinen Support für Compute Shader, daher ist WGSL quasi die erste "native Compute Shader-Sprache im Web".
  • Wir reduzieren unsere Abhängigkeit auf Babylon.js und dessen GLSL -> WGSL Umwandlung.

Der größte Nachteil dieser Entscheidung ist vermutlich der, dass die Nutzung von WGSL möglicherweise unintuitiver ist und einen Lernaufwand bedeuten kann - vor allem für Nutzer von Shadertoy, welches GLSL verwendet.

Unterschiede zwischen GLSL und WGSL

Im Folgenden werden einige Unterschiede zwischen GLSL und WGSL gelistet. Eine detailliertere Gegenüberstellung der Unterschiede findet sich im Artikel From GLSL to WGSL: the future of shaders on the Web von Damien Seguin.

Datentypen:

GLSL und WGSL Datentypen

Variablendeklaration:

Deklarierung einer Variable in GLSL und WGSL

Funktionen:

GLSL und WGSL Funktionen

Built-in Variablen:

GLSL und WGSL Built-ins

Beispiel einer parametrischen Kugel in beiden Sprachen:

GLSL und WGSL Beispiele

 

Tags:

GLSL Shading Language WGSL
CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.
    Datenschutzinformation
    Der datenschutzrechtliche Verantwortliche (Internet Privatstiftung Austria - Internet Foundation Austria, Österreich würde gerne mit folgenden Diensten Ihre personenbezogenen Daten verarbeiten. Zur Personalisierung können Technologien wie Cookies, LocalStorage usw. verwendet werden. Dies ist für die Nutzung der Website nicht notwendig, ermöglicht aber eine noch engere Interaktion mit Ihnen. Falls gewünscht, treffen Sie bitte eine Auswahl: