spv.uniformArray.frag
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 53

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 14 25 35 47
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "texColor"
                              Name 14  "color"
                              Name 25  "inColor"
                              Name 35  "alpha"
                              Name 47  "gl_FragColor"
                              Name 52  "texSampler2D"
                              Decorate 47(gl_FragColor) Location 0
                              Decorate 52(texSampler2D) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
              10:             TypeInt 32 0
              11:     10(int) Constant 6
              12:             TypeArray 7(fvec4) 11
              13:             TypePointer Input 12
       14(color):     13(ptr) Variable Input
              15:             TypeInt 32 1
              16:     15(int) Constant 1
              17:             TypePointer Input 7(fvec4)
              23:             TypeVector 6(float) 3
              24:             TypePointer Input 23(fvec3)
     25(inColor):     24(ptr) Variable Input
              32:     10(int) Constant 16
              33:             TypeArray 6(float) 32
              34:             TypePointer Input 33
       35(alpha):     34(ptr) Variable Input
              36:     15(int) Constant 12
              37:             TypePointer Input 6(float)
              40:     10(int) Constant 3
              41:             TypePointer Function 6(float)
              46:             TypePointer Output 7(fvec4)
47(gl_FragColor):     46(ptr) Variable Output
              49:             TypeImage 6(float) 2D sampled format:Unknown
              50:             TypeSampledImage 49
              51:             TypePointer UniformConstant 50
52(texSampler2D):     51(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
     9(texColor):      8(ptr) Variable Function
              18:     17(ptr) AccessChain 14(color) 16
              19:    7(fvec4) Load 18
              20:     17(ptr) AccessChain 14(color) 16
              21:    7(fvec4) Load 20
              22:    7(fvec4) FAdd 19 21
                              Store 9(texColor) 22
              26:   23(fvec3) Load 25(inColor)
              27:    7(fvec4) Load 9(texColor)
              28:   23(fvec3) VectorShuffle 27 27 0 1 2
              29:   23(fvec3) FAdd 28 26
              30:    7(fvec4) Load 9(texColor)
              31:    7(fvec4) VectorShuffle 30 29 4 5 6 3
                              Store 9(texColor) 31
              38:     37(ptr) AccessChain 35(alpha) 36
              39:    6(float) Load 38
              42:     41(ptr) AccessChain 9(texColor) 40
              43:    6(float) Load 42
              44:    6(float) FAdd 43 39
              45:     41(ptr) AccessChain 9(texColor) 40
                              Store 45 44
              48:    7(fvec4) Load 9(texColor)
                              Store 47(gl_FragColor) 48
                              Return
                              FunctionEnd
