Perché convertire PSSL in HLSL?
Gli studi che distribuiscono lo stesso renderer su PS4 e PC mantengono un unico corpo dello shader e lo traducono in .HLSL per Direct3D. PSSL e HLSL condividono lo stesso modello in stile DX11 di oggetti Texture2D e SamplerState separati, semantica e binding dei registri, quindi uno shim #define copre la maggior parte delle lacune. Solo gli intrinseci specifici della console richiedono una vera riscrittura.
Come convertire PSSL in HLSL
Visual Studio Code con uno shim macro FREE
Apri il file .pssl in VS Code e includi un header condiviso di #define che mappa le parole chiave PSSL nelle loro forme HLSL, quindi correggi a mano le restanti dichiarazioni.
Modifica manuale in qualsiasi editor di testo FREE
Rinomina le parole chiave sampler/texture e semantiche di PSSL negli equivalenti HLSL e regola i binding register(t#/s#/b#) in modo che il file venga compilato con fxc o dxc.
Validazione con dxc OPEN-SOURCE
Compila il file portato con dxc shader.hlsl -T ps_6_0 di Microsoft per confermare che l'HLSL sia valido e individuare eventuali residui di sintassi solo PSSL.
Informazioni su questi formati
Un file .pssl contiene codice shader scritto nel PlayStation Shader Language di Sony, il linguaggio di programmazione GPU utilizzato per lo sviluppo di giochi su PlayStation 4 e PlayStation…
Apri dettagli .PSSL →Un file .HLSL è associato a High Level Shader Language source code, un file di tipo 3d image.
Apri dettagli .HLSL →Qualità e a cosa prestare attenzione
- La somiglianza documentata su Wikipedia significa che la maggior parte delle differenze sono estetiche, ma non esiste ancora un parser PSSL pronto all'uso.
- Gli intrinseci della GPU PS4 e le estensioni wave/thread non hanno una controparte HLSL e devono essere reimplementati o sostituiti con stub.
- Gli indici dei registri delle risorse a volte devono essere rimappati per corrispondere alle aspettative della root-signature di D3D.
Domande frequenti
Quanto sono simili PSSL e HLSL?
Un header di macro da solo può completare il lavoro?
Con quale compilatore dovrei testare?
dxc per target Shader Model 6, o il legacy fxc per shader SM5 più vecchi.