spv.varyingArray.frag

Linked fragment stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 61

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