Fix #1843: Handle built-in function output parameters to a swizzled arg
In GLSL/HLSL/AST, v.zyx is an l-value, but not in SPIR-V, which cannot represent it. So, a temporary is used instead.
This commit is contained in:
		
							parent
							
								
									56364b6b60
								
							
						
					
					
						commit
						bbbd9a2a1f
					
				@ -2277,7 +2277,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
 | 
			
		||||
        spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
 | 
			
		||||
 | 
			
		||||
    spv::Id result = spv::NoResult;
 | 
			
		||||
    spv::Id invertedType = spv::NoType;  // to use to override the natural type of the node
 | 
			
		||||
    spv::Id invertedType = spv::NoType;       // to use to override the natural type of the node
 | 
			
		||||
    spv::Builder::AccessChain complexLvalue;  // for holding swizzling l-values too complex for SPIR-V, for at out parameter
 | 
			
		||||
    spv::Id temporaryLvalue = spv::NoResult;  // temporary to pass, as proxy for complexLValue
 | 
			
		||||
 | 
			
		||||
    auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); };
 | 
			
		||||
 | 
			
		||||
    // try texturing
 | 
			
		||||
@ -2727,6 +2730,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
 | 
			
		||||
 | 
			
		||||
                // Does it need a swizzle inversion?  If so, evaluation is inverted;
 | 
			
		||||
                // operate first on the swizzle base, then apply the swizzle.
 | 
			
		||||
                // That is, we transform
 | 
			
		||||
                //
 | 
			
		||||
                //    interpolate(v.zy)  ->  interpolate(v).zy
 | 
			
		||||
                //
 | 
			
		||||
                if (glslangOperands[0]->getAsOperator() &&
 | 
			
		||||
                    glslangOperands[0]->getAsOperator()->getOp() == glslang::EOpVectorSwizzle)
 | 
			
		||||
                    invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType());
 | 
			
		||||
@ -2819,8 +2826,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        // for l-values, pass the address, for r-values, pass the value
 | 
			
		||||
        if (lvalue) {
 | 
			
		||||
            operands.push_back(builder.accessChainGetLValue());
 | 
			
		||||
            if (invertedType == spv::NoType && !builder.isSpvLvalue()) {
 | 
			
		||||
                // SPIR-V cannot represent an l-value containing a swizzle that doesn't
 | 
			
		||||
                // reduce to a simple access chain.  So, we need a temporary vector to
 | 
			
		||||
                // receive the result, and must later swizzle that into the original
 | 
			
		||||
                // l-value.
 | 
			
		||||
                complexLvalue = builder.getAccessChain();
 | 
			
		||||
                temporaryLvalue = builder.createVariable(spv::StorageClassFunction, builder.accessChainGetInferredType(), "swizzleTemp");
 | 
			
		||||
                operands.push_back(temporaryLvalue);
 | 
			
		||||
            } else {
 | 
			
		||||
                operands.push_back(builder.accessChainGetLValue());
 | 
			
		||||
            }
 | 
			
		||||
            lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
 | 
			
		||||
            lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType());
 | 
			
		||||
        } else {
 | 
			
		||||
@ -2883,8 +2901,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
 | 
			
		||||
            result = createMiscOperation(node->getOp(), precision, resultType(), operands, node->getBasicType());
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        if (invertedType)
 | 
			
		||||
        if (invertedType != spv::NoResult)
 | 
			
		||||
            result = createInvertedSwizzle(precision, *glslangOperands[0]->getAsBinaryNode(), result);
 | 
			
		||||
        else if (temporaryLvalue != spv::NoResult) {
 | 
			
		||||
            builder.setAccessChain(complexLvalue);
 | 
			
		||||
            builder.accessChainStore(builder.createLoad(temporaryLvalue));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (noReturnValue)
 | 
			
		||||
 | 
			
		||||
@ -676,6 +676,11 @@ public:
 | 
			
		||||
    // use accessChain and swizzle to load an r-value
 | 
			
		||||
    Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
 | 
			
		||||
 | 
			
		||||
    // Return whether or not the access chain can be represented in SPIR-V
 | 
			
		||||
    // as an l-value.
 | 
			
		||||
    // E.g., a[3].yx cannot be, while a[3].y and a[3].y[x] can be.
 | 
			
		||||
    bool isSpvLvalue() const { return accessChain.swizzle.size() <= 1; }
 | 
			
		||||
 | 
			
		||||
    // get the direct pointer for an l-value
 | 
			
		||||
    Id accessChainGetLValue();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
spv.Operations.frag
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80008
 | 
			
		||||
// Id's are bound by 532
 | 
			
		||||
// Id's are bound by 540
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "main" 11 22 212 288 485 526 531
 | 
			
		||||
                              EntryPoint Fragment 4  "main" 11 22 220 296 493 534 539
 | 
			
		||||
                              ExecutionMode 4 OriginUpperLeft
 | 
			
		||||
                              Source GLSL 450
 | 
			
		||||
                              Name 4  "main"
 | 
			
		||||
@ -14,23 +14,24 @@ spv.Operations.frag
 | 
			
		||||
                              Name 11  "uv4"
 | 
			
		||||
                              Name 20  "i"
 | 
			
		||||
                              Name 22  "ui"
 | 
			
		||||
                              Name 181  "ub41"
 | 
			
		||||
                              Name 188  "f"
 | 
			
		||||
                              Name 212  "uf"
 | 
			
		||||
                              Name 285  "u"
 | 
			
		||||
                              Name 288  "uui"
 | 
			
		||||
                              Name 305  "b"
 | 
			
		||||
                              Name 342  "ub42"
 | 
			
		||||
                              Name 485  "FragColor"
 | 
			
		||||
                              Name 503  "m1"
 | 
			
		||||
                              Name 510  "m2"
 | 
			
		||||
                              Name 526  "uiv4"
 | 
			
		||||
                              Name 528  "ub"
 | 
			
		||||
                              Name 531  "uuv4"
 | 
			
		||||
                              Name 155  "swizzleTemp"
 | 
			
		||||
                              Name 189  "ub41"
 | 
			
		||||
                              Name 196  "f"
 | 
			
		||||
                              Name 220  "uf"
 | 
			
		||||
                              Name 293  "u"
 | 
			
		||||
                              Name 296  "uui"
 | 
			
		||||
                              Name 313  "b"
 | 
			
		||||
                              Name 350  "ub42"
 | 
			
		||||
                              Name 493  "FragColor"
 | 
			
		||||
                              Name 511  "m1"
 | 
			
		||||
                              Name 518  "m2"
 | 
			
		||||
                              Name 534  "uiv4"
 | 
			
		||||
                              Name 536  "ub"
 | 
			
		||||
                              Name 539  "uuv4"
 | 
			
		||||
                              Decorate 22(ui) Flat
 | 
			
		||||
                              Decorate 288(uui) Flat
 | 
			
		||||
                              Decorate 526(uiv4) Flat
 | 
			
		||||
                              Decorate 531(uuv4) Flat
 | 
			
		||||
                              Decorate 296(uui) Flat
 | 
			
		||||
                              Decorate 534(uiv4) Flat
 | 
			
		||||
                              Decorate 539(uuv4) Flat
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeFloat 32
 | 
			
		||||
@ -45,55 +46,56 @@ spv.Operations.frag
 | 
			
		||||
             141:             TypeInt 32 0
 | 
			
		||||
             142:    141(int) Constant 0
 | 
			
		||||
             143:             TypePointer Function 6(float)
 | 
			
		||||
             178:             TypeBool
 | 
			
		||||
             179:             TypeVector 178(bool) 4
 | 
			
		||||
             180:             TypePointer Private 179(bvec4)
 | 
			
		||||
       181(ub41):    180(ptr) Variable Private
 | 
			
		||||
             211:             TypePointer Input 6(float)
 | 
			
		||||
         212(uf):    211(ptr) Variable Input
 | 
			
		||||
             284:             TypePointer Function 141(int)
 | 
			
		||||
             287:             TypePointer Input 141(int)
 | 
			
		||||
        288(uui):    287(ptr) Variable Input
 | 
			
		||||
             304:             TypePointer Function 178(bool)
 | 
			
		||||
       342(ub42):    180(ptr) Variable Private
 | 
			
		||||
             398:     18(int) Constant 2
 | 
			
		||||
             405:     18(int) Constant 1
 | 
			
		||||
             435:             TypeVector 6(float) 3
 | 
			
		||||
             454:    6(float) Constant 1073741824
 | 
			
		||||
             461:    6(float) Constant 1065353216
 | 
			
		||||
             466:     18(int) Constant 66
 | 
			
		||||
             472:     18(int) Constant 17
 | 
			
		||||
             484:             TypePointer Output 7(fvec4)
 | 
			
		||||
  485(FragColor):    484(ptr) Variable Output
 | 
			
		||||
             501:             TypeMatrix 7(fvec4) 4
 | 
			
		||||
             502:             TypePointer Function 501
 | 
			
		||||
             504:    6(float) Constant 0
 | 
			
		||||
             505:    7(fvec4) ConstantComposite 461 504 504 504
 | 
			
		||||
             506:    7(fvec4) ConstantComposite 504 461 504 504
 | 
			
		||||
             507:    7(fvec4) ConstantComposite 504 504 461 504
 | 
			
		||||
             508:    7(fvec4) ConstantComposite 504 504 504 461
 | 
			
		||||
             509:         501 ConstantComposite 505 506 507 508
 | 
			
		||||
             511:    7(fvec4) ConstantComposite 504 504 504 504
 | 
			
		||||
             512:         501 ConstantComposite 511 511 511 511
 | 
			
		||||
             524:             TypeVector 18(int) 4
 | 
			
		||||
             525:             TypePointer Input 524(ivec4)
 | 
			
		||||
       526(uiv4):    525(ptr) Variable Input
 | 
			
		||||
             527:             TypePointer Private 178(bool)
 | 
			
		||||
         528(ub):    527(ptr) Variable Private
 | 
			
		||||
             529:             TypeVector 141(int) 4
 | 
			
		||||
             530:             TypePointer Input 529(ivec4)
 | 
			
		||||
       531(uuv4):    530(ptr) Variable Input
 | 
			
		||||
             186:             TypeBool
 | 
			
		||||
             187:             TypeVector 186(bool) 4
 | 
			
		||||
             188:             TypePointer Private 187(bvec4)
 | 
			
		||||
       189(ub41):    188(ptr) Variable Private
 | 
			
		||||
             219:             TypePointer Input 6(float)
 | 
			
		||||
         220(uf):    219(ptr) Variable Input
 | 
			
		||||
             292:             TypePointer Function 141(int)
 | 
			
		||||
             295:             TypePointer Input 141(int)
 | 
			
		||||
        296(uui):    295(ptr) Variable Input
 | 
			
		||||
             312:             TypePointer Function 186(bool)
 | 
			
		||||
       350(ub42):    188(ptr) Variable Private
 | 
			
		||||
             406:     18(int) Constant 2
 | 
			
		||||
             413:     18(int) Constant 1
 | 
			
		||||
             443:             TypeVector 6(float) 3
 | 
			
		||||
             462:    6(float) Constant 1073741824
 | 
			
		||||
             469:    6(float) Constant 1065353216
 | 
			
		||||
             474:     18(int) Constant 66
 | 
			
		||||
             480:     18(int) Constant 17
 | 
			
		||||
             492:             TypePointer Output 7(fvec4)
 | 
			
		||||
  493(FragColor):    492(ptr) Variable Output
 | 
			
		||||
             509:             TypeMatrix 7(fvec4) 4
 | 
			
		||||
             510:             TypePointer Function 509
 | 
			
		||||
             512:    6(float) Constant 0
 | 
			
		||||
             513:    7(fvec4) ConstantComposite 469 512 512 512
 | 
			
		||||
             514:    7(fvec4) ConstantComposite 512 469 512 512
 | 
			
		||||
             515:    7(fvec4) ConstantComposite 512 512 469 512
 | 
			
		||||
             516:    7(fvec4) ConstantComposite 512 512 512 469
 | 
			
		||||
             517:         509 ConstantComposite 513 514 515 516
 | 
			
		||||
             519:    7(fvec4) ConstantComposite 512 512 512 512
 | 
			
		||||
             520:         509 ConstantComposite 519 519 519 519
 | 
			
		||||
             532:             TypeVector 18(int) 4
 | 
			
		||||
             533:             TypePointer Input 532(ivec4)
 | 
			
		||||
       534(uiv4):    533(ptr) Variable Input
 | 
			
		||||
             535:             TypePointer Private 186(bool)
 | 
			
		||||
         536(ub):    535(ptr) Variable Private
 | 
			
		||||
             537:             TypeVector 141(int) 4
 | 
			
		||||
             538:             TypePointer Input 537(ivec4)
 | 
			
		||||
       539(uuv4):    538(ptr) Variable Input
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
            9(v):      8(ptr) Variable Function
 | 
			
		||||
           20(i):     19(ptr) Variable Function
 | 
			
		||||
          188(f):    143(ptr) Variable Function
 | 
			
		||||
          285(u):    284(ptr) Variable Function
 | 
			
		||||
          305(b):    304(ptr) Variable Function
 | 
			
		||||
             487:      8(ptr) Variable Function
 | 
			
		||||
         503(m1):    502(ptr) Variable Function
 | 
			
		||||
         510(m2):    502(ptr) Variable Function
 | 
			
		||||
             514:    502(ptr) Variable Function
 | 
			
		||||
155(swizzleTemp):      8(ptr) Variable Function
 | 
			
		||||
          196(f):    143(ptr) Variable Function
 | 
			
		||||
          293(u):    292(ptr) Variable Function
 | 
			
		||||
          313(b):    312(ptr) Variable Function
 | 
			
		||||
             495:      8(ptr) Variable Function
 | 
			
		||||
         511(m1):    510(ptr) Variable Function
 | 
			
		||||
         518(m2):    510(ptr) Variable Function
 | 
			
		||||
             522:    510(ptr) Variable Function
 | 
			
		||||
              12:    7(fvec4) Load 11(uv4)
 | 
			
		||||
              13:    7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
 | 
			
		||||
                              Store 9(v) 13
 | 
			
		||||
@ -262,441 +264,450 @@ spv.Operations.frag
 | 
			
		||||
             153:    7(fvec4) FAdd 152 151
 | 
			
		||||
                              Store 9(v) 153
 | 
			
		||||
             154:    7(fvec4) Load 9(v)
 | 
			
		||||
             155:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             156:    7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 154 155
 | 
			
		||||
             157:    7(fvec4) Load 9(v)
 | 
			
		||||
             158:    7(fvec4) FAdd 157 156
 | 
			
		||||
                              Store 9(v) 158
 | 
			
		||||
             159:    7(fvec4) Load 9(v)
 | 
			
		||||
             160:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             161:    7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 159 160
 | 
			
		||||
             156:    7(fvec4) ExtInst 1(GLSL.std.450) 35(Modf) 154 155(swizzleTemp)
 | 
			
		||||
             157:    7(fvec4) Load 155(swizzleTemp)
 | 
			
		||||
             158:    7(fvec4) Load 9(v)
 | 
			
		||||
             159:    7(fvec4) VectorShuffle 158 157 6 4 5 7
 | 
			
		||||
                              Store 9(v) 159
 | 
			
		||||
             160:    7(fvec4) Load 9(v)
 | 
			
		||||
             161:    7(fvec4) FAdd 160 156
 | 
			
		||||
                              Store 9(v) 161
 | 
			
		||||
             162:    7(fvec4) Load 9(v)
 | 
			
		||||
             163:    7(fvec4) FAdd 162 161
 | 
			
		||||
                              Store 9(v) 163
 | 
			
		||||
             164:    7(fvec4) Load 9(v)
 | 
			
		||||
             165:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             166:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             167:    7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 164 165 166
 | 
			
		||||
             168:    7(fvec4) Load 9(v)
 | 
			
		||||
             169:    7(fvec4) FAdd 168 167
 | 
			
		||||
                              Store 9(v) 169
 | 
			
		||||
             163:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             164:    7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 162 163
 | 
			
		||||
             165:    7(fvec4) Load 9(v)
 | 
			
		||||
             166:    7(fvec4) FAdd 165 164
 | 
			
		||||
                              Store 9(v) 166
 | 
			
		||||
             167:    7(fvec4) Load 9(v)
 | 
			
		||||
             168:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             169:    7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 167 168
 | 
			
		||||
             170:    7(fvec4) Load 9(v)
 | 
			
		||||
             171:    7(fvec4) Load 9(v)
 | 
			
		||||
             171:    7(fvec4) FAdd 170 169
 | 
			
		||||
                              Store 9(v) 171
 | 
			
		||||
             172:    7(fvec4) Load 9(v)
 | 
			
		||||
             173:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 170 171 172
 | 
			
		||||
             174:    7(fvec4) Load 9(v)
 | 
			
		||||
             175:    7(fvec4) FAdd 174 173
 | 
			
		||||
                              Store 9(v) 175
 | 
			
		||||
             173:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             174:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             175:    7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 172 173 174
 | 
			
		||||
             176:    7(fvec4) Load 9(v)
 | 
			
		||||
             177:    7(fvec4) Load 9(v)
 | 
			
		||||
             182:  179(bvec4) Load 181(ub41)
 | 
			
		||||
             183:    7(fvec4) Select 182 177 176
 | 
			
		||||
             177:    7(fvec4) FAdd 176 175
 | 
			
		||||
                              Store 9(v) 177
 | 
			
		||||
             178:    7(fvec4) Load 9(v)
 | 
			
		||||
             179:    7(fvec4) Load 9(v)
 | 
			
		||||
             180:    7(fvec4) Load 9(v)
 | 
			
		||||
             181:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 178 179 180
 | 
			
		||||
             182:    7(fvec4) Load 9(v)
 | 
			
		||||
             183:    7(fvec4) FAdd 182 181
 | 
			
		||||
                              Store 9(v) 183
 | 
			
		||||
             184:    7(fvec4) Load 9(v)
 | 
			
		||||
             185:    7(fvec4) FAdd 184 183
 | 
			
		||||
                              Store 9(v) 185
 | 
			
		||||
             186:    7(fvec4) Load 9(v)
 | 
			
		||||
             187:    7(fvec4) Load 9(v)
 | 
			
		||||
             189:    6(float) Load 188(f)
 | 
			
		||||
             190:    7(fvec4) CompositeConstruct 189 189 189 189
 | 
			
		||||
             191:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
 | 
			
		||||
             185:    7(fvec4) Load 9(v)
 | 
			
		||||
             190:  187(bvec4) Load 189(ub41)
 | 
			
		||||
             191:    7(fvec4) Select 190 185 184
 | 
			
		||||
             192:    7(fvec4) Load 9(v)
 | 
			
		||||
             193:    7(fvec4) FAdd 192 191
 | 
			
		||||
                              Store 9(v) 193
 | 
			
		||||
             194:    7(fvec4) Load 9(v)
 | 
			
		||||
             195:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             196:    7(fvec4) Load 9(v)
 | 
			
		||||
             197:    7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
 | 
			
		||||
             198:    7(fvec4) Load 9(v)
 | 
			
		||||
             199:    7(fvec4) FAdd 198 197
 | 
			
		||||
                              Store 9(v) 199
 | 
			
		||||
             195:    7(fvec4) Load 9(v)
 | 
			
		||||
             197:    6(float) Load 196(f)
 | 
			
		||||
             198:    7(fvec4) CompositeConstruct 197 197 197 197
 | 
			
		||||
             199:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 194 195 198
 | 
			
		||||
             200:    7(fvec4) Load 9(v)
 | 
			
		||||
             201:    7(fvec4) Load 9(v)
 | 
			
		||||
             202:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
 | 
			
		||||
             203:    7(fvec4) Load 9(v)
 | 
			
		||||
             204:    7(fvec4) FAdd 203 202
 | 
			
		||||
                              Store 9(v) 204
 | 
			
		||||
             205:    7(fvec4) Load 9(v)
 | 
			
		||||
             201:    7(fvec4) FAdd 200 199
 | 
			
		||||
                              Store 9(v) 201
 | 
			
		||||
             202:    7(fvec4) Load 9(v)
 | 
			
		||||
             203:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             204:    7(fvec4) Load 9(v)
 | 
			
		||||
             205:    7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 202 203 204
 | 
			
		||||
             206:    7(fvec4) Load 9(v)
 | 
			
		||||
             207:    7(fvec4) Load 9(v)
 | 
			
		||||
             208:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
 | 
			
		||||
             207:    7(fvec4) FAdd 206 205
 | 
			
		||||
                              Store 9(v) 207
 | 
			
		||||
             208:    7(fvec4) Load 9(v)
 | 
			
		||||
             209:    7(fvec4) Load 9(v)
 | 
			
		||||
             210:    7(fvec4) FAdd 209 208
 | 
			
		||||
                              Store 9(v) 210
 | 
			
		||||
             213:    6(float) Load 212(uf)
 | 
			
		||||
             210:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 208 209
 | 
			
		||||
             211:    7(fvec4) Load 9(v)
 | 
			
		||||
             212:    7(fvec4) FAdd 211 210
 | 
			
		||||
                              Store 9(v) 212
 | 
			
		||||
             213:    7(fvec4) Load 9(v)
 | 
			
		||||
             214:    7(fvec4) Load 9(v)
 | 
			
		||||
             215:    7(fvec4) CompositeConstruct 213 213 213 213
 | 
			
		||||
             216:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
 | 
			
		||||
             215:    7(fvec4) Load 9(v)
 | 
			
		||||
             216:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 213 214 215
 | 
			
		||||
             217:    7(fvec4) Load 9(v)
 | 
			
		||||
             218:    7(fvec4) FAdd 217 216
 | 
			
		||||
                              Store 9(v) 218
 | 
			
		||||
             219:    6(float) Load 212(uf)
 | 
			
		||||
             220:    6(float) Load 212(uf)
 | 
			
		||||
             221:    7(fvec4) Load 9(v)
 | 
			
		||||
             222:    7(fvec4) CompositeConstruct 219 219 219 219
 | 
			
		||||
             223:    7(fvec4) CompositeConstruct 220 220 220 220
 | 
			
		||||
             224:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
 | 
			
		||||
             221:    6(float) Load 220(uf)
 | 
			
		||||
             222:    7(fvec4) Load 9(v)
 | 
			
		||||
             223:    7(fvec4) CompositeConstruct 221 221 221 221
 | 
			
		||||
             224:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 223 222
 | 
			
		||||
             225:    7(fvec4) Load 9(v)
 | 
			
		||||
             226:    7(fvec4) FAdd 225 224
 | 
			
		||||
                              Store 9(v) 226
 | 
			
		||||
             227:    7(fvec4) Load 9(v)
 | 
			
		||||
             228:    7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
 | 
			
		||||
             227:    6(float) Load 220(uf)
 | 
			
		||||
             228:    6(float) Load 220(uf)
 | 
			
		||||
             229:    7(fvec4) Load 9(v)
 | 
			
		||||
             230:    7(fvec4) FAdd 229 228
 | 
			
		||||
                              Store 9(v) 230
 | 
			
		||||
             231:    7(fvec4) Load 9(v)
 | 
			
		||||
             232:    7(fvec4) Load 9(v)
 | 
			
		||||
             230:    7(fvec4) CompositeConstruct 227 227 227 227
 | 
			
		||||
             231:    7(fvec4) CompositeConstruct 228 228 228 228
 | 
			
		||||
             232:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 230 231 229
 | 
			
		||||
             233:    7(fvec4) Load 9(v)
 | 
			
		||||
             234:    7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
 | 
			
		||||
             234:    7(fvec4) FAdd 233 232
 | 
			
		||||
                              Store 9(v) 234
 | 
			
		||||
             235:    7(fvec4) Load 9(v)
 | 
			
		||||
             236:    7(fvec4) FAdd 235 234
 | 
			
		||||
                              Store 9(v) 236
 | 
			
		||||
             236:    7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 235
 | 
			
		||||
             237:    7(fvec4) Load 9(v)
 | 
			
		||||
             238:    7(fvec4) Load 9(v)
 | 
			
		||||
             239:    7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
 | 
			
		||||
             238:    7(fvec4) FAdd 237 236
 | 
			
		||||
                              Store 9(v) 238
 | 
			
		||||
             239:    7(fvec4) Load 9(v)
 | 
			
		||||
             240:    7(fvec4) Load 9(v)
 | 
			
		||||
             241:    7(fvec4) FAdd 240 239
 | 
			
		||||
                              Store 9(v) 241
 | 
			
		||||
             242:    7(fvec4) Load 9(v)
 | 
			
		||||
             241:    7(fvec4) Load 9(v)
 | 
			
		||||
             242:    7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 239 240 241
 | 
			
		||||
             243:    7(fvec4) Load 9(v)
 | 
			
		||||
             244:    6(float) Load 212(uf)
 | 
			
		||||
             245:    7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
 | 
			
		||||
             244:    7(fvec4) FAdd 243 242
 | 
			
		||||
                              Store 9(v) 244
 | 
			
		||||
             245:    7(fvec4) Load 9(v)
 | 
			
		||||
             246:    7(fvec4) Load 9(v)
 | 
			
		||||
             247:    7(fvec4) FAdd 246 245
 | 
			
		||||
                              Store 9(v) 247
 | 
			
		||||
             247:    7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 245 246
 | 
			
		||||
             248:    7(fvec4) Load 9(v)
 | 
			
		||||
             249:    7(fvec4) DPdx 248
 | 
			
		||||
             249:    7(fvec4) FAdd 248 247
 | 
			
		||||
                              Store 9(v) 249
 | 
			
		||||
             250:    7(fvec4) Load 9(v)
 | 
			
		||||
             251:    7(fvec4) FAdd 250 249
 | 
			
		||||
                              Store 9(v) 251
 | 
			
		||||
             252:    7(fvec4) Load 9(v)
 | 
			
		||||
             253:    7(fvec4) DPdy 252
 | 
			
		||||
             251:    7(fvec4) Load 9(v)
 | 
			
		||||
             252:    6(float) Load 220(uf)
 | 
			
		||||
             253:    7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 250 251 252
 | 
			
		||||
             254:    7(fvec4) Load 9(v)
 | 
			
		||||
             255:    7(fvec4) FAdd 254 253
 | 
			
		||||
                              Store 9(v) 255
 | 
			
		||||
             256:    7(fvec4) Load 9(v)
 | 
			
		||||
             257:    7(fvec4) Fwidth 256
 | 
			
		||||
             257:    7(fvec4) DPdx 256
 | 
			
		||||
             258:    7(fvec4) Load 9(v)
 | 
			
		||||
             259:    7(fvec4) FAdd 258 257
 | 
			
		||||
                              Store 9(v) 259
 | 
			
		||||
             260:     18(int) Load 22(ui)
 | 
			
		||||
             261:     18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
 | 
			
		||||
             262:     18(int) Load 20(i)
 | 
			
		||||
             263:     18(int) IAdd 262 261
 | 
			
		||||
                              Store 20(i) 263
 | 
			
		||||
             264:     18(int) Load 20(i)
 | 
			
		||||
             265:     18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
 | 
			
		||||
             266:     18(int) Load 20(i)
 | 
			
		||||
             267:     18(int) IAdd 266 265
 | 
			
		||||
                              Store 20(i) 267
 | 
			
		||||
             268:     18(int) Load 20(i)
 | 
			
		||||
             269:     18(int) Load 22(ui)
 | 
			
		||||
             270:     18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
 | 
			
		||||
             271:     18(int) Load 20(i)
 | 
			
		||||
             272:     18(int) IAdd 271 270
 | 
			
		||||
                              Store 20(i) 272
 | 
			
		||||
             273:     18(int) Load 20(i)
 | 
			
		||||
             274:     18(int) Load 22(ui)
 | 
			
		||||
             275:     18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
 | 
			
		||||
             260:    7(fvec4) Load 9(v)
 | 
			
		||||
             261:    7(fvec4) DPdy 260
 | 
			
		||||
             262:    7(fvec4) Load 9(v)
 | 
			
		||||
             263:    7(fvec4) FAdd 262 261
 | 
			
		||||
                              Store 9(v) 263
 | 
			
		||||
             264:    7(fvec4) Load 9(v)
 | 
			
		||||
             265:    7(fvec4) Fwidth 264
 | 
			
		||||
             266:    7(fvec4) Load 9(v)
 | 
			
		||||
             267:    7(fvec4) FAdd 266 265
 | 
			
		||||
                              Store 9(v) 267
 | 
			
		||||
             268:     18(int) Load 22(ui)
 | 
			
		||||
             269:     18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 268
 | 
			
		||||
             270:     18(int) Load 20(i)
 | 
			
		||||
             271:     18(int) IAdd 270 269
 | 
			
		||||
                              Store 20(i) 271
 | 
			
		||||
             272:     18(int) Load 20(i)
 | 
			
		||||
             273:     18(int) ExtInst 1(GLSL.std.450) 7(SSign) 272
 | 
			
		||||
             274:     18(int) Load 20(i)
 | 
			
		||||
             275:     18(int) IAdd 274 273
 | 
			
		||||
                              Store 20(i) 275
 | 
			
		||||
             276:     18(int) Load 20(i)
 | 
			
		||||
             277:     18(int) IAdd 276 275
 | 
			
		||||
                              Store 20(i) 277
 | 
			
		||||
             278:     18(int) Load 20(i)
 | 
			
		||||
             279:     18(int) Load 22(ui)
 | 
			
		||||
             280:     18(int) Load 22(ui)
 | 
			
		||||
             281:     18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
 | 
			
		||||
             282:     18(int) Load 20(i)
 | 
			
		||||
             283:     18(int) IAdd 282 281
 | 
			
		||||
                              Store 20(i) 283
 | 
			
		||||
             286:    141(int) Load 285(u)
 | 
			
		||||
             289:    141(int) Load 288(uui)
 | 
			
		||||
             290:    141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
 | 
			
		||||
             291:    141(int) Load 285(u)
 | 
			
		||||
             292:    141(int) IAdd 291 290
 | 
			
		||||
                              Store 285(u) 292
 | 
			
		||||
             293:    141(int) Load 285(u)
 | 
			
		||||
             294:    141(int) Load 288(uui)
 | 
			
		||||
             295:    141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
 | 
			
		||||
             296:    141(int) Load 285(u)
 | 
			
		||||
             297:    141(int) IAdd 296 295
 | 
			
		||||
                              Store 285(u) 297
 | 
			
		||||
             298:    141(int) Load 285(u)
 | 
			
		||||
             299:    141(int) Load 288(uui)
 | 
			
		||||
             300:    141(int) Load 288(uui)
 | 
			
		||||
             301:    141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
 | 
			
		||||
             302:    141(int) Load 285(u)
 | 
			
		||||
             303:    141(int) IAdd 302 301
 | 
			
		||||
                              Store 285(u) 303
 | 
			
		||||
             306:    6(float) Load 212(uf)
 | 
			
		||||
             307:   178(bool) IsNan 306
 | 
			
		||||
                              Store 305(b) 307
 | 
			
		||||
             308:    6(float) Load 188(f)
 | 
			
		||||
             309:   178(bool) IsInf 308
 | 
			
		||||
                              Store 305(b) 309
 | 
			
		||||
             310:    7(fvec4) Load 9(v)
 | 
			
		||||
             311:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             312:  179(bvec4) FOrdLessThan 310 311
 | 
			
		||||
             313:   178(bool) Any 312
 | 
			
		||||
                              Store 305(b) 313
 | 
			
		||||
             314:   178(bool) Load 305(b)
 | 
			
		||||
                              SelectionMerge 316 None
 | 
			
		||||
                              BranchConditional 314 315 316
 | 
			
		||||
             315:               Label
 | 
			
		||||
             317:    7(fvec4)   Load 9(v)
 | 
			
		||||
             318:    7(fvec4)   Load 11(uv4)
 | 
			
		||||
             319:  179(bvec4)   FOrdLessThanEqual 317 318
 | 
			
		||||
             320:   178(bool)   Any 319
 | 
			
		||||
                                Branch 316
 | 
			
		||||
             316:             Label
 | 
			
		||||
             321:   178(bool) Phi 314 5 320 315
 | 
			
		||||
                              Store 305(b) 321
 | 
			
		||||
             322:   178(bool) Load 305(b)
 | 
			
		||||
             277:     18(int) Load 22(ui)
 | 
			
		||||
             278:     18(int) ExtInst 1(GLSL.std.450) 39(SMin) 276 277
 | 
			
		||||
             279:     18(int) Load 20(i)
 | 
			
		||||
             280:     18(int) IAdd 279 278
 | 
			
		||||
                              Store 20(i) 280
 | 
			
		||||
             281:     18(int) Load 20(i)
 | 
			
		||||
             282:     18(int) Load 22(ui)
 | 
			
		||||
             283:     18(int) ExtInst 1(GLSL.std.450) 42(SMax) 281 282
 | 
			
		||||
             284:     18(int) Load 20(i)
 | 
			
		||||
             285:     18(int) IAdd 284 283
 | 
			
		||||
                              Store 20(i) 285
 | 
			
		||||
             286:     18(int) Load 20(i)
 | 
			
		||||
             287:     18(int) Load 22(ui)
 | 
			
		||||
             288:     18(int) Load 22(ui)
 | 
			
		||||
             289:     18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 286 287 288
 | 
			
		||||
             290:     18(int) Load 20(i)
 | 
			
		||||
             291:     18(int) IAdd 290 289
 | 
			
		||||
                              Store 20(i) 291
 | 
			
		||||
             294:    141(int) Load 293(u)
 | 
			
		||||
             297:    141(int) Load 296(uui)
 | 
			
		||||
             298:    141(int) ExtInst 1(GLSL.std.450) 38(UMin) 294 297
 | 
			
		||||
             299:    141(int) Load 293(u)
 | 
			
		||||
             300:    141(int) IAdd 299 298
 | 
			
		||||
                              Store 293(u) 300
 | 
			
		||||
             301:    141(int) Load 293(u)
 | 
			
		||||
             302:    141(int) Load 296(uui)
 | 
			
		||||
             303:    141(int) ExtInst 1(GLSL.std.450) 41(UMax) 301 302
 | 
			
		||||
             304:    141(int) Load 293(u)
 | 
			
		||||
             305:    141(int) IAdd 304 303
 | 
			
		||||
                              Store 293(u) 305
 | 
			
		||||
             306:    141(int) Load 293(u)
 | 
			
		||||
             307:    141(int) Load 296(uui)
 | 
			
		||||
             308:    141(int) Load 296(uui)
 | 
			
		||||
             309:    141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 306 307 308
 | 
			
		||||
             310:    141(int) Load 293(u)
 | 
			
		||||
             311:    141(int) IAdd 310 309
 | 
			
		||||
                              Store 293(u) 311
 | 
			
		||||
             314:    6(float) Load 220(uf)
 | 
			
		||||
             315:   186(bool) IsNan 314
 | 
			
		||||
                              Store 313(b) 315
 | 
			
		||||
             316:    6(float) Load 196(f)
 | 
			
		||||
             317:   186(bool) IsInf 316
 | 
			
		||||
                              Store 313(b) 317
 | 
			
		||||
             318:    7(fvec4) Load 9(v)
 | 
			
		||||
             319:    7(fvec4) Load 11(uv4)
 | 
			
		||||
             320:  187(bvec4) FOrdLessThan 318 319
 | 
			
		||||
             321:   186(bool) Any 320
 | 
			
		||||
                              Store 313(b) 321
 | 
			
		||||
             322:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 324 None
 | 
			
		||||
                              BranchConditional 322 323 324
 | 
			
		||||
             323:               Label
 | 
			
		||||
             325:    7(fvec4)   Load 9(v)
 | 
			
		||||
             326:    7(fvec4)   Load 11(uv4)
 | 
			
		||||
             327:  179(bvec4)   FOrdGreaterThan 325 326
 | 
			
		||||
             328:   178(bool)   Any 327
 | 
			
		||||
             327:  187(bvec4)   FOrdLessThanEqual 325 326
 | 
			
		||||
             328:   186(bool)   Any 327
 | 
			
		||||
                                Branch 324
 | 
			
		||||
             324:             Label
 | 
			
		||||
             329:   178(bool) Phi 322 316 328 323
 | 
			
		||||
                              Store 305(b) 329
 | 
			
		||||
             330:   178(bool) Load 305(b)
 | 
			
		||||
             329:   186(bool) Phi 322 5 328 323
 | 
			
		||||
                              Store 313(b) 329
 | 
			
		||||
             330:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 332 None
 | 
			
		||||
                              BranchConditional 330 331 332
 | 
			
		||||
             331:               Label
 | 
			
		||||
             333:    7(fvec4)   Load 9(v)
 | 
			
		||||
             334:    7(fvec4)   Load 11(uv4)
 | 
			
		||||
             335:  179(bvec4)   FOrdGreaterThanEqual 333 334
 | 
			
		||||
             336:   178(bool)   Any 335
 | 
			
		||||
             335:  187(bvec4)   FOrdGreaterThan 333 334
 | 
			
		||||
             336:   186(bool)   Any 335
 | 
			
		||||
                                Branch 332
 | 
			
		||||
             332:             Label
 | 
			
		||||
             337:   178(bool) Phi 330 324 336 331
 | 
			
		||||
                              Store 305(b) 337
 | 
			
		||||
             338:   178(bool) Load 305(b)
 | 
			
		||||
             337:   186(bool) Phi 330 324 336 331
 | 
			
		||||
                              Store 313(b) 337
 | 
			
		||||
             338:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 340 None
 | 
			
		||||
                              BranchConditional 338 339 340
 | 
			
		||||
             339:               Label
 | 
			
		||||
             341:  179(bvec4)   Load 181(ub41)
 | 
			
		||||
             343:  179(bvec4)   Load 342(ub42)
 | 
			
		||||
             344:  179(bvec4)   LogicalEqual 341 343
 | 
			
		||||
             345:   178(bool)   Any 344
 | 
			
		||||
             341:    7(fvec4)   Load 9(v)
 | 
			
		||||
             342:    7(fvec4)   Load 11(uv4)
 | 
			
		||||
             343:  187(bvec4)   FOrdGreaterThanEqual 341 342
 | 
			
		||||
             344:   186(bool)   Any 343
 | 
			
		||||
                                Branch 340
 | 
			
		||||
             340:             Label
 | 
			
		||||
             346:   178(bool) Phi 338 332 345 339
 | 
			
		||||
                              Store 305(b) 346
 | 
			
		||||
             347:   178(bool) Load 305(b)
 | 
			
		||||
                              SelectionMerge 349 None
 | 
			
		||||
                              BranchConditional 347 348 349
 | 
			
		||||
             348:               Label
 | 
			
		||||
             350:  179(bvec4)   Load 181(ub41)
 | 
			
		||||
             351:  179(bvec4)   Load 342(ub42)
 | 
			
		||||
             352:  179(bvec4)   LogicalNotEqual 350 351
 | 
			
		||||
             353:   178(bool)   Any 352
 | 
			
		||||
                                Branch 349
 | 
			
		||||
             349:             Label
 | 
			
		||||
             354:   178(bool) Phi 347 340 353 348
 | 
			
		||||
                              Store 305(b) 354
 | 
			
		||||
             355:   178(bool) Load 305(b)
 | 
			
		||||
             356:  179(bvec4) Load 181(ub41)
 | 
			
		||||
             357:   178(bool) Any 356
 | 
			
		||||
             358:   178(bool) LogicalAnd 355 357
 | 
			
		||||
                              Store 305(b) 358
 | 
			
		||||
             359:   178(bool) Load 305(b)
 | 
			
		||||
             360:  179(bvec4) Load 181(ub41)
 | 
			
		||||
             361:   178(bool) All 360
 | 
			
		||||
             362:   178(bool) LogicalAnd 359 361
 | 
			
		||||
                              Store 305(b) 362
 | 
			
		||||
             363:   178(bool) Load 305(b)
 | 
			
		||||
                              SelectionMerge 365 None
 | 
			
		||||
                              BranchConditional 363 364 365
 | 
			
		||||
             364:               Label
 | 
			
		||||
             366:  179(bvec4)   Load 181(ub41)
 | 
			
		||||
             367:  179(bvec4)   LogicalNot 366
 | 
			
		||||
             368:   178(bool)   Any 367
 | 
			
		||||
                                Branch 365
 | 
			
		||||
             365:             Label
 | 
			
		||||
             369:   178(bool) Phi 363 349 368 364
 | 
			
		||||
                              Store 305(b) 369
 | 
			
		||||
             370:     18(int) Load 20(i)
 | 
			
		||||
             371:     18(int) Load 22(ui)
 | 
			
		||||
             372:     18(int) IAdd 370 371
 | 
			
		||||
             373:     18(int) Load 20(i)
 | 
			
		||||
             374:     18(int) IMul 372 373
 | 
			
		||||
             375:     18(int) Load 22(ui)
 | 
			
		||||
             376:     18(int) ISub 374 375
 | 
			
		||||
             377:     18(int) Load 20(i)
 | 
			
		||||
             378:     18(int) SDiv 376 377
 | 
			
		||||
                              Store 20(i) 378
 | 
			
		||||
             379:     18(int) Load 20(i)
 | 
			
		||||
             380:     18(int) Load 22(ui)
 | 
			
		||||
             381:     18(int) SMod 379 380
 | 
			
		||||
                              Store 20(i) 381
 | 
			
		||||
             382:     18(int) Load 20(i)
 | 
			
		||||
             345:   186(bool) Phi 338 332 344 339
 | 
			
		||||
                              Store 313(b) 345
 | 
			
		||||
             346:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 348 None
 | 
			
		||||
                              BranchConditional 346 347 348
 | 
			
		||||
             347:               Label
 | 
			
		||||
             349:  187(bvec4)   Load 189(ub41)
 | 
			
		||||
             351:  187(bvec4)   Load 350(ub42)
 | 
			
		||||
             352:  187(bvec4)   LogicalEqual 349 351
 | 
			
		||||
             353:   186(bool)   Any 352
 | 
			
		||||
                                Branch 348
 | 
			
		||||
             348:             Label
 | 
			
		||||
             354:   186(bool) Phi 346 340 353 347
 | 
			
		||||
                              Store 313(b) 354
 | 
			
		||||
             355:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 357 None
 | 
			
		||||
                              BranchConditional 355 356 357
 | 
			
		||||
             356:               Label
 | 
			
		||||
             358:  187(bvec4)   Load 189(ub41)
 | 
			
		||||
             359:  187(bvec4)   Load 350(ub42)
 | 
			
		||||
             360:  187(bvec4)   LogicalNotEqual 358 359
 | 
			
		||||
             361:   186(bool)   Any 360
 | 
			
		||||
                                Branch 357
 | 
			
		||||
             357:             Label
 | 
			
		||||
             362:   186(bool) Phi 355 348 361 356
 | 
			
		||||
                              Store 313(b) 362
 | 
			
		||||
             363:   186(bool) Load 313(b)
 | 
			
		||||
             364:  187(bvec4) Load 189(ub41)
 | 
			
		||||
             365:   186(bool) Any 364
 | 
			
		||||
             366:   186(bool) LogicalAnd 363 365
 | 
			
		||||
                              Store 313(b) 366
 | 
			
		||||
             367:   186(bool) Load 313(b)
 | 
			
		||||
             368:  187(bvec4) Load 189(ub41)
 | 
			
		||||
             369:   186(bool) All 368
 | 
			
		||||
             370:   186(bool) LogicalAnd 367 369
 | 
			
		||||
                              Store 313(b) 370
 | 
			
		||||
             371:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 373 None
 | 
			
		||||
                              BranchConditional 371 372 373
 | 
			
		||||
             372:               Label
 | 
			
		||||
             374:  187(bvec4)   Load 189(ub41)
 | 
			
		||||
             375:  187(bvec4)   LogicalNot 374
 | 
			
		||||
             376:   186(bool)   Any 375
 | 
			
		||||
                                Branch 373
 | 
			
		||||
             373:             Label
 | 
			
		||||
             377:   186(bool) Phi 371 357 376 372
 | 
			
		||||
                              Store 313(b) 377
 | 
			
		||||
             378:     18(int) Load 20(i)
 | 
			
		||||
             379:     18(int) Load 22(ui)
 | 
			
		||||
             380:     18(int) IAdd 378 379
 | 
			
		||||
             381:     18(int) Load 20(i)
 | 
			
		||||
             382:     18(int) IMul 380 381
 | 
			
		||||
             383:     18(int) Load 22(ui)
 | 
			
		||||
             384:   178(bool) IEqual 382 383
 | 
			
		||||
             385:   178(bool) LogicalNot 384
 | 
			
		||||
                              SelectionMerge 387 None
 | 
			
		||||
                              BranchConditional 385 386 387
 | 
			
		||||
             386:               Label
 | 
			
		||||
             388:     18(int)   Load 20(i)
 | 
			
		||||
             389:     18(int)   Load 22(ui)
 | 
			
		||||
             390:   178(bool)   INotEqual 388 389
 | 
			
		||||
                                SelectionMerge 392 None
 | 
			
		||||
                                BranchConditional 390 391 392
 | 
			
		||||
             391:                 Label
 | 
			
		||||
             393:     18(int)     Load 20(i)
 | 
			
		||||
             394:     18(int)     Load 22(ui)
 | 
			
		||||
             395:   178(bool)     IEqual 393 394
 | 
			
		||||
                                  Branch 392
 | 
			
		||||
             392:               Label
 | 
			
		||||
             396:   178(bool)   Phi 390 386 395 391
 | 
			
		||||
             397:     18(int)   Load 20(i)
 | 
			
		||||
             399:   178(bool)   INotEqual 397 398
 | 
			
		||||
             400:   178(bool)   LogicalNotEqual 396 399
 | 
			
		||||
                                Branch 387
 | 
			
		||||
             387:             Label
 | 
			
		||||
             401:   178(bool) Phi 384 365 400 392
 | 
			
		||||
                              SelectionMerge 403 None
 | 
			
		||||
                              BranchConditional 401 402 403
 | 
			
		||||
             402:               Label
 | 
			
		||||
             404:     18(int)   Load 20(i)
 | 
			
		||||
             406:     18(int)   IAdd 404 405
 | 
			
		||||
                                Store 20(i) 406
 | 
			
		||||
                                Branch 403
 | 
			
		||||
             403:             Label
 | 
			
		||||
             407:    6(float) Load 212(uf)
 | 
			
		||||
             408:    6(float) Load 212(uf)
 | 
			
		||||
             409:    6(float) FAdd 407 408
 | 
			
		||||
             410:    6(float) Load 212(uf)
 | 
			
		||||
             411:    6(float) FMul 409 410
 | 
			
		||||
             412:    6(float) Load 212(uf)
 | 
			
		||||
             413:    6(float) FSub 411 412
 | 
			
		||||
             414:    6(float) Load 212(uf)
 | 
			
		||||
             415:    6(float) FDiv 413 414
 | 
			
		||||
                              Store 188(f) 415
 | 
			
		||||
             416:    7(fvec4) Load 9(v)
 | 
			
		||||
             417:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 416
 | 
			
		||||
             418:    6(float) Load 188(f)
 | 
			
		||||
             419:    6(float) FAdd 418 417
 | 
			
		||||
                              Store 188(f) 419
 | 
			
		||||
             420:    7(fvec4) Load 9(v)
 | 
			
		||||
             421:    7(fvec4) Load 9(v)
 | 
			
		||||
             422:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 420 421
 | 
			
		||||
             423:    6(float) Load 188(f)
 | 
			
		||||
             424:    6(float) FAdd 423 422
 | 
			
		||||
                              Store 188(f) 424
 | 
			
		||||
             425:    7(fvec4) Load 9(v)
 | 
			
		||||
             426:    7(fvec4) Load 9(v)
 | 
			
		||||
             427:    6(float) Dot 425 426
 | 
			
		||||
             428:    6(float) Load 188(f)
 | 
			
		||||
             429:    6(float) FAdd 428 427
 | 
			
		||||
                              Store 188(f) 429
 | 
			
		||||
             430:    6(float) Load 188(f)
 | 
			
		||||
             431:    6(float) Load 212(uf)
 | 
			
		||||
             432:    6(float) FMul 430 431
 | 
			
		||||
             433:    6(float) Load 188(f)
 | 
			
		||||
             434:    6(float) FAdd 433 432
 | 
			
		||||
                              Store 188(f) 434
 | 
			
		||||
             436:    7(fvec4) Load 9(v)
 | 
			
		||||
             437:  435(fvec3) VectorShuffle 436 436 0 1 2
 | 
			
		||||
             438:    7(fvec4) Load 9(v)
 | 
			
		||||
             439:  435(fvec3) VectorShuffle 438 438 0 1 2
 | 
			
		||||
             440:  435(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 437 439
 | 
			
		||||
             441:    6(float) CompositeExtract 440 0
 | 
			
		||||
             442:    6(float) Load 188(f)
 | 
			
		||||
             443:    6(float) FAdd 442 441
 | 
			
		||||
                              Store 188(f) 443
 | 
			
		||||
             444:    6(float) Load 188(f)
 | 
			
		||||
             445:    6(float) Load 212(uf)
 | 
			
		||||
             446:   178(bool) FOrdEqual 444 445
 | 
			
		||||
             447:   178(bool) LogicalNot 446
 | 
			
		||||
                              SelectionMerge 449 None
 | 
			
		||||
                              BranchConditional 447 448 449
 | 
			
		||||
             448:               Label
 | 
			
		||||
             450:    6(float)   Load 188(f)
 | 
			
		||||
             451:    6(float)   Load 212(uf)
 | 
			
		||||
             452:   178(bool)   FOrdNotEqual 450 451
 | 
			
		||||
             453:    6(float)   Load 188(f)
 | 
			
		||||
             455:   178(bool)   FOrdNotEqual 453 454
 | 
			
		||||
             456:   178(bool)   LogicalAnd 452 455
 | 
			
		||||
                                Branch 449
 | 
			
		||||
             449:             Label
 | 
			
		||||
             457:   178(bool) Phi 446 403 456 448
 | 
			
		||||
                              SelectionMerge 459 None
 | 
			
		||||
                              BranchConditional 457 458 459
 | 
			
		||||
             458:               Label
 | 
			
		||||
             460:    6(float)   Load 188(f)
 | 
			
		||||
             462:    6(float)   FAdd 460 461
 | 
			
		||||
                                Store 188(f) 462
 | 
			
		||||
                                Branch 459
 | 
			
		||||
             459:             Label
 | 
			
		||||
             463:     18(int) Load 22(ui)
 | 
			
		||||
             464:     18(int) Load 20(i)
 | 
			
		||||
             465:     18(int) BitwiseAnd 464 463
 | 
			
		||||
                              Store 20(i) 465
 | 
			
		||||
             467:     18(int) Load 20(i)
 | 
			
		||||
             468:     18(int) BitwiseOr 467 466
 | 
			
		||||
                              Store 20(i) 468
 | 
			
		||||
             469:     18(int) Load 22(ui)
 | 
			
		||||
             470:     18(int) Load 20(i)
 | 
			
		||||
             471:     18(int) BitwiseXor 470 469
 | 
			
		||||
                              Store 20(i) 471
 | 
			
		||||
             473:     18(int) Load 20(i)
 | 
			
		||||
             474:     18(int) SMod 473 472
 | 
			
		||||
                              Store 20(i) 474
 | 
			
		||||
             384:     18(int) ISub 382 383
 | 
			
		||||
             385:     18(int) Load 20(i)
 | 
			
		||||
             386:     18(int) SDiv 384 385
 | 
			
		||||
                              Store 20(i) 386
 | 
			
		||||
             387:     18(int) Load 20(i)
 | 
			
		||||
             388:     18(int) Load 22(ui)
 | 
			
		||||
             389:     18(int) SMod 387 388
 | 
			
		||||
                              Store 20(i) 389
 | 
			
		||||
             390:     18(int) Load 20(i)
 | 
			
		||||
             391:     18(int) Load 22(ui)
 | 
			
		||||
             392:   186(bool) IEqual 390 391
 | 
			
		||||
             393:   186(bool) LogicalNot 392
 | 
			
		||||
                              SelectionMerge 395 None
 | 
			
		||||
                              BranchConditional 393 394 395
 | 
			
		||||
             394:               Label
 | 
			
		||||
             396:     18(int)   Load 20(i)
 | 
			
		||||
             397:     18(int)   Load 22(ui)
 | 
			
		||||
             398:   186(bool)   INotEqual 396 397
 | 
			
		||||
                                SelectionMerge 400 None
 | 
			
		||||
                                BranchConditional 398 399 400
 | 
			
		||||
             399:                 Label
 | 
			
		||||
             401:     18(int)     Load 20(i)
 | 
			
		||||
             402:     18(int)     Load 22(ui)
 | 
			
		||||
             403:   186(bool)     IEqual 401 402
 | 
			
		||||
                                  Branch 400
 | 
			
		||||
             400:               Label
 | 
			
		||||
             404:   186(bool)   Phi 398 394 403 399
 | 
			
		||||
             405:     18(int)   Load 20(i)
 | 
			
		||||
             407:   186(bool)   INotEqual 405 406
 | 
			
		||||
             408:   186(bool)   LogicalNotEqual 404 407
 | 
			
		||||
                                Branch 395
 | 
			
		||||
             395:             Label
 | 
			
		||||
             409:   186(bool) Phi 392 373 408 400
 | 
			
		||||
                              SelectionMerge 411 None
 | 
			
		||||
                              BranchConditional 409 410 411
 | 
			
		||||
             410:               Label
 | 
			
		||||
             412:     18(int)   Load 20(i)
 | 
			
		||||
             414:     18(int)   IAdd 412 413
 | 
			
		||||
                                Store 20(i) 414
 | 
			
		||||
                                Branch 411
 | 
			
		||||
             411:             Label
 | 
			
		||||
             415:    6(float) Load 220(uf)
 | 
			
		||||
             416:    6(float) Load 220(uf)
 | 
			
		||||
             417:    6(float) FAdd 415 416
 | 
			
		||||
             418:    6(float) Load 220(uf)
 | 
			
		||||
             419:    6(float) FMul 417 418
 | 
			
		||||
             420:    6(float) Load 220(uf)
 | 
			
		||||
             421:    6(float) FSub 419 420
 | 
			
		||||
             422:    6(float) Load 220(uf)
 | 
			
		||||
             423:    6(float) FDiv 421 422
 | 
			
		||||
                              Store 196(f) 423
 | 
			
		||||
             424:    7(fvec4) Load 9(v)
 | 
			
		||||
             425:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 424
 | 
			
		||||
             426:    6(float) Load 196(f)
 | 
			
		||||
             427:    6(float) FAdd 426 425
 | 
			
		||||
                              Store 196(f) 427
 | 
			
		||||
             428:    7(fvec4) Load 9(v)
 | 
			
		||||
             429:    7(fvec4) Load 9(v)
 | 
			
		||||
             430:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 428 429
 | 
			
		||||
             431:    6(float) Load 196(f)
 | 
			
		||||
             432:    6(float) FAdd 431 430
 | 
			
		||||
                              Store 196(f) 432
 | 
			
		||||
             433:    7(fvec4) Load 9(v)
 | 
			
		||||
             434:    7(fvec4) Load 9(v)
 | 
			
		||||
             435:    6(float) Dot 433 434
 | 
			
		||||
             436:    6(float) Load 196(f)
 | 
			
		||||
             437:    6(float) FAdd 436 435
 | 
			
		||||
                              Store 196(f) 437
 | 
			
		||||
             438:    6(float) Load 196(f)
 | 
			
		||||
             439:    6(float) Load 220(uf)
 | 
			
		||||
             440:    6(float) FMul 438 439
 | 
			
		||||
             441:    6(float) Load 196(f)
 | 
			
		||||
             442:    6(float) FAdd 441 440
 | 
			
		||||
                              Store 196(f) 442
 | 
			
		||||
             444:    7(fvec4) Load 9(v)
 | 
			
		||||
             445:  443(fvec3) VectorShuffle 444 444 0 1 2
 | 
			
		||||
             446:    7(fvec4) Load 9(v)
 | 
			
		||||
             447:  443(fvec3) VectorShuffle 446 446 0 1 2
 | 
			
		||||
             448:  443(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 445 447
 | 
			
		||||
             449:    6(float) CompositeExtract 448 0
 | 
			
		||||
             450:    6(float) Load 196(f)
 | 
			
		||||
             451:    6(float) FAdd 450 449
 | 
			
		||||
                              Store 196(f) 451
 | 
			
		||||
             452:    6(float) Load 196(f)
 | 
			
		||||
             453:    6(float) Load 220(uf)
 | 
			
		||||
             454:   186(bool) FOrdEqual 452 453
 | 
			
		||||
             455:   186(bool) LogicalNot 454
 | 
			
		||||
                              SelectionMerge 457 None
 | 
			
		||||
                              BranchConditional 455 456 457
 | 
			
		||||
             456:               Label
 | 
			
		||||
             458:    6(float)   Load 196(f)
 | 
			
		||||
             459:    6(float)   Load 220(uf)
 | 
			
		||||
             460:   186(bool)   FOrdNotEqual 458 459
 | 
			
		||||
             461:    6(float)   Load 196(f)
 | 
			
		||||
             463:   186(bool)   FOrdNotEqual 461 462
 | 
			
		||||
             464:   186(bool)   LogicalAnd 460 463
 | 
			
		||||
                                Branch 457
 | 
			
		||||
             457:             Label
 | 
			
		||||
             465:   186(bool) Phi 454 411 464 456
 | 
			
		||||
                              SelectionMerge 467 None
 | 
			
		||||
                              BranchConditional 465 466 467
 | 
			
		||||
             466:               Label
 | 
			
		||||
             468:    6(float)   Load 196(f)
 | 
			
		||||
             470:    6(float)   FAdd 468 469
 | 
			
		||||
                                Store 196(f) 470
 | 
			
		||||
                                Branch 467
 | 
			
		||||
             467:             Label
 | 
			
		||||
             471:     18(int) Load 22(ui)
 | 
			
		||||
             472:     18(int) Load 20(i)
 | 
			
		||||
             473:     18(int) BitwiseAnd 472 471
 | 
			
		||||
                              Store 20(i) 473
 | 
			
		||||
             475:     18(int) Load 20(i)
 | 
			
		||||
             476:     18(int) ShiftRightArithmetic 475 398
 | 
			
		||||
             476:     18(int) BitwiseOr 475 474
 | 
			
		||||
                              Store 20(i) 476
 | 
			
		||||
             477:     18(int) Load 22(ui)
 | 
			
		||||
             478:     18(int) Load 20(i)
 | 
			
		||||
             479:     18(int) ShiftLeftLogical 478 477
 | 
			
		||||
             479:     18(int) BitwiseXor 478 477
 | 
			
		||||
                              Store 20(i) 479
 | 
			
		||||
             480:     18(int) Load 20(i)
 | 
			
		||||
             481:     18(int) Not 480
 | 
			
		||||
                              Store 20(i) 481
 | 
			
		||||
             482:   178(bool) Load 305(b)
 | 
			
		||||
             483:   178(bool) LogicalNot 482
 | 
			
		||||
                              Store 305(b) 483
 | 
			
		||||
             486:   178(bool) Load 305(b)
 | 
			
		||||
                              SelectionMerge 489 None
 | 
			
		||||
                              BranchConditional 486 488 498
 | 
			
		||||
             488:               Label
 | 
			
		||||
             490:     18(int)   Load 20(i)
 | 
			
		||||
             491:    6(float)   ConvertSToF 490
 | 
			
		||||
             492:    7(fvec4)   CompositeConstruct 491 491 491 491
 | 
			
		||||
             493:    6(float)   Load 188(f)
 | 
			
		||||
             494:    7(fvec4)   CompositeConstruct 493 493 493 493
 | 
			
		||||
             495:    7(fvec4)   FAdd 492 494
 | 
			
		||||
             496:    7(fvec4)   Load 9(v)
 | 
			
		||||
             497:    7(fvec4)   FAdd 495 496
 | 
			
		||||
                                Store 487 497
 | 
			
		||||
                                Branch 489
 | 
			
		||||
             498:               Label
 | 
			
		||||
             499:    7(fvec4)   Load 9(v)
 | 
			
		||||
                                Store 487 499
 | 
			
		||||
                                Branch 489
 | 
			
		||||
             489:             Label
 | 
			
		||||
             500:    7(fvec4) Load 487
 | 
			
		||||
                              Store 485(FragColor) 500
 | 
			
		||||
                              Store 503(m1) 509
 | 
			
		||||
                              Store 510(m2) 512
 | 
			
		||||
             513:   178(bool) Load 305(b)
 | 
			
		||||
                              SelectionMerge 516 None
 | 
			
		||||
                              BranchConditional 513 515 518
 | 
			
		||||
             515:               Label
 | 
			
		||||
             517:         501   Load 503(m1)
 | 
			
		||||
                                Store 514 517
 | 
			
		||||
                                Branch 516
 | 
			
		||||
             518:               Label
 | 
			
		||||
             519:         501   Load 510(m2)
 | 
			
		||||
                                Store 514 519
 | 
			
		||||
                                Branch 516
 | 
			
		||||
             516:             Label
 | 
			
		||||
             520:      8(ptr) AccessChain 514 405
 | 
			
		||||
             521:    7(fvec4) Load 520
 | 
			
		||||
             522:    7(fvec4) Load 485(FragColor)
 | 
			
		||||
             523:    7(fvec4) FAdd 522 521
 | 
			
		||||
                              Store 485(FragColor) 523
 | 
			
		||||
             481:     18(int) Load 20(i)
 | 
			
		||||
             482:     18(int) SMod 481 480
 | 
			
		||||
                              Store 20(i) 482
 | 
			
		||||
             483:     18(int) Load 20(i)
 | 
			
		||||
             484:     18(int) ShiftRightArithmetic 483 406
 | 
			
		||||
                              Store 20(i) 484
 | 
			
		||||
             485:     18(int) Load 22(ui)
 | 
			
		||||
             486:     18(int) Load 20(i)
 | 
			
		||||
             487:     18(int) ShiftLeftLogical 486 485
 | 
			
		||||
                              Store 20(i) 487
 | 
			
		||||
             488:     18(int) Load 20(i)
 | 
			
		||||
             489:     18(int) Not 488
 | 
			
		||||
                              Store 20(i) 489
 | 
			
		||||
             490:   186(bool) Load 313(b)
 | 
			
		||||
             491:   186(bool) LogicalNot 490
 | 
			
		||||
                              Store 313(b) 491
 | 
			
		||||
             494:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 497 None
 | 
			
		||||
                              BranchConditional 494 496 506
 | 
			
		||||
             496:               Label
 | 
			
		||||
             498:     18(int)   Load 20(i)
 | 
			
		||||
             499:    6(float)   ConvertSToF 498
 | 
			
		||||
             500:    7(fvec4)   CompositeConstruct 499 499 499 499
 | 
			
		||||
             501:    6(float)   Load 196(f)
 | 
			
		||||
             502:    7(fvec4)   CompositeConstruct 501 501 501 501
 | 
			
		||||
             503:    7(fvec4)   FAdd 500 502
 | 
			
		||||
             504:    7(fvec4)   Load 9(v)
 | 
			
		||||
             505:    7(fvec4)   FAdd 503 504
 | 
			
		||||
                                Store 495 505
 | 
			
		||||
                                Branch 497
 | 
			
		||||
             506:               Label
 | 
			
		||||
             507:    7(fvec4)   Load 9(v)
 | 
			
		||||
                                Store 495 507
 | 
			
		||||
                                Branch 497
 | 
			
		||||
             497:             Label
 | 
			
		||||
             508:    7(fvec4) Load 495
 | 
			
		||||
                              Store 493(FragColor) 508
 | 
			
		||||
                              Store 511(m1) 517
 | 
			
		||||
                              Store 518(m2) 520
 | 
			
		||||
             521:   186(bool) Load 313(b)
 | 
			
		||||
                              SelectionMerge 524 None
 | 
			
		||||
                              BranchConditional 521 523 526
 | 
			
		||||
             523:               Label
 | 
			
		||||
             525:         509   Load 511(m1)
 | 
			
		||||
                                Store 522 525
 | 
			
		||||
                                Branch 524
 | 
			
		||||
             526:               Label
 | 
			
		||||
             527:         509   Load 518(m2)
 | 
			
		||||
                                Store 522 527
 | 
			
		||||
                                Branch 524
 | 
			
		||||
             524:             Label
 | 
			
		||||
             528:      8(ptr) AccessChain 522 413
 | 
			
		||||
             529:    7(fvec4) Load 528
 | 
			
		||||
             530:    7(fvec4) Load 493(FragColor)
 | 
			
		||||
             531:    7(fvec4) FAdd 530 529
 | 
			
		||||
                              Store 493(FragColor) 531
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
 | 
			
		||||
@ -55,9 +55,10 @@ void main()
 | 
			
		||||
    v += ceil(v);
 | 
			
		||||
    v += fract(v);
 | 
			
		||||
    v += mod(v, v);
 | 
			
		||||
	v += mod(v, v.x);
 | 
			
		||||
    v += mod(v, v.x);
 | 
			
		||||
 | 
			
		||||
    v += modf(v, v);
 | 
			
		||||
    v += modf(v, v.yzxw);
 | 
			
		||||
 | 
			
		||||
    v += min(v, uv4);
 | 
			
		||||
    v += max(v, uv4);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user