Varför konvertera PSSL till GLSL?
Team som flyttar en PS4-renderare till OpenGL eller Vulkan behöver sina PSSL-shaders i .GLSL. PSSL läses ungefär som HLSL, och GLSL uttrycker samma koncept med andra nyckelord, så en noggrann rad-för-rad-portning plus en liten makro-header gör jobbet. En vanlig genväg är att först portera PSSL till HLSL och sedan köra en automatiserad HLSL-till-GLSL-cross-compiler.
Hur man konverterar PSSL till GLSL
Manuell portning i en textredigerare FREE
Öppna filen .pssl och skriv om den som GLSL: konvertera Texture2D/SamplerState-par till sampler2D, ersätt in-/ut-semantik med layout(location=...) och mappa mul() till GLSL:s *-operator med transponerade matriser.
Porta till HLSL, sedan ShaderConductor OPEN-SOURCE
Konvertera PSSL till HLSL först, kör sedan Microsofts ShaderConductor (eller SPIRV-Cross) för att automatiskt generera läsbar GLSL från den HLSL-koden.
Makro-shim-header FREE
Lägg till en delad #define-header som aliasar PSSL-nyckelord till GLSL-motsvarigheter så att stora delar av koden kompileras oförändrad, liknande Frictional Games plattformsoberoende HPSL-metod.
Om dessa format
En .pssl-fil innehåller shader-kod skriven i Sonys PlayStation Shader Language, det GPU-programmeringsspråk som används för spelutveckling till PlayStation 4 och PlayStation 5. Textbaserade…
Öppna detaljer för .PSSL →En .GLSL-fil är associerad med OpenGL Shading Language source code, en misc-fil.
Öppna detaljer för .GLSL →Kvalitet & vad man bör tänka på
- Ingen parser läser PSSL direkt, så det första steget är alltid manuell redigering.
- HLSL/PSSL använder rad-major-matriser och clip-space z i [0,1]; GLSL är kolumn-major med z i [-1,1], så matris-matematik och djup behöver justeras.
- PS4-specifika intrinsics och registerspecifika bindningar har ingen GLSL-motsvarighet och måste ersättas för hand.