spv.uniformArray.frag
// Module Version 10000
// Generated by (magic number): 8000a
// 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 14(color) Location 1
                              Decorate 25(inColor) Location 0
                              Decorate 35(alpha) Location 7
                              Decorate 47(gl_FragColor) Location 0
                              Decorate 52(texSampler2D) DescriptorSet 0
                              Decorate 52(texSampler2D) Binding 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
