Hvorfor konvertere PSSL til GLSL?
Team som flytter en PS4-renderer til OpenGL eller Vulkan trenger sine PSSL-shadere i .GLSL. PSSL leses mye som HLSL, og GLSL uttrykker de samme konseptene med andre nøkkelord, så en nøyaktig linje-for-linje-portering pluss en liten makro-header gjør jobben. En vanlig snarvei er å portere PSSL til HLSL først, og deretter kjøre en automatisert HLSL-til-GLSL-krysskompilator.
Hvordan konvertere PSSL til GLSL
Manuell portering i et tekstredigeringsprogram FREE
Åpne .pssl-filen og skriv den om som GLSL: konverter Texture2D/SamplerState-par til sampler2D, erstatt inngangs-/utgangssemantikk med layout(location=...), og mapp mul() til GLSLs *-operator med transponerte matriser.
Porter til HLSL, deretter ShaderConductor OPEN-SOURCE
Konverter PSSL til HLSL først, og kjør deretter Microsofts ShaderConductor (eller SPIRV-Cross) for å generere lesbar GLSL automatisk fra den HLSL-koden.
Makro-shim-header FREE
Legg til en delt #define-header som gir PSSL-nøkkelord aliaser til GLSL-ekvivalenter, slik at mye av koden kompilerer uendret, i likhet med Frictional Games sin plattformuavhengige HPSL-tilnærming.
Om disse formatene
En .pssl-fil inneholder shader-kode skrevet i Sonys PlayStation Shader Language, GPU-programmeringsspråket som brukes for spillutvikling til PlayStation 4 og PlayStation 5. Tekstbaserte…
Åpne .PSSL-detaljer →En .GLSL-fil er assosiert med OpenGL Shading Language source code, en misc-fil.
Åpne .GLSL-detaljer →Kvalitet og hva du bør passe på
- Ingen parser leser PSSL direkte, så det første steget er alltid manuell redigering.
- HLSL/PSSL bruker «row-major»-matriser og clip-space z i [0,1]; GLSL er «column-major» med z i [-1,1], så matrisematematikk og dybde må justeres.
- PS4-spesifikke intrinsics og register-spesifikke bindinger har ingen GLSL-ekvivalent og må erstattes manuelt.