spv.test.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 56

                              Source GLSL 110
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 9  "blendscale"
                              Name 13  "v"
                              Name 17  "texSampler2D"
                              Name 21  "t"
                              Name 24  "scale"
                              Name 31  "w"
                              Name 35  "texSampler3D"
                              Name 39  "coords"
                              Name 45  "gl_FragColor"
                              Name 48  "u"
                              Name 51  "blend"
                              Decorate 21(t) Smooth
                              Decorate 39(coords) Smooth
                              Decorate 45(gl_FragColor) BuiltIn FragColor
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypePointer Function 7(float)
              10:    7(float) Constant 1071971828
              11:             TypeVector 7(float) 4
              12:             TypePointer Function 11(fvec4)
              14:             TypeImage 7(float) 2D sampled format:Unknown
              15:             TypeSampledImage 14
              16:             TypePointer UniformConstant 15
17(texSampler2D):     16(ptr) Variable UniformConstant
              19:             TypeVector 7(float) 2
              20:             TypePointer Input 19(fvec2)
           21(t):     20(ptr) Variable Input
              23:             TypePointer UniformConstant 19(fvec2)
       24(scale):     23(ptr) Variable UniformConstant
              32:             TypeImage 7(float) 3D sampled format:Unknown
              33:             TypeSampledImage 32
              34:             TypePointer UniformConstant 33
35(texSampler3D):     34(ptr) Variable UniformConstant
              37:             TypeVector 7(float) 3
              38:             TypePointer Input 37(fvec3)
      39(coords):     38(ptr) Variable Input
              44:             TypePointer Output 11(fvec4)
45(gl_FragColor):     44(ptr) Variable Output
              47:             TypePointer UniformConstant 11(fvec4)
           48(u):     47(ptr) Variable UniformConstant
              50:             TypePointer UniformConstant 7(float)
       51(blend):     50(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
   9(blendscale):      8(ptr) Variable Function
           13(v):     12(ptr) Variable Function
           31(w):     12(ptr) Variable Function
                              Store 9(blendscale) 10
              18:          15 Load 17(texSampler2D)
              22:   19(fvec2) Load 21(t)
              25:   19(fvec2) Load 24(scale)
              26:   19(fvec2) FAdd 22 25
              27:   19(fvec2) Load 24(scale)
              28:   19(fvec2) FDiv 26 27
              29:   11(fvec4) ImageSampleImplicitLod 18 28
              30:   11(fvec4) VectorShuffle 29 29 3 2 1 0
                              Store 13(v) 30
              36:          33 Load 35(texSampler3D)
              40:   37(fvec3) Load 39(coords)
              41:   11(fvec4) ImageSampleImplicitLod 36 40
              42:   11(fvec4) Load 13(v)
              43:   11(fvec4) FAdd 41 42
                              Store 31(w) 43
              46:   11(fvec4) Load 31(w)
              49:   11(fvec4) Load 48(u)
              52:    7(float) Load 51(blend)
              53:    7(float) Load 9(blendscale)
              54:    7(float) FMul 52 53
              55:   11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 46 49 54
                              Store 45(gl_FragColor) 55
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
