Der Artikel war interessant, aber die Darstellung im Diagramm, in der OpenGL / WebGL / WebGPU so wirken, als seien sie auf Vulkan aufgebaut, ist falsch
WebGL und WebGPU laufen nicht über Vulkan, sondern direkt auf D3D und Metal
Außerdem ist Vulkan kein Open Source, sondern ein Standard
WebGPU ist nicht nur auf Browser beschränkt, sondern auch als Bibliotheken Dawn für C++ und WGPU für Rust verfügbar und kann damit unter Windows, macOS, Linux, iOS, Android usw. ausgeführt werden
Vulkan läuft auf etwas mehr Plattformen als DirectX, ist aber nicht Teil einer Windows-Standardinstallation und läuft nicht auf macOS oder iOS
Ich möchte ergänzen, dass Vulkan kein Open Source, sondern ein offener Standard ist
Die tatsächlichen Implementierungen werden von den jeweiligen Hardware-Anbietern bereitgestellt, und Vulkan selbst ist letztlich nur eine Header-Datei
Außerdem läuft es auch auf Apple-Plattformen gut über Vulkan-zu-Metal-Übersetzungsschichten wie MoltenVK oder KosmicKrisp
Vulkan ist nicht vollständig plattformübergreifend, unterstützt aber einen deutlich größeren Bereich als DirectX
DirectX gibt es für Windows und Xbox, Vulkan für Linux, Android, Windows, Nintendo Switch, Switch 2 usw.
Es sollte erwähnt werden, dass WebGPU eine vereinheitlichte API über den nativen APIs der jeweiligen Plattformen ist, also DirectX, Vulkan und Metal
Die Khronos-APIs haben unzählige Erweiterungen, von denen einige proprietär sind und die Portabilität verschlechtern
PlayStation unterstützt Vulkan nicht, und auf der Switch wird meist NVN statt OpenGL/Vulkan verwendet
Allein die Tatsache, dass Vulkan unter Windows läuft, macht es in meinen Augen allgemeiner einsetzbar als DirectX
Dass Vulkan in manchen Linux-VNC-Umgebungen nicht funktioniert, ist kein typischer Fall
Die meisten Nutzer bekommen Vulkan-Unterstützung über ihre GPU-Treiber
Die Kursqualität dieser Website ist erstaunlich
Ich würde das Projekt sogar unterstützen wollen, wenn das Buch auch nur als Vorbestellung verkauft würde
Ich verfolge die Reihe seit dem ersten Beitrag, und jeder neue Artikel beeindruckt mich mehr
Wenn man mit Shadern experimentieren will, würde ich folgende IDEs empfehlen
shadertoy – browserbasiert, am einfachsten und am beliebtesten
Shadron – gute Bedienbarkeit, daher mein persönlicher Favorit, aber eher Nischenprodukt
SHADERed – man braucht etwas, um sich an die UX zu gewöhnen, aber funktional ist es mehr als ausreichend
KodeLife – ich habe davon gehört, aber es selbst nicht benutzt
Cables(cables.gl) ist ebenfalls ziemlich cool
Es gibt beeindruckende Arbeiten von Kirell Benzi
Im Software-Manager von Mint habe ich wgshadertoy entdeckt
Unterstützt flatpak, AUR, macports, Windows und weitere Plattformen
Unter macOS oder iPadOS kann man mit Playgrounds leicht in Metal-Shader einsteigen
Es gibt auch Bonzomatic, das in der Demoszene für Shader-Live-Coding-Wettbewerbe verwendet wird
Programmierung ist letztlich der Prozess, das, was ein Mensch verstanden hat, in etwas zu übersetzen, das der Computer versteht GPU-Programmierung ist dabei aber deutlich schwieriger
Durch zahllose Fallstricke, Inkonsistenzen zwischen Hardware und Software und den Mangel an Debugging-Werkzeugen ist die Entwicklererfahrung sehr schlecht
Schade ist auch, dass die Community nur wenig Willen zeigt, dieses Problem zu verbessern
OpenGL und DirectX vor Version 12 waren Versuche, Hardware-Details zu abstrahieren, aber am Ende hat sich die Abstraktion eher als schädlich erwiesen
Beim Schreiben eines Fragment-Shaders ist der am wenigsten intuitive Teil, dass man Koordinaten als Eingabe erhält und eine Farbe als Ausgabe erzeugt
Anders als beim Zeichnen mit einem Stift bestimmt ein Shader die Farbe, indem er die Position jedes Pixels berechnet
Man muss lernen, nicht Objekte zu bewegen, sondern den Raum zu manipulieren
Vertex-Shader wirken natürlicher, weil sie die Position von Dreiecken ausgeben
Unintuitiv wirkt es nur dann, wenn man Fragment-Shader missbraucht
Tatsächlich übernehmen sie die letzte Stufe der Rendering-Pipeline, etwa Textur-Sampling und Lichtberechnung
Bei PBR oder Deferred Rendering teilen sich die meisten Objekte gemeinsame Shader, und nur Spezialeffekte werden angepasst
Das ist kein Problem der Shader selbst, sondern eher der Unterschied zwischen Raster- und Vektorgrafik
Shading bedeutet nicht, Konturen zu zeichnen, sondern physikalisch basierte Materialien darzustellen
Malerei kommt dem Shading näher, Stiftzeichnungen dagegen nicht
Einen Fragment-Shader zu verwenden, um ein Rechteck zu zeichnen, ist der falsche Ansatz
Shader dienen dazu, ein Rechteck zu schattieren (shading)
In der Praxis definiert der Vertex-Shader die Grenzen, und der Fragment-Shader füllt das Innere aus
Für Lehrzwecke lässt man den Vertex-Shader manchmal weg und füllt den ganzen Bildschirm mit einem Fragment-Shader
Beim Lernen von GPU-Code ist der schwierigste Teil, dass die Ersteinrichtung komplex und schwer zugänglich ist
Datenformate, Transformationsreihenfolgen, die Grenze zwischen CPU und GPU – die Konzepte sind schwierig, und die Dokumentation ist dürftig
Auch das globale Variablensystem der GPU ist verwirrend
Ein Teil der Fragen betrifft eher das API-Design als die GPU selbst
GPUs folgen einem SIMT-Modell, daher ist Konsistenz beim Datenzugriff wichtig
Transformationen werden innerhalb jedes Threads sequenziell angewendet, und die Grenze zwischen CPU und GPU kann je nach Performance-Budget mehrfach überschritten werden
Globale Variablen sind eher Konstanten, die wie uniforms identisch an jeden Thread übergeben werden
In CUDA ist globaler Zugriff per atomaren Operationen möglich, kostet aber viel Performance
Ein WebGL-Einsteigerkurs wäre dafür ein guter Startpunkt
Der Reifegrad der Website ist erstaunlich hoch
Diagramme, Scrollbar und Stil sind alle hervorragend
Shader gab es schon vor GPUs, und sie können auch auf der CPU ausgeführt werden
Der Kern von GPUs ist das SIMT/SIMD-Ausführungsmodell, und Shader sind ihrem Wesen nach eine Art Callback-Funktion
Ich denke, dass gerade die Möglichkeit, sie mit derselben sequenziellen Denkweise wie CPU-Code zu schreiben, ihre Einfachheit und Eleganz ausmacht
Besonders beeindruckend ist, dass alle Illustrationen mit Figma erstellt wurden
Ich habe mit einer Antwort hinterlassen, dass das Feedback großartig ist
Die Arbeit ist wirklich wunderschön und sehr ausgereift
Stimme zu 100 % zu. Ich frage mich, ob diese Website eine Custom-App mit Next.js ist
Großartige Arbeit. Das Ansehen hat durchgehend Spaß gemacht
Ich empfehle Iñigo Quilez’ Video „This painting is a mathematical formula“
Es zeigt das Shader-Konzept sehr gut, bei dem die x- und y-Koordinaten jedes Pixels als Funktion ausgedrückt werden
1 Kommentare
Hacker-News-Kommentare
WebGL und WebGPU laufen nicht über Vulkan, sondern direkt auf D3D und Metal
Außerdem ist Vulkan kein Open Source, sondern ein Standard
WebGPU ist nicht nur auf Browser beschränkt, sondern auch als Bibliotheken Dawn für C++ und WGPU für Rust verfügbar und kann damit unter Windows, macOS, Linux, iOS, Android usw. ausgeführt werden
Vulkan läuft auf etwas mehr Plattformen als DirectX, ist aber nicht Teil einer Windows-Standardinstallation und läuft nicht auf macOS oder iOS
Die tatsächlichen Implementierungen werden von den jeweiligen Hardware-Anbietern bereitgestellt, und Vulkan selbst ist letztlich nur eine Header-Datei
Außerdem läuft es auch auf Apple-Plattformen gut über Vulkan-zu-Metal-Übersetzungsschichten wie MoltenVK oder KosmicKrisp
DirectX gibt es für Windows und Xbox, Vulkan für Linux, Android, Windows, Nintendo Switch, Switch 2 usw.
PlayStation unterstützt Vulkan nicht, und auf der Switch wird meist NVN statt OpenGL/Vulkan verwendet
Dass Vulkan in manchen Linux-VNC-Umgebungen nicht funktioniert, ist kein typischer Fall
Die meisten Nutzer bekommen Vulkan-Unterstützung über ihre GPU-Treiber
Ich würde das Projekt sogar unterstützen wollen, wenn das Buch auch nur als Vorbestellung verkauft würde
Ich verfolge die Reihe seit dem ersten Beitrag, und jeder neue Artikel beeindruckt mich mehr
Es gibt beeindruckende Arbeiten von Kirell Benzi
Unterstützt flatpak, AUR, macports, Windows und weitere Plattformen
GPU-Programmierung ist dabei aber deutlich schwieriger
Durch zahllose Fallstricke, Inkonsistenzen zwischen Hardware und Software und den Mangel an Debugging-Werkzeugen ist die Entwicklererfahrung sehr schlecht
Schade ist auch, dass die Community nur wenig Willen zeigt, dieses Problem zu verbessern
Anders als beim Zeichnen mit einem Stift bestimmt ein Shader die Farbe, indem er die Position jedes Pixels berechnet
Man muss lernen, nicht Objekte zu bewegen, sondern den Raum zu manipulieren
Vertex-Shader wirken natürlicher, weil sie die Position von Dreiecken ausgeben
Tatsächlich übernehmen sie die letzte Stufe der Rendering-Pipeline, etwa Textur-Sampling und Lichtberechnung
Bei PBR oder Deferred Rendering teilen sich die meisten Objekte gemeinsame Shader, und nur Spezialeffekte werden angepasst
Shading bedeutet nicht, Konturen zu zeichnen, sondern physikalisch basierte Materialien darzustellen
Malerei kommt dem Shading näher, Stiftzeichnungen dagegen nicht
Shader dienen dazu, ein Rechteck zu schattieren (shading)
Für Lehrzwecke lässt man den Vertex-Shader manchmal weg und füllt den ganzen Bildschirm mit einem Fragment-Shader
Datenformate, Transformationsreihenfolgen, die Grenze zwischen CPU und GPU – die Konzepte sind schwierig, und die Dokumentation ist dürftig
Auch das globale Variablensystem der GPU ist verwirrend
Barebones WebGL in 75 lines,
Barebones 3D rendering with WebGL
Vulkan braucht deutlich mehr Boilerplate-Code als WebGL
GPUs folgen einem SIMT-Modell, daher ist Konsistenz beim Datenzugriff wichtig
Transformationen werden innerhalb jedes Threads sequenziell angewendet, und die Grenze zwischen CPU und GPU kann je nach Performance-Budget mehrfach überschritten werden
Globale Variablen sind eher Konstanten, die wie uniforms identisch an jeden Thread übergeben werden
In CUDA ist globaler Zugriff per atomaren Operationen möglich, kostet aber viel Performance
Ein WebGL-Einsteigerkurs wäre dafür ein guter Startpunkt
Diagramme, Scrollbar und Stil sind alle hervorragend
Shader gab es schon vor GPUs, und sie können auch auf der CPU ausgeführt werden
Der Kern von GPUs ist das SIMT/SIMD-Ausführungsmodell, und Shader sind ihrem Wesen nach eine Art Callback-Funktion
Ich denke, dass gerade die Möglichkeit, sie mit derselben sequenziellen Denkweise wie CPU-Code zu schreiben, ihre Einfachheit und Eleganz ausmacht
Es zeigt das Shader-Konzept sehr gut, bei dem die x- und y-Koordinaten jedes Pixels als Funktion ausgedrückt werden