spv.swizzle.frag

Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 14 30 69 107
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 8  "blendscale"
                              Name 12  "w"
                              Name 14  "u"
                              Name 16  "w_dep"
                              Name 18  "w_reorder"
                              Name 20  "w2"
                              Name 22  "w_flow"
                              Name 30  "t"
                              Name 49  "w_undef"
                              Name 56  "p"
                              Name 69  "gl_FragColor"
                              Name 81  "c"
                              Name 83  "rep"
                              Name 107  "blend"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               9:    6(float) Constant 1071971828
              10:             TypeVector 6(float) 4
              11:             TypePointer Function 10(fvec4)
              13:             TypePointer Input 10(fvec4)
           14(u):     13(ptr) Variable Input
              25:             TypeInt 32 0
              26:     25(int) Constant 2
              28:             TypeVector 6(float) 2
              29:             TypePointer Input 28(fvec2)
           30(t):     29(ptr) Variable Input
              35:     25(int) Constant 0
              40:     25(int) Constant 1
              54:             TypeBool
              55:             TypePointer Private 54(bool)
           56(p):     55(ptr) Variable Private
              60:             TypePointer Input 6(float)
              68:             TypePointer Output 10(fvec4)
69(gl_FragColor):     68(ptr) Variable Output
              80:             TypePointer Function 28(fvec2)
              84:    6(float) Constant 0
              85:    6(float) Constant 1065353216
              86:   10(fvec4) ConstantComposite 84 84 84 85
              92:    6(float) Constant 3212836864
             102:    6(float) Constant 1079613850
      107(blend):     60(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
   8(blendscale):      7(ptr) Variable Function
           12(w):     11(ptr) Variable Function
       16(w_dep):     11(ptr) Variable Function
   18(w_reorder):     11(ptr) Variable Function
          20(w2):     11(ptr) Variable Function
      22(w_flow):     11(ptr) Variable Function
     49(w_undef):     11(ptr) Variable Function
           81(c):     80(ptr) Variable Function
         83(rep):     11(ptr) Variable Function
                              Store 8(blendscale) 9
              15:   10(fvec4) Load 14(u)
                              Store 12(w) 15
              17:   10(fvec4) Load 14(u)
                              Store 16(w_dep) 17
              19:   10(fvec4) Load 14(u)
                              Store 18(w_reorder) 19
              21:   10(fvec4) Load 14(u)
                              Store 20(w2) 21
              23:   10(fvec4) Load 14(u)
                              Store 22(w_flow) 23
              24:    6(float) Load 8(blendscale)
              27:      7(ptr) AccessChain 18(w_reorder) 26
                              Store 27 24
              31:   28(fvec2) Load 30(t)
              32:   10(fvec4) Load 12(w)
              33:   10(fvec4) VectorShuffle 32 31 0 5 2 4
                              Store 12(w) 33
              34:    6(float) Load 8(blendscale)
              36:      7(ptr) AccessChain 18(w_reorder) 35
                              Store 36 34
              37:   10(fvec4) Load 14(u)
              38:   10(fvec4) VectorShuffle 37 37 2 3 0 1
                              Store 20(w2) 38
              39:    6(float) Load 8(blendscale)
              41:      7(ptr) AccessChain 18(w_reorder) 40
                              Store 41 39
              42:   10(fvec4) Load 20(w2)
              43:   28(fvec2) VectorShuffle 42 42 0 2
              44:   10(fvec4) Load 16(w_dep)
              45:   10(fvec4) VectorShuffle 44 43 4 5 2 3
                              Store 16(w_dep) 45
              46:   28(fvec2) Load 30(t)
              47:   10(fvec4) Load 16(w_dep)
              48:   10(fvec4) VectorShuffle 47 46 0 1 4 5
                              Store 16(w_dep) 48
              50:   10(fvec4) Load 14(u)
              51:   28(fvec2) VectorShuffle 50 50 2 3
              52:   10(fvec4) Load 49(w_undef)
              53:   10(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
              61:     60(ptr)   AccessChain 30(t) 35
              62:    6(float)   Load 61
              63:      7(ptr)   AccessChain 22(w_flow) 35
                                Store 63 62
                                Branch 59
              64:               Label
              65:     60(ptr)   AccessChain 30(t) 40
              66:    6(float)   Load 65
              67:      7(ptr)   AccessChain 22(w_flow) 35
                                Store 67 66
                                Branch 59
              59:             Label
              70:   10(fvec4) Load 18(w_reorder)
              71:   10(fvec4) Load 49(w_undef)
              72:   10(fvec4) Load 12(w)
              73:   10(fvec4) Load 20(w2)
              74:   10(fvec4) FMul 72 73
              75:   10(fvec4) Load 16(w_dep)
              76:   10(fvec4) FMul 74 75
              77:   10(fvec4) Load 22(w_flow)
              78:   10(fvec4) FMul 76 77
              79:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 70 71 78
                              Store 69(gl_FragColor) 79
              82:   28(fvec2) Load 30(t)
                              Store 81(c) 82
                              Store 83(rep) 86
              87:      7(ptr) AccessChain 81(c) 35
              88:    6(float) Load 87
              89:    54(bool) FOrdLessThan 88 84
                              SelectionMerge 91 None
                              BranchConditional 89 90 91
              90:               Label
              93:      7(ptr)   AccessChain 81(c) 35
              94:    6(float)   Load 93
              95:    6(float)   FMul 94 92
              96:      7(ptr)   AccessChain 81(c) 35
                                Store 96 95
                                Branch 91
              91:             Label
              97:      7(ptr) AccessChain 81(c) 35
              98:    6(float) Load 97
              99:    54(bool) FOrdLessThanEqual 98 85
                              SelectionMerge 101 None
                              BranchConditional 99 100 101
             100:               Label
             103:      7(ptr)   AccessChain 83(rep) 35
                                Store 103 102
                                Branch 101
             101:             Label
             104:   10(fvec4) Load 83(rep)
             105:   10(fvec4) Load 69(gl_FragColor)
             106:   10(fvec4) FAdd 105 104
                              Store 69(gl_FragColor) 106
                              Return
                              FunctionEnd
