Pourquoi convertir PSSL en HLSL ?
Les studios livrant le même moteur de rendu sur PS4 et PC conservent un seul corps de shader et le traduisent en .HLSL pour Direct3D. PSSL et HLSL partagent le même modèle de style DX11 avec des objets Texture2D et SamplerState séparés, des sémantiques et des liaisons de registres, de sorte qu'un adaptateur #define comble la plupart des lacunes. Seules les fonctions intrinsèques spécifiques à la console nécessitent une véritable réécriture.
Comment convertir PSSL en HLSL
Visual Studio Code avec un adaptateur de macros FREE
Ouvrez le .pssl dans VS Code et incluez un en-tête partagé de #define qui mappe les mots-clés PSSL vers leurs formes HLSL, puis corrigez manuellement les déclarations restantes.
Édition manuelle dans n'importe quel éditeur de texte FREE
Renommez les mots-clés d'échantillonneur/texture et de sémantique PSSL en équivalents HLSL et ajustez les liaisons register(t#/s#/b#) pour que le fichier compile avec fxc ou dxc.
Validation avec dxc OPEN-SOURCE
Compilez le fichier porté avec le dxc shader.hlsl -T ps_6_0 de Microsoft pour confirmer que le HLSL est valide et détecter toute syntaxe résiduelle exclusive au PSSL.
À propos de ces formats
Un fichier .pssl contient du code de shader écrit en PlayStation Shader Language, le langage de programmation GPU utilisé pour le développement de jeux sur PlayStation 4 et PlayStation 5.…
Ouvrir les détails de .PSSL →Un fichier .HLSL est associé à High Level Shader Language source code, un fichier de type 3d image.
Ouvrir les détails de .HLSL →Qualité et points de vigilance
- La similitude documentée sur Wikipedia signifie que la plupart des différences sont cosmétiques, mais il n'existe toujours pas d'analyseur PSSL prêt à l'emploi.
- Les fonctions intrinsèques du GPU PS4 et les extensions wave/thread n'ont pas d'équivalent HLSL et doivent être réimplémentées ou remplacées par des souches (stubs).
- Les indices de registre de ressources doivent parfois être remappés pour correspondre aux attentes de la signature racine (root-signature) de D3D.
Foire aux questions
À quel point le PSSL et le HLSL sont-ils similaires ?
Un en-tête de macro suffit-il à lui seul ?
Quel compilateur dois-je utiliser pour les tests ?
dxc pour les cibles Shader Model 6, ou l'ancien fxc pour les shaders SM5 plus anciens.