spv.GeometryShaderPassthrough.geom
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 15

                              Capability Geometry
                              Capability GeometryShaderPassthroughNV
                              Extension  "SPV_NV_geometry_shader_passthrough"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 10 14
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source GLSL 450
                              SourceExtension  "GL_NV_geometry_shader_passthrough"
                              Name 4  "main"
                              Name 8  "gl_PerVertex"
                              MemberName 8(gl_PerVertex) 0  "gl_Position"
                              Name 10  ""
                              Name 12  "Inputs"
                              MemberName 12(Inputs) 0  "texcoord"
                              MemberName 12(Inputs) 1  "baseColor"
                              Name 14  ""
                              MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position
                              Decorate 8(gl_PerVertex) Block
                              Decorate 10 PassthroughNV
                              Decorate 12(Inputs) Block
                              Decorate 14 Location 0
                              Decorate 14 PassthroughNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
 8(gl_PerVertex):             TypeStruct 7(fvec4)
               9:             TypePointer Input 8(gl_PerVertex)
              10:      9(ptr) Variable Input
              11:             TypeVector 6(float) 2
      12(Inputs):             TypeStruct 11(fvec2) 7(fvec4)
              13:             TypePointer Input 12(Inputs)
              14:     13(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
                              Return
                              FunctionEnd
