0

dndxcを使用して hlsl シェーダーを SPIR-Vにコンパイルするこの方法があります。

public static string LoadShader(string filename, Shader.Stage stage, string entrypoint) {
  List<string> args = new List<string>();
  args.Add("-spirv");
  args.Add("-fspv-target-env=vulkan1.1");
  

  IDxcOperationResult result = compiler.Compile(
    library.CreateBlobFromFile(filename, IntPtr.Zero),
    filename,
    entrypoint, stage == Shader.Stage.Vertex ? "vs_6_2" : stage == Shader.Stage.Fragment ? "ps_6_2" : "cs_6_2",
    args.ToArray(), args.Count,
    null, 0,
    library.CreateIncludeHandler()
  );

  if(result.GetStatus() != 0) {
    throw new Exception(GetStringFromBlob(result.GetErrors()));
  }

  return GetStringFromBlob(result.GetResult());
}

これは有効なspirvソースを生成するようですが、プログラムの後半で(またはコマンドラインのバイナリを介して)SPIR-Vクロスに渡すと、このエラーが発生します。Compilation failed: SPIR-V instruction goes out of bounds.
私は本当にこのエラーに困惑しています。どんな助けでも大歓迎です。

4

0 に答える 0