なぜ PSSL を HLSL に変換するのですか?
PS4とPCで同じレンダラーを出荷するスタジオは、1つのシェーダー本体を維持し、Direct3D用に .HLSL に変換します。PSSLとHLSLは、個別の Texture2D および SamplerState オブジェクト、セマンティクス、レジスタバインディングという同じDX11スタイルのモデルを共有しているため、 #define シムでほとんどの差異をカバーできます。コンソール固有のイントリンシック(組み込み関数)のみ、本格的な書き換えが必要です。
PSSL から HLSL への変換方法
マクロシムを使用した Visual Studio Code FREE
VS Codeで .pssl を開き、PSSLキーワードをHLSL形式にマッピングする #define の共有ヘッダーをインクルードし、残りの宣言を手動で修正します。
任意のテキストエディタでの手動編集 FREE
PSSLのサンプラー/テクスチャおよびセマンティクスキーワードをHLSLの同等物に名前変更し、 register(t#/s#/b#) バインディングを調整して、ファイルが fxc または dxc でコンパイルできるようにします。
dxcによる検証 OPEN-SOURCE
移植したファイルをMicrosoftの dxc shader.hlsl -T ps_6_0 でコンパイルし、HLSLが有効であることを確認し、残っているPSSL専用の構文を特定します。
これらの形式について
.pssl ファイルには、Sony の PlayStation Shader Language で記述されたシェーダーコードが格納されています。これは PlayStation 4 および PlayStation 5 のゲーム開発で使用される GPU プログラミング言語です。テキストベースの .pssl ファイルはプレーンなソースコードであり、Visual Studio…
.PSSL の詳細を開く →.HLSL ファイルは、3d image ファイルである High Level Shader Language source code に関連付けられています。
.HLSL の詳細を開く →品質と注意点
- Wikipediaで文書化されているような類似性は、ほとんどの違いが表面的なものであることを意味しますが、そのまま使えるPSSLパーサーはまだ存在しません。
- PS4 GPUのイントリンシックやウェーブ/スレッド拡張にはHLSLに対応するものがなく、再実装またはスタブ化する必要があります。
- D3Dルートシグネチャの期待値に合わせるために、リソースレジスタのインデックスの再マッピングが必要になる場合があります。
よくある質問
PSSLとHLSLはどの程度似ていますか?
マクロヘッダーだけで作業を完了できますか?
どのコンパイラでテストすべきですか?
dxc を、古いSM5シェーダーにはレガシーな fxc を使用してください。