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); }
static public List <ShaderStage> GetChudEntryPoints(ChudShader explicitShader) { switch (explicitShader) { case ChudShader.chud_turbulence: return(new List <ShaderStage> { ShaderStage.Default, ShaderStage.Albedo, ShaderStage.Dynamic_Light }); default: return(new List <ShaderStage> { ShaderStage.Default }); } }
public override string GenerateChudVertexShader(ChudShader chudShader, ShaderStage entry) { throw new System.NotImplementedException(); }
public abstract string GenerateChudVertexShader(ChudShader chudShader, ShaderStage entry);
public abstract string GenerateChudPixelShader(ChudShader chudShader, ShaderStage entry);
public override string GenerateChudVertexShader(ChudShader chudShader, ShaderStage entry) { var bytecode = GenericVertexShaderGenerator.GenerateVertexShader(chudShader.ToString(), entry.ToString().ToLower(), true).Bytecode; return(D3DCompiler.Disassemble(bytecode)); }