1 Punkte von GN⁺ 2025-11-24 | 1 Kommentare | Auf WhatsApp teilen

1 Kommentare

 
GN⁺ 2025-11-24
Hacker-News-Kommentare
  • 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
    • Ich hatte viele der gleichen Fragen und habe deshalb Blogbeiträge zum Lernen von WebGL geschrieben
      Barebones WebGL in 75 lines,
      Barebones 3D rendering with WebGL
      Vulkan braucht deutlich mehr Boilerplate-Code als WebGL
    • 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