Warum PSSL in GLSL konvertieren?
Teams, die einen PS4-Renderer auf OpenGL oder Vulkan umstellen, benötigen ihre PSSL-Shader im Format .GLSL. PSSL liest sich fast wie HLSL, und GLSL drückt dieselben Konzepte mit anderen Schlüsselwörtern aus, sodass eine sorgfältige Zeile-für-Zeile-Portierung plus ein kleiner Makro-Header die Aufgabe erledigt. Eine gängige Abkürzung ist, PSSL zuerst nach HLSL zu portieren und dann einen automatisierten HLSL-zu-GLSL-Cross-Compiler zu verwenden.
Wie man PSSL in GLSL konvertiert
Manuelle Portierung in einem Texteditor FREE
Öffnen Sie die .pssl-Datei und schreiben Sie sie als GLSL um: Konvertieren Sie Texture2D/SamplerState-Paare in sampler2D, ersetzen Sie Eingabe-/Ausgabe-Semantiken durch layout(location=...) und mappen Sie mul() auf den *-Operator von GLSL mit transponierten Matrizen.
Portierung nach HLSL, dann ShaderConductor OPEN-SOURCE
Konvertieren Sie PSSL zuerst nach HLSL und führen Sie dann Microsofts ShaderConductor (oder SPIRV-Cross) aus, um automatisch lesbares GLSL aus diesem HLSL zu generieren.
Makro-Shim-Header FREE
Fügen Sie einen gemeinsamen #define-Header hinzu, der PSSL-Schlüsselwörter auf GLSL-Äquivalente abbildet, sodass ein Großteil des Codes unverändert kompiliert wird, ähnlich dem plattformübergreifenden HPSL-Ansatz von Frictional Games.
Über diese Formate
Eine .pssl-Datei enthält Shader-Code, der in Sonys PlayStation Shader Language geschrieben wurde, der GPU-Programmiersprache für die Spieleentwicklung auf PlayStation 4 und PlayStation 5.…
.PSSL-Details öffnen →Eine .GLSL-Datei ist mit OpenGL Shading Language source code verknüpft, einer misc-Datei.
.GLSL-Details öffnen →Qualität & worauf zu achten ist
- Kein Parser liest PSSL direkt, daher ist der erste Schritt immer die manuelle Bearbeitung.
- HLSL/PSSL verwenden Row-Major-Matrizen und Clip-Space-Z in [0,1]; GLSL ist Column-Major mit Z in [-1,1], daher müssen Matrix-Mathematik und Tiefe angepasst werden.
- PS4-spezifische Intrinsics und registerspezifische Bindungen haben kein GLSL-Äquivalent und müssen von Hand ersetzt werden.