static void TestSharedVertexShader(ShaderType shaderType, VertexType vertexType, ShaderStage stage) { IShaderGenerator generator = GetShaderGenerator(shaderType); if (generator.IsEntryPointSupported(stage) && generator.IsVertexShaderShared(stage) && generator.IsVertexFormatSupported(vertexType)) { var bytecode = generator.GenerateSharedVertexShader(vertexType, stage).Bytecode; var disassembly = D3DCompiler.Disassemble(bytecode); WriteShaderFile($"generated_{stage.ToString().ToLower()}_{vertexType.ToString().ToLower()}.glvs", disassembly); } }
static void TestSharedPixelShader(ShaderType shaderType, ShaderStage stage, int methodIndex, int optionIndex) { IShaderGenerator generator = GetShaderGenerator(shaderType); byte[] bytecode; string disassembly; if (generator.IsSharedPixelShaderUsingMethods(stage)) { if (methodIndex == -1 || optionIndex == -1) { for (int i = 0; i < generator.GetMethodCount(); i++) { if (generator.IsMethodSharedInEntryPoint(stage, i) && generator.IsPixelShaderShared(stage)) { for (int j = 0; j < generator.GetMethodOptionCount(i); j++) { var result = generator.GenerateSharedPixelShader(stage, i, j); if (result != null) { bytecode = generator.GenerateSharedPixelShader(stage, i, j).Bytecode; disassembly = D3DCompiler.Disassemble(bytecode); WriteShaderFile($"generated_{stage.ToString().ToLower()}_{i}_{j}.glps", disassembly); } } } } } else { var result = generator.GenerateSharedPixelShader(stage, -1, -1); if (result != null) { bytecode = result.Bytecode; disassembly = D3DCompiler.Disassemble(bytecode); WriteShaderFile($"generated_{stage.ToString().ToLower()}_{methodIndex}_{optionIndex}.glps", disassembly); } } } else { var result = generator.GenerateSharedPixelShader(stage, -1, -1); if (result != null) { bytecode = result.Bytecode; disassembly = D3DCompiler.Disassemble(bytecode); WriteShaderFile($"generated_{stage.ToString().ToLower()}.glps", disassembly); } } }
static void TestPixelShader(ShaderType shaderType, ShaderStage stage, List <int> methods) { IShaderGenerator generator = GetTemplateShaderGenerator(shaderType, methods); if (generator.IsEntryPointSupported(stage) && !generator.IsPixelShaderShared(stage)) { var bytecode = generator.GeneratePixelShader(stage).Bytecode; var parameters = generator.GetPixelShaderParameters(); var disassembly = D3DCompiler.Disassemble(bytecode); string filename = $"generated_{stage.ToString().ToLower()}_{string.Join("_", methods)}.pixl"; WriteShaderFile(filename, disassembly); } }
public GenericUnitTest(string referencePath, IShaderGenerator referenceGenerator, string shaderType) { ReferencePath = referencePath; ReferenceGenerator = referenceGenerator; ShaderType = shaderType; }