private static void WritePixelInputStructs(EffectCodeGenerator generator, TechniqueSymbol technique, TechniquePassSymbol pass, string uniquePassName) { generator.Writer.WriteLine("// -------- pixel input structures --------"); SemanticGenerator semanticGenerator = new SemanticGenerator("TEXCOORD"); pass.ForEachFragment(generator, (g, f, s) => WritePixelInputStructure(g, f, s, semanticGenerator)); generator.Writer.WriteLine("struct {0}_PIXELINPUT", uniquePassName); generator.Writer.WriteLine("{"); pass.ForEachFragment(generator, (g, f, s) => g.Writer.WriteLine("\t{0}_{1}_PIXELINPUT {1};", s, f.UniqueName)); generator.Writer.WriteLine("};"); generator.Writer.WriteLine(); generator.Writer.WriteLine("static {0}_PIXELINPUT gPixelInput_{0};", uniquePassName); generator.Writer.WriteLine(); }
private static void WritePixelOutputStructs(EffectCodeGenerator generator, TechniqueSymbol technique, TechniquePassSymbol pass, string uniquePassName) { ScriptTextWriter writer = generator.Writer; writer.WriteLine("// -------- pixel output structures --------"); SemanticGenerator semanticGenerator = new SemanticGenerator("COLOR", 1); pass.ForEachFragment(generator, (g, f, n) => WritePixelOutputStructure(g, f, n, semanticGenerator)); writer.WriteLine("struct {0}_PIXELOUTPUT", uniquePassName); writer.WriteLine("{"); writer.WriteLine("\tfloat4 color : COLOR0;"); pass.ForEachFragment(generator, (g, f, s) => { if (f.FragmentNode.PixelOutputs != null && f.FragmentNode.PixelOutputs.VariableDeclarations.Any()) writer.WriteLine("\t{0}_{1}_PIXELOUTPUT {1};", s, f.UniqueName); }); writer.WriteLine("};"); writer.WriteLine(); }
private static void WriteVertexInputStructures(EffectCodeGenerator generator, TechniqueSymbol technique, TechniquePassSymbol pass, string uniquePassName) { ScriptTextWriter writer = generator.Writer; writer.WriteLine("// -------- vertex input structures --------"); SemanticGenerator semanticGenerator = new SemanticGenerator("TEXCOORD"); pass.ForEachFragment(generator, (g, f, s) => WriteVertexInputStructure(g, f, s, semanticGenerator)); writer.WriteLine("struct {0}_VERTEXINPUT", uniquePassName); writer.WriteLine("{"); pass.ForEachFragment(generator, (g, f, s) => g.Writer.WriteLine("\t{0}_{1}_VERTEXINPUT {1};", uniquePassName, f.UniqueName)); writer.WriteLine("};"); writer.WriteLine(); writer.WriteLine("static {0}_VERTEXINPUT gVertexInput_{0};", uniquePassName); writer.WriteLine(); }
private static void WritePixelOutputStructs(EffectCodeGenerator generator, TechniqueSymbol technique, TechniquePassSymbol pass, string uniquePassName) { ScriptTextWriter writer = generator.Writer; writer.WriteLine("// -------- pixel output structures --------"); SemanticGenerator semanticGenerator = new SemanticGenerator("COLOR", 1); pass.ForEachFragment(generator, (g, f, n) => WritePixelOutputStructure(g, f, n, semanticGenerator)); writer.WriteLine("struct {0}_PIXELOUTPUT", uniquePassName); writer.WriteLine("{"); writer.WriteLine("\tfloat4 color : COLOR0;"); pass.ForEachFragment(generator, (g, f, s) => { if (f.FragmentNode.PixelOutputs != null && f.FragmentNode.PixelOutputs.VariableDeclarations.Any()) { writer.WriteLine("\t{0}_{1}_PIXELOUTPUT {1};", s, f.UniqueName); } }); writer.WriteLine("};"); writer.WriteLine(); }
private static void WritePixelInputStructure(EffectCodeGenerator generator, StitchedFragmentSymbol stitchedFragment, string uniqueName, SemanticGenerator semanticGenerator) { WriteShaderInputStructure(generator, stitchedFragment, uniqueName, semanticGenerator, "PIXELINPUT", stitchedFragment.FragmentNode.Interpolators, true); }
private static void WriteShaderStructure(EffectCodeGenerator generator, StitchedFragmentSymbol stitchedFragment, string uniquePassName, SemanticGenerator semanticGenerator, string structSuffix, ParameterBlockNode parameterBlock) { generator.Writer.WriteLine("struct {0}_{1}_{2}", uniquePassName, stitchedFragment.UniqueName, structSuffix); generator.Writer.WriteLine("{"); if (parameterBlock != null) { parameterBlock.VariableDeclarations.ForEach(v => { string semantic = semanticGenerator.GetNextSemantic(v); generator.Writer.WriteLine("\t{0} {1} : {2};", Token.GetString(v.DataType), v.Name, semantic); }); } generator.Writer.WriteLine("};"); generator.Writer.WriteLine(); }
private static void WriteShaderInputStructure(EffectCodeGenerator generator, StitchedFragmentSymbol stitchedFragment, string uniqueName, SemanticGenerator semanticGenerator, string structSuffix, ParameterBlockNode parameterBlock, bool alwaysUseTexCoords) { WriteShaderStructure(generator, stitchedFragment, uniqueName, semanticGenerator, structSuffix, parameterBlock); }
private static void WriteVertexInputStructure(EffectCodeGenerator generator, StitchedFragmentSymbol stitchedFragment, string uniqueName, SemanticGenerator semanticGenerator) { WriteShaderInputStructure(generator, stitchedFragment, uniqueName, semanticGenerator, "VERTEXINPUT", stitchedFragment.FragmentNode.VertexAttributes, false); }
private static void WriteShaderStructure(EffectCodeGenerator generator, StitchedFragmentSymbol stitchedFragment, string uniquePassName, SemanticGenerator semanticGenerator, string structSuffix, ParameterBlockNode parameterBlock) { generator.Writer.WriteLine("struct {0}_{1}_{2}", uniquePassName, stitchedFragment.UniqueName, structSuffix); generator.Writer.WriteLine("{"); if (parameterBlock != null) parameterBlock.VariableDeclarations.ForEach(v => { string semantic = semanticGenerator.GetNextSemantic(v); generator.Writer.WriteLine("\t{0} {1} : {2};", Token.GetString(v.DataType), v.Name, semantic); }); generator.Writer.WriteLine("};"); generator.Writer.WriteLine(); }