spv.uniformArray.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 53

                              Source GLSL 130
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 10  "texColor"
                              Name 15  "color"
                              Name 26  "inColor"
                              Name 36  "alpha"
                              Name 47  "gl_FragColor"
                              Name 52  "texSampler2D"
                              Decorate 47(gl_FragColor) BuiltIn FragColor
                              Decorate 52(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:             TypeImage 7(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
    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
