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);
        }
예제 #2
0
        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
                });
            }
        }
예제 #3
0
 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);
예제 #6
0
        public override string GenerateChudVertexShader(ChudShader chudShader, ShaderStage entry)
        {
            var bytecode = GenericVertexShaderGenerator.GenerateVertexShader(chudShader.ToString(), entry.ToString().ToLower(), true).Bytecode;

            return(D3DCompiler.Disassemble(bytecode));
        }