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(); }
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); }