Perché convertire PSSL in GLSL?
I team che spostano un renderer da PS4 a OpenGL o Vulkan hanno bisogno dei loro shader PSSL in .GLSL. Il PSSL si legge in modo molto simile all'HLSL e il GLSL esprime gli stessi concetti con parole chiave diverse, quindi un porting accurato riga per riga insieme a un piccolo header di macro fa il suo lavoro. Una scorciatoia comune è convertire prima il PSSL in HLSL e poi eseguire un cross-compiler automatico da HLSL a GLSL.
Come convertire PSSL in GLSL
Porting manuale in un editor di testo FREE
Apri il file .pssl e riscrivilo come GLSL: converti le coppie Texture2D/SamplerState in sampler2D, sostituisci le semantiche di input/output con layout(location=...) e mappa mul() all'operatore * di GLSL con matrici trasposte.
Porting verso HLSL, poi ShaderConductor OPEN-SOURCE
Converti prima il PSSL in HLSL, quindi esegui ShaderConductor di Microsoft (o SPIRV-Cross) per generare automaticamente GLSL leggibile da quell'HLSL.
Header shim con macro FREE
Aggiungi un header #define condiviso che crei alias tra le parole chiave PSSL e gli equivalenti GLSL, in modo che gran parte del corpo compili senza modifiche, similmente all'approccio HPSL multipiattaforma di Frictional Games.
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 .GLSL è associato a OpenGL Shading Language source code, un file di tipo misc.
Apri dettagli .GLSL →Qualità e a cosa prestare attenzione
- Nessun parser legge direttamente il PSSL, quindi il primo passaggio è sempre l'editing manuale.
- HLSL/PSSL usano matrici row-major e clip-space z in [0,1]; GLSL è column-major con z in [-1,1], quindi la matematica delle matrici e la profondità devono essere regolate.
- Le funzioni intrinseche esclusive di PS4 e i binding specifici dei registri non hanno un equivalente GLSL e devono essere sostituiti a mano.