spv.swizzle.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 112

                              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  "w"
                              Name 15  "u"
                              Name 17  "w_dep"
                              Name 19  "w_reorder"
                              Name 21  "w2"
                              Name 23  "w_flow"
                              Name 30  "t"
                              Name 49  "w_undef"
                              Name 56  "p"
                              Name 70  "gl_FragColor"
                              Name 82  "c"
                              Name 84  "rep"
                              Name 111  "blend"
                              Decorate 30(t) Smooth
                              Decorate 70(gl_FragColor) BuiltIn FragColor
                              Decorate 111(blend) NoStaticUse
               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:             TypePointer UniformConstant 11(fvec4)
           15(u):     14(ptr) Variable UniformConstant
              28:             TypeVector 7(float) 2
              29:             TypePointer Input 28(fvec2)
           30(t):     29(ptr) Variable Input
              54:             TypeBool
              55:             TypePointer UniformConstant 54(bool)
           56(p):     55(ptr) Variable UniformConstant
              69:             TypePointer Output 11(fvec4)
70(gl_FragColor):     69(ptr) Variable Output
              81:             TypePointer Function 28(fvec2)
              85:    7(float) Constant 0
              86:    7(float) Constant 1065353216
              87:   11(fvec4) ConstantComposite 85 85 85 86
              93:    7(float) Constant 3212836864
             104:    7(float) Constant 1079613850
             110:             TypePointer UniformConstant 7(float)
      111(blend):    110(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
   9(blendscale):      8(ptr) Variable Function
           13(w):     12(ptr) Variable Function
       17(w_dep):     12(ptr) Variable Function
   19(w_reorder):     12(ptr) Variable Function
          21(w2):     12(ptr) Variable Function
      23(w_flow):     12(ptr) Variable Function
     49(w_undef):     12(ptr) Variable Function
           82(c):     81(ptr) Variable Function
         84(rep):     12(ptr) Variable Function
                              Store 9(blendscale) 10
              16:   11(fvec4) Load 15(u)
                              Store 13(w) 16
              18:   11(fvec4) Load 15(u)
                              Store 17(w_dep) 18
              20:   11(fvec4) Load 15(u)
                              Store 19(w_reorder) 20
              22:   11(fvec4) Load 15(u)
                              Store 21(w2) 22
              24:   11(fvec4) Load 15(u)
                              Store 23(w_flow) 24
              25:    7(float) Load 9(blendscale)
              26:   11(fvec4) Load 19(w_reorder)
              27:   11(fvec4) CompositeInsert 25 26 2
                              Store 19(w_reorder) 27
              31:   28(fvec2) Load 30(t)
              32:   11(fvec4) Load 13(w)
              33:   11(fvec4) VectorShuffle 32 31 0 5 2 4
                              Store 13(w) 33
              34:    7(float) Load 9(blendscale)
              35:   11(fvec4) Load 19(w_reorder)
              36:   11(fvec4) CompositeInsert 34 35 0
                              Store 19(w_reorder) 36
              37:   11(fvec4) Load 15(u)
              38:   11(fvec4) VectorShuffle 37 37 2 3 0 1
                              Store 21(w2) 38
              39:    7(float) Load 9(blendscale)
              40:   11(fvec4) Load 19(w_reorder)
              41:   11(fvec4) CompositeInsert 39 40 1
                              Store 19(w_reorder) 41
              42:   11(fvec4) Load 21(w2)
              43:   28(fvec2) VectorShuffle 42 42 0 2
              44:   11(fvec4) Load 17(w_dep)
              45:   11(fvec4) VectorShuffle 44 43 4 5 2 3
                              Store 17(w_dep) 45
              46:   28(fvec2) Load 30(t)
              47:   11(fvec4) Load 17(w_dep)
              48:   11(fvec4) VectorShuffle 47 46 0 1 4 5
                              Store 17(w_dep) 48
              50:   11(fvec4) Load 15(u)
              51:   28(fvec2) VectorShuffle 50 50 2 3
              52:   11(fvec4) Load 49(w_undef)
              53:   11(fvec4) VectorShuffle 52 51 4 5 2 3
                              Store 49(w_undef) 53
              57:    54(bool) Load 56(p)
                              SelectionMerge 59 None
                              BranchConditional 57 58 64
              58:               Label
              60:   28(fvec2)   Load 30(t)
              61:    7(float)   CompositeExtract 60 0
              62:   11(fvec4)   Load 23(w_flow)
              63:   11(fvec4)   CompositeInsert 61 62 0
                                Store 23(w_flow) 63
                                Branch 59
              64:               Label
              65:   28(fvec2)   Load 30(t)
              66:    7(float)   CompositeExtract 65 1
              67:   11(fvec4)   Load 23(w_flow)
              68:   11(fvec4)   CompositeInsert 66 67 0
                                Store 23(w_flow) 68
                                Branch 59
              59:             Label
              71:   11(fvec4) Load 19(w_reorder)
              72:   11(fvec4) Load 49(w_undef)
              73:   11(fvec4) Load 13(w)
              74:   11(fvec4) Load 21(w2)
              75:   11(fvec4) FMul 73 74
              76:   11(fvec4) Load 17(w_dep)
              77:   11(fvec4) FMul 75 76
              78:   11(fvec4) Load 23(w_flow)
              79:   11(fvec4) FMul 77 78
              80:   11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 71 72 79
                              Store 70(gl_FragColor) 80
              83:   28(fvec2) Load 30(t)
                              Store 82(c) 83
                              Store 84(rep) 87
              88:   28(fvec2) Load 82(c)
              89:    7(float) CompositeExtract 88 0
              90:    54(bool) FOrdLessThan 89 85
                              SelectionMerge 92 None
                              BranchConditional 90 91 92
              91:               Label
              94:   28(fvec2)   Load 82(c)
              95:    7(float)   CompositeExtract 94 0
              96:    7(float)   FMul 95 93
              97:   28(fvec2)   Load 82(c)
              98:   28(fvec2)   CompositeInsert 96 97 0
                                Store 82(c) 98
                                Branch 92
              92:             Label
              99:   28(fvec2) Load 82(c)
             100:    7(float) CompositeExtract 99 0
             101:    54(bool) FOrdLessThanEqual 100 86
                              SelectionMerge 103 None
                              BranchConditional 101 102 103
             102:               Label
             105:   11(fvec4)   Load 84(rep)
             106:   11(fvec4)   CompositeInsert 104 105 0
                                Store 84(rep) 106
                                Branch 103
             103:             Label
             107:   11(fvec4) Load 84(rep)
             108:   11(fvec4) Load 70(gl_FragColor)
             109:   11(fvec4) FAdd 108 107
                              Store 70(gl_FragColor) 109
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
