Why convert PSSL to HLSL?
Studios shipping the same renderer on PS4 and PC keep one shader body and translate to .HLSL for Direct3D. PSSL and HLSL share the same DX11-style model of separate Texture2D and SamplerState objects, semantics and register bindings, so a #define shim covers most gaps. Only console-specific intrinsics need a real rewrite.
How to convert PSSL to HLSL
Visual Studio Code with a macro shim FREE
Open the .pssl in VS Code and include a shared header of #defines that maps PSSL keywords to their HLSL forms, then fix any remaining declarations by hand.
Manual edit in any text editor FREE
Rename PSSL sampler/texture and semantic keywords to HLSL equivalents and adjust register(t#/s#/b#) bindings so the file compiles with fxc or dxc.
Validate with dxc OPEN-SOURCE
Compile the ported file with Microsoft's dxc shader.hlsl -T ps_6_0 to confirm the HLSL is valid and catch any leftover PSSL-only syntax.
About these formats
A .pssl file holds shader code written in Sony's PlayStation Shader Language, the GPU programming language used for PlayStation 4 and PlayStation 5 game development. Text-based .pssl files…
Open .PSSL details →A .HLSL file is associated with High Level Shader Language source code, a 3d image file.
Open .HLSL details →Quality & what to watch
- The Wikipedia-documented similarity means most differences are cosmetic, but there is still no drop-in PSSL parser.
- PS4 GPU intrinsics and wave/thread extensions have no HLSL counterpart and must be reimplemented or stubbed.
- Resource register indices sometimes need remapping to match D3D root-signature expectations.
Frequently asked questions
How similar are PSSL and HLSL?
Can a macro header alone finish the job?
Which compiler should I test with?
dxc for Shader Model 6 targets, or legacy fxc for older SM5 shaders.