Varför konvertera PSSL till HLSL?
Studior som levererar samma renderingsmotor på PS4 och PC behåller en shader-kropp och översätter till .HLSL för Direct3D. PSSL och HLSL delar samma DX11-stilmodell med separata Texture2D- och SamplerState-objekt, semantik och registerbindningar, så en #define-shim täcker de flesta luckor. Endast konsolspecifika intrinsics behöver en riktig omskrivning.
Hur man konverterar PSSL till HLSL
Visual Studio Code med en makro-shim FREE
Öppna .pssl i VS Code och inkludera en delad header med #define som mappar PSSL-nyckelord till deras HLSL-motsvarigheter, och fixa sedan återstående deklarationer för hand.
Manuell redigering i valfri textredigerare FREE
Byt namn på PSSL-sampler/texture och semantiska nyckelord till HLSL-ekvivalenter och justera register(t#/s#/b#)-bindningar så att filen kompilerar med fxc eller dxc.
Validera med dxc OPEN-SOURCE
Kompilera den porterade filen med Microsofts dxc shader.hlsl -T ps_6_0 för att bekräfta att HLSL-koden är giltig och fånga upp eventuell kvarvarande PSSL-syntax.
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 .HLSL-fil är associerad med High Level Shader Language source code, en 3d image-fil.
Öppna detaljer för .HLSL →Kvalitet & vad man bör tänka på
- Den Wikipedia-dokumenterade likheten innebär att de flesta skillnader är kosmetiska, men det finns fortfarande ingen färdig PSSL-parser.
- PS4 GPU-intrinsics och wave/thread-tillägg har ingen HLSL-motsvarighet och måste implementeras om eller ersättas med stubs.
- Resursregisterindex behöver ibland mappas om för att matcha D3D root-signature-förväntningar.
Vanliga frågor
Hur lika är PSSL och HLSL?
Kan en makro-header ensam göra hela jobbet?
Vilken kompilator ska jag testa med?
dxc för Shader Model 6-mål, eller äldre fxc för äldre SM5-shaders.