Warum PSSL in HLSL konvertieren?
Studios, die denselben Renderer auf PS4 und PC ausliefern, behalten einen Shader-Kern bei und übersetzen ihn für Direct3D nach .HLSL. PSSL und HLSL teilen das gleiche DX11-Modell mit separaten Texture2D- und SamplerState-Objekten, Semantiken und Register-Bindings, sodass ein #define-Shim die meisten Lücken schließt. Nur konsolenspezifische Intrinsics erfordern ein echtes Rewrite.
Wie man PSSL in HLSL konvertiert
Visual Studio Code mit einem Makro-Shim FREE
Öffnen Sie die .pssl in VS Code und binden Sie einen gemeinsamen Header mit #defines ein, der PSSL-Keywords auf ihre HLSL-Formen abbildet, und korrigieren Sie verbleibende Deklarationen manuell.
Manuelle Bearbeitung in einem Texteditor FREE
Benennen Sie PSSL-Sampler/Textur- und Semantik-Keywords in HLSL-Äquivalente um und passen Sie register(t#/s#/b#)-Bindings an, damit die Datei mit fxc oder dxc kompiliert.
Validierung mit dxc OPEN-SOURCE
Kompilieren Sie die portierte Datei mit Microsofts dxc shader.hlsl -T ps_6_0, um sicherzustellen, dass das HLSL valide ist und um verbleibende PSSL-Syntax zu finden.
Ü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 .HLSL-Datei ist mit High Level Shader Language source code verknüpft, einer 3d image-Datei.
.HLSL-Details öffnen →Qualität & worauf zu achten ist
- Die dokumentierte Ähnlichkeit bedeutet, dass die meisten Unterschiede kosmetischer Natur sind, aber es gibt immer noch keinen fertigen PSSL-Parser.
- PS4-GPU-Intrinsics sowie Wave/Thread-Erweiterungen haben kein HLSL-Gegenstück und müssen neu implementiert oder als Stubs angelegt werden.
- Ressourcen-Register-Indizes müssen manchmal neu zugewiesen werden, um den Erwartungen der D3D-Root-Signature zu entsprechen.
Häufig gestellte Fragen
Wie ähnlich sind PSSL und HLSL?
Kann ein Makro-Header allein die Arbeit erledigen?
Mit welchem Compiler sollte ich testen?
dxc für Shader Model 6-Ziele oder den veralteten fxc für ältere SM5-Shader.