HLSL - Microsofts Shadersprache ist nun Open Source

FrozenPie

Lötkolbengott/-göttin
Nein, es ist kein Witz: Microsoft hat seine Shadersprache HLSL, welche auf LLVM/Clang basiert und Teil von DirectX 12 ist, nun unter der MIT-Lizenz Open Source gemacht. HLSL ist die in DirectX verwendete Shadersprache und bildet das Gegenstück zu GLSL, welches in OpenGL und VULKAN verwendet wird.
Zusätzlich kann der aktuelle HLSL Compiler nun für das neue Shader Modell 6.0 zu compilieren, welches es erlaubt mehrere GPU-Threads zu verwenden, statt wie bisher nur Einen.
In wie weit das nun Auswirkungen auf haben wird, vor allem im Bezug auf den sich momentan in der Fertigstellung befindlichen HLSL -> GLSL Translator für SPIR-V, weiß ich leider nicht genau. Durch die Offenlegung müsste theoretisch aber auch eine direkte Integration von HLSL in Vulkan möglich sein (Bei Irrtum bitte korrigieren, da es sich hier um eine Annahme meinerseits handelt :D).


Quellen:
DirectX 12: Microsoft legt Shader-Compiler offen - Golem.de
New DirectX Shader Compiler based on Clang/LLVM now available as Open Source – DirectX Developer Blog
 
Die API muss ja schon vorher verfügbar gewesen sein (wie soll sonst irgend jemand DX12 Shader programmieren?), daher dürfte das bei der Übersetzung zu GLSL und ähnliches erst mal nicht viel ändern. Was man jetzt neu sehen kann(und wahrscheinlich wegen des Aufbaus auf CLANG auch verfügbar gemacht werden musste) ist die Übersetzung in das DX12 Binärformat inklusive vorgenommener Optimierungen. Letztere könnten theoretisch interessant sein, die meisten sind aber wohl eh Teil von LLVM.
Im Endeffekt haben wir hier also "nur" ein Mittel mehr für den frustrierten Engine Entwickler um heraus zu bekommen warum sein Shader-Code so ineffizient arbeitet. Richtung OGL ändert das wenig, schon eher reduziert es die Argumente für selbiges.(so meine Einschätzung)
 
Zuletzt bearbeitet:
HLSL war schon immer dokumentiert und für jeden praktisch umsetzbar, deswegen funktionierte auch Mantle mit HLSL oder deswegen gibt es schon seit längerem Arbeiten an einem HLSL--> SPIR-V Frontend für Vulkan.
Jetzt hat MS aber den ganzen Übersetzungsprozess offen gelegt, die Übersetzung von HLSL zur neuen DXIL, jetzt müsste es auch möglich sein wie unter Vulkan ein anderes Frontend zu verwenden z.B. GLSL --> DXIL oder etwas total eigenes.
Oder irgendwelche Tools auf Basis davon aufbauen, irgendetwas zusätzlich einfügen, selber etwas optimieren.

Wave-Level-Operations können Daten zwischen den Threads einer Arbeitsgruppe ausnutzen, was die Performance in gewissen Fällen stark verbessern kann, da praktisch auf Register-Ebene operiert wird:
AMD GCN Assembly: Cross-Lane Operations - GPUOpen

Falls ansonsten aber nicht viel mehr mit SM6.0 dazukommt, dann wird eine Umsetzung für Vulkan vermutlich nicht schwer ausfallen.
 
Interessant klingt das ganze schon, für mich aber nicht von Nöten.

Anschauen tu ich mir das heute Abend aber trotzdem
 
Vielleicht setzt dann ja jemand noch DX12 für Win7 um, oder es ist möglich DX12 Spiele über Vulkan laufen zu lassen.
 
Zurück