public bool TestChudVertexShader(ChudShader chudShader) { bool success = true; var entries = Generic.GenericShaderStage.GetChudEntryPoints(chudShader); foreach (var entry in entries) { string filePath = Path.Combine(Path.Combine(ReferencePath, chudShader.ToString()), $"world\\0_{entry}.vertex_shader"); var file = new FileInfo(filePath); if (file.Exists == false) { Console.WriteLine($"No reference shader for {chudShader}"); success = false; continue; } var disassembly = GenerateChudVertexShader(chudShader, entry); bool equal = CompareShaders(disassembly, filePath, "vs_3_0", out bool usesD3DX); success &= equal; DisplayPixelShaderTestResults(equal, chudShader.ToString(), entry, usesD3DX); if (!equal) { string filename = $"generated_{Application.ChudShader}_{entry}.vertex_shader"; Application.WriteShaderFile(filename, disassembly); } } return(success); }
public override string GenerateChudVertexShader(ChudShader chudShader, ShaderStage entry) { var bytecode = GenericVertexShaderGenerator.GenerateVertexShader(chudShader.ToString(), entry.ToString().ToLower(), true).Bytecode; return(D3DCompiler.Disassemble(bytecode)); }