spv.300layout.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 37

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 9 11 15 26 29
                              ExecutionMode 4 OriginUpperLeft
                              Source ESSL 310
                              Name 4  "main"
                              Name 9  "c"
                              Name 11  "color"
                              Name 13  "S"
                              MemberName 13(S) 0  "c"
                              MemberName 13(S) 1  "f"
                              Name 15  "s"
                              Name 26  "p"
                              Name 29  "pos"
                              Decorate 9(c) RelaxedPrecision
                              Decorate 9(c) Location 7
                              Decorate 11(color) RelaxedPrecision
                              Decorate 12 RelaxedPrecision
                              MemberDecorate 13(S) 0 RelaxedPrecision
                              MemberDecorate 13(S) 1 RelaxedPrecision
                              Decorate 19 RelaxedPrecision
                              Decorate 20 RelaxedPrecision
                              Decorate 26(p) RelaxedPrecision
                              Decorate 26(p) Location 3
                              Decorate 29(pos) RelaxedPrecision
                              Decorate 30 RelaxedPrecision
                              Decorate 33 RelaxedPrecision
                              Decorate 34 RelaxedPrecision
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypePointer Output 7(fvec3)
            9(c):      8(ptr) Variable Output
              10:             TypePointer Input 7(fvec3)
       11(color):     10(ptr) Variable Input
           13(S):             TypeStruct 7(fvec3) 6(float)
              14:             TypePointer Input 13(S)
           15(s):     14(ptr) Variable Input
              16:             TypeInt 32 1
              17:     16(int) Constant 0
              21:             TypeVector 6(float) 4
              22:             TypeInt 32 0
              23:     22(int) Constant 2
              24:             TypeArray 21(fvec4) 23
              25:             TypePointer Output 24
           26(p):     25(ptr) Variable Output
              27:     16(int) Constant 1
              28:             TypePointer Input 21(fvec4)
         29(pos):     28(ptr) Variable Input
              31:             TypePointer Input 6(float)
              35:             TypePointer Output 21(fvec4)
         4(main):           2 Function None 3
               5:             Label
              12:    7(fvec3) Load 11(color)
              18:     10(ptr) AccessChain 15(s) 17
              19:    7(fvec3) Load 18
              20:    7(fvec3) FAdd 12 19
                              Store 9(c) 20
              30:   21(fvec4) Load 29(pos)
              32:     31(ptr) AccessChain 15(s) 27
              33:    6(float) Load 32
              34:   21(fvec4) VectorTimesScalar 30 33
              36:     35(ptr) AccessChain 26(p) 27
                              Store 36 34
                              Return
                              FunctionEnd
