示例#1
0
 static void WriteLayout(StringBuilder builder, CGeometryShader shader, object unused)
 {
     builder.AppendLine(string.Format("layout ( {0} ) in;",
         GeometryShaderInputPrimitiveTypeToString(shader.InputPrimitiveType)));
     builder.AppendLine(string.Format("layout ( {0}, max_vertices = {1} ) out;",
         GeometryShaderOutputPrimitiveTypeToString(shader.OutputPrimitiveType), shader.MaxVertexCount.ToString(CultureInfo.InvariantCulture)));
     builder.AppendLine();
 }
示例#2
0
        static void WriteIOAndCode(StringBuilder builder, CGeometryShader shader, object unused)
        {
            var reflection = shader.Reflection;
            WriteCodeLines(builder, reflection.CodeGlobalLines);
            builder.AppendLine();

            WriteInputArrayBlock(builder, reflection.Input, OutputPrefixForStage(ShaderStage.Geometry));
            WriteInputExtraBlock(builder, reflection.InputExtra, "INPUT_EXTRA", "InputExtra", "bs_input_extra_");

            if (reflection.OutputStreams.Any())
                WriteOutputStreamsBlock(builder, reflection.OutputStreams);
            else
                WriteOutputBlock(builder, reflection.Output);

            WriteFunction(builder, "main", null, reflection.CodeMainLines, null);
        }