¿Por qué convertir PSSL a HLSL?
Los estudios que lanzan el mismo motor de renderizado en PS4 y PC mantienen un solo cuerpo de shader y lo traducen a .HLSL para Direct3D. PSSL y HLSL comparten el mismo modelo estilo DX11 de objetos Texture2D y SamplerState separados, semánticas y enlaces de registros, por lo que un calzo (shim) de #define cubre la mayoría de las brechas. Solo las funciones intrínsecas específicas de la consola necesitan una reescritura real.
Cómo convertir PSSL a HLSL
Visual Studio Code con un calzo de macros FREE
Abra el .pssl en VS Code e incluya un encabezado compartido de #defines que asocie las palabras clave de PSSL con sus formas en HLSL, luego corrija manualmente las declaraciones restantes.
Edición manual en cualquier editor de texto FREE
Cambie el nombre de las palabras clave de sampler/texture y semánticas de PSSL a sus equivalentes en HLSL y ajuste los enlaces register(t#/s#/b#) para que el archivo compile con fxc o dxc.
Validar con dxc OPEN-SOURCE
Compile el archivo portado con el dxc shader.hlsl -T ps_6_0 de Microsoft para confirmar que el HLSL es válido y detectar cualquier sintaxis restante exclusiva de PSSL.
Acerca de estos formatos
Un archivo .pssl contiene código de sombreado (shader) escrito en el PlayStation Shader Language de Sony, el lenguaje de programación de GPU utilizado para el desarrollo de juegos en…
Abrir detalles de .PSSL →Un archivo .HLSL está asociado con High Level Shader Language source code, un archivo de tipo 3d image.
Abrir detalles de .HLSL →Calidad y qué observar
- La similitud documentada en Wikipedia significa que la mayoría de las diferencias son cosméticas, pero aún no existe un analizador de PSSL directo.
- Las funciones intrínsecas de la GPU de PS4 y las extensiones de wave/thread no tienen contraparte en HLSL y deben ser reimplementadas o anuladas (stubbed).
- Los índices de registro de recursos a veces necesitan un remapeo para coincidir con las expectativas de la firma raíz (root-signature) de D3D.
Preguntas frecuentes
¿Qué tan similares son PSSL y HLSL?
¿Puede un encabezado de macros por sí solo terminar el trabajo?
¿Con qué compilador debería probar?
dxc para objetivos de Shader Model 6, o el antiguo fxc para shaders SM5 anteriores.