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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 14 25 43 54
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "texColor"
                              Name 14  "color"
                              Name 25  "inColor"
                              Name 43  "alpha"
                              Name 54  "gl_FragColor"
                              Name 59  "texSampler2D"
                              Decorate 14(color) Location 1
                              Decorate 25(inColor) Location 0
                              Decorate 43(alpha) Location 7
                              Decorate 54(gl_FragColor) Location 0
                              Decorate 59(texSampler2D) DescriptorSet 0
                              Decorate 59(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
              30:     10(int) Constant 0
              31:             TypePointer Function 6(float)
              34:     10(int) Constant 1
              37:     10(int) Constant 2
              40:     10(int) Constant 16
              41:             TypeArray 6(float) 40
              42:             TypePointer Input 41
       43(alpha):     42(ptr) Variable Input
              44:     15(int) Constant 12
              45:             TypePointer Input 6(float)
              48:     10(int) Constant 3
              53:             TypePointer Output 7(fvec4)
54(gl_FragColor):     53(ptr) Variable Output
              56:             TypeImage 6(float) 2D sampled format:Unknown
              57:             TypeSampledImage 56
              58:             TypePointer UniformConstant 57
59(texSampler2D):     58(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
              32:     31(ptr) AccessChain 9(texColor) 30
              33:    6(float) CompositeExtract 29 0
                              Store 32 33
              35:     31(ptr) AccessChain 9(texColor) 34
              36:    6(float) CompositeExtract 29 1
                              Store 35 36
              38:     31(ptr) AccessChain 9(texColor) 37
              39:    6(float) CompositeExtract 29 2
                              Store 38 39
              46:     45(ptr) AccessChain 43(alpha) 44
              47:    6(float) Load 46
              49:     31(ptr) AccessChain 9(texColor) 48
              50:    6(float) Load 49
              51:    6(float) FAdd 50 47
              52:     31(ptr) AccessChain 9(texColor) 48
                              Store 52 51
              55:    7(fvec4) Load 9(texColor)
                              Store 54(gl_FragColor) 55
                              Return
                              FunctionEnd
