spv.uniformArray.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 52

                              Source GLSL 130
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4
                              Name 4  "main"
                              Name 10  "texColor"
                              Name 15  "color"
                              Name 26  "inColor"
                              Name 36  "alpha"
                              Name 47  "gl_FragColor"
                              Name 51  "texSampler2D"
                              Decorate 47(gl_FragColor) BuiltIn FragColor
                              Decorate 51(texSampler2D) NoStaticUse 
               2:             TypeVoid
               3:             TypeFunction 2 
               7:             TypeFloat 32
               8:             TypeVector 7(float) 4
               9:             TypePointer Function 8(fvec4)
              11:             TypeInt 32 0
              12:     11(int) Constant 6
              13:             TypeArray 8(fvec4) 12
              14:             TypePointer UniformConstant 13
       15(color):     14(ptr) Variable UniformConstant 
              16:             TypeInt 32 1
              17:     16(int) Constant 1
              18:             TypePointer UniformConstant 8(fvec4)
              24:             TypeVector 7(float) 3
              25:             TypePointer UniformConstant 24(fvec3)
     26(inColor):     25(ptr) Variable UniformConstant 
              33:     11(int) Constant 16
              34:             TypeArray 7(float) 33
              35:             TypePointer UniformConstant 34
       36(alpha):     35(ptr) Variable UniformConstant 
              37:     16(int) Constant 12
              38:             TypePointer UniformConstant 7(float)
              46:             TypePointer Output 8(fvec4)
47(gl_FragColor):     46(ptr) Variable Output 
              49:             TypeSampler7(float) 2D filter+texture
              50:             TypePointer UniformConstant 49
51(texSampler2D):     50(ptr) Variable UniformConstant 
         4(main):           2 Function None 3
               5:             Label
    10(texColor):      9(ptr) Variable Function 
              19:     18(ptr) AccessChain 15(color) 17
              20:    8(fvec4) Load 19 
              21:     18(ptr) AccessChain 15(color) 17
              22:    8(fvec4) Load 21 
              23:    8(fvec4) FAdd 20 22
                              Store 10(texColor) 23 
              27:   24(fvec3) Load 26(inColor) 
              28:    8(fvec4) Load 10(texColor) 
              29:   24(fvec3) VectorShuffle 28 28 0 1 2
              30:   24(fvec3) FAdd 29 27
              31:    8(fvec4) Load 10(texColor) 
              32:    8(fvec4) VectorShuffle 31 30 4 5 6 3
                              Store 10(texColor) 32 
              39:     38(ptr) AccessChain 36(alpha) 37
              40:    7(float) Load 39 
              41:    8(fvec4) Load 10(texColor) 
              42:    7(float) CompositeExtract 41 3
              43:    7(float) FAdd 42 40
              44:    8(fvec4) Load 10(texColor) 
              45:    8(fvec4) CompositeInsert 43 44 3
                              Store 10(texColor) 45 
              48:    8(fvec4) Load 10(texColor) 
                              Store 47(gl_FragColor) 48 
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
