blob: 91c81d89985960a1b2b32093436286c757c1322d [file] [log] [blame]
bug/tint/948.wgsl:146:33 warning: 'textureSampleBias' must only be called from uniform control flow
let x_217 : vec4<f32> = textureSampleBias(animationMapTexture, animationMapSampler, vec2<f32>(((x_208 + 0.5) / x_211), (0.125 * x_214)), 0.0);
^^^^^^^^^^^^^^^^^
bug/tint/948.wgsl:138:9 note: control flow depends on non-uniform value
if ((x_197 > x_198)) {
^^
bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' may result in a non-uniform value
let x_198 : f32 = mt;
^^
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 378
; Schema: 0
OpCapability Shader
%131 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %tUV_param_1 %tileID_1_param_1 %levelUnits_param_1 %stageUnits_1_param_1 %vPosition_param_1 %vUV_param_1 %glFragColor_1_1
OpExecutionMode %main OriginUpperLeft
OpName %tUV_param_1 "tUV_param_1"
OpName %tileID_1_param_1 "tileID_1_param_1"
OpName %levelUnits_param_1 "levelUnits_param_1"
OpName %stageUnits_1_param_1 "stageUnits_1_param_1"
OpName %vPosition_param_1 "vPosition_param_1"
OpName %vUV_param_1 "vUV_param_1"
OpName %glFragColor_1_1 "glFragColor_1_1"
OpName %LeftOver "LeftOver"
OpMemberName %LeftOver 0 "time"
OpMemberName %LeftOver 1 "padding"
OpMemberName %LeftOver 2 "worldViewProjection"
OpMemberName %LeftOver 3 "outputSize"
OpMemberName %LeftOver 4 "stageSize"
OpMemberName %LeftOver 5 "spriteMapSize"
OpMemberName %LeftOver 6 "stageScale"
OpMemberName %LeftOver 7 "spriteCount"
OpMemberName %LeftOver 8 "colorMul"
OpName %x_20 "x_20"
OpName %frameMapTexture "frameMapTexture"
OpName %frameMapSampler "frameMapSampler"
OpName %tUV "tUV"
OpName %tileMapsTexture0 "tileMapsTexture0"
OpName %tileMapsSampler "tileMapsSampler"
OpName %tileMapsTexture1 "tileMapsTexture1"
OpName %animationMapTexture "animationMapTexture"
OpName %animationMapSampler "animationMapSampler"
OpName %mt "mt"
OpName %spriteSheetTexture "spriteSheetTexture"
OpName %spriteSheetSampler "spriteSheetSampler"
OpName %glFragColor "glFragColor"
OpName %tileID_1 "tileID_1"
OpName %levelUnits "levelUnits"
OpName %stageUnits_1 "stageUnits_1"
OpName %vPosition "vPosition"
OpName %vUV "vUV"
OpName %getFrameData_f1_ "getFrameData_f1_"
OpName %frameID "frameID"
OpName %fX "fX"
OpName %main_1 "main_1"
OpName %color "color"
OpName %tileUV "tileUV"
OpName %tileID "tileID"
OpName %sheetUnits "sheetUnits"
OpName %spriteUnits "spriteUnits"
OpName %stageUnits "stageUnits"
OpName %i "i"
OpName %frameID_1 "frameID_1"
OpName %animationData "animationData"
OpName %f "f"
OpName %frameData "frameData"
OpName %param "param"
OpName %frameSize "frameSize"
OpName %offset_1 "offset_1"
OpName %ratio "ratio"
OpName %nc "nc"
OpName %alpha "alpha"
OpName %mixed "mixed"
OpName %main_out "main_out"
OpMemberName %main_out 0 "glFragColor_1"
OpName %main_inner "main_inner"
OpName %tUV_param "tUV_param"
OpName %tileID_1_param "tileID_1_param"
OpName %levelUnits_param "levelUnits_param"
OpName %stageUnits_1_param "stageUnits_1_param"
OpName %vPosition_param "vPosition_param"
OpName %vUV_param "vUV_param"
OpName %main "main"
OpDecorate %tUV_param_1 Location 2
OpDecorate %tileID_1_param_1 Location 5
OpDecorate %levelUnits_param_1 Location 4
OpDecorate %stageUnits_1_param_1 Location 3
OpDecorate %vPosition_param_1 Location 0
OpDecorate %vUV_param_1 Location 1
OpDecorate %glFragColor_1_1 Location 0
OpDecorate %LeftOver Block
OpMemberDecorate %LeftOver 0 Offset 0
OpMemberDecorate %LeftOver 1 Offset 4
OpMemberDecorate %LeftOver 2 Offset 16
OpMemberDecorate %LeftOver 2 ColMajor
OpMemberDecorate %LeftOver 2 MatrixStride 16
OpMemberDecorate %LeftOver 3 Offset 80
OpMemberDecorate %LeftOver 4 Offset 88
OpMemberDecorate %LeftOver 5 Offset 96
OpMemberDecorate %LeftOver 6 Offset 104
OpMemberDecorate %LeftOver 7 Offset 108
OpMemberDecorate %LeftOver 8 Offset 112
OpDecorate %x_20 NonWritable
OpDecorate %x_20 DescriptorSet 2
OpDecorate %x_20 Binding 9
OpDecorate %frameMapTexture DescriptorSet 2
OpDecorate %frameMapTexture Binding 3
OpDecorate %frameMapSampler DescriptorSet 2
OpDecorate %frameMapSampler Binding 2
OpDecorate %tileMapsTexture0 DescriptorSet 2
OpDecorate %tileMapsTexture0 Binding 5
OpDecorate %tileMapsSampler DescriptorSet 2
OpDecorate %tileMapsSampler Binding 4
OpDecorate %tileMapsTexture1 DescriptorSet 2
OpDecorate %tileMapsTexture1 Binding 6
OpDecorate %animationMapTexture DescriptorSet 2
OpDecorate %animationMapTexture Binding 8
OpDecorate %animationMapSampler DescriptorSet 2
OpDecorate %animationMapSampler Binding 7
OpDecorate %spriteSheetTexture DescriptorSet 2
OpDecorate %spriteSheetTexture Binding 1
OpDecorate %spriteSheetSampler DescriptorSet 2
OpDecorate %spriteSheetSampler Binding 0
OpMemberDecorate %main_out 0 Offset 0
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%tUV_param_1 = OpVariable %_ptr_Input_v2float Input
%tileID_1_param_1 = OpVariable %_ptr_Input_v2float Input
%levelUnits_param_1 = OpVariable %_ptr_Input_v2float Input
%stageUnits_1_param_1 = OpVariable %_ptr_Input_v2float Input
%v3float = OpTypeVector %float 3
%_ptr_Input_v3float = OpTypePointer Input %v3float
%vPosition_param_1 = OpVariable %_ptr_Input_v3float Input
%vUV_param_1 = OpVariable %_ptr_Input_v2float Input
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%15 = OpConstantNull %v4float
%glFragColor_1_1 = OpVariable %_ptr_Output_v4float Output %15
%uint = OpTypeInt 32 0
%mat4v4float = OpTypeMatrix %v4float 4
%LeftOver = OpTypeStruct %float %uint %mat4v4float %v2float %v2float %v2float %float %float %v3float
%_ptr_Uniform_LeftOver = OpTypePointer Uniform %LeftOver
%x_20 = OpVariable %_ptr_Uniform_LeftOver Uniform
%23 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23
%frameMapTexture = OpVariable %_ptr_UniformConstant_23 UniformConstant
%26 = OpTypeSampler
%_ptr_UniformConstant_26 = OpTypePointer UniformConstant %26
%frameMapSampler = OpVariable %_ptr_UniformConstant_26 UniformConstant
%_ptr_Private_v2float = OpTypePointer Private %v2float
%29 = OpConstantNull %v2float
%tUV = OpVariable %_ptr_Private_v2float Private %29
%tileMapsTexture0 = OpVariable %_ptr_UniformConstant_23 UniformConstant
%tileMapsSampler = OpVariable %_ptr_UniformConstant_26 UniformConstant
%tileMapsTexture1 = OpVariable %_ptr_UniformConstant_23 UniformConstant
%animationMapTexture = OpVariable %_ptr_UniformConstant_23 UniformConstant
%animationMapSampler = OpVariable %_ptr_UniformConstant_26 UniformConstant
%_ptr_Private_float = OpTypePointer Private %float
%37 = OpConstantNull %float
%mt = OpVariable %_ptr_Private_float Private %37
%spriteSheetTexture = OpVariable %_ptr_UniformConstant_23 UniformConstant
%spriteSheetSampler = OpVariable %_ptr_UniformConstant_26 UniformConstant
%_ptr_Private_v4float = OpTypePointer Private %v4float
%glFragColor = OpVariable %_ptr_Private_v4float Private %15
%tileID_1 = OpVariable %_ptr_Private_v2float Private %29
%levelUnits = OpVariable %_ptr_Private_v2float Private %29
%stageUnits_1 = OpVariable %_ptr_Private_v2float Private %29
%_ptr_Private_v3float = OpTypePointer Private %v3float
%47 = OpConstantNull %v3float
%vPosition = OpVariable %_ptr_Private_v3float Private %47
%vUV = OpVariable %_ptr_Private_v2float Private %29
%_ptr_Function_float = OpTypePointer Function %float
%49 = OpTypeFunction %mat4v4float %_ptr_Function_float
%uint_7 = OpConstant %uint 7
%_ptr_Uniform_float = OpTypePointer Uniform %float
%66 = OpTypeSampledImage %23
%float_0_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5
%void = OpTypeVoid
%99 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%114 = OpConstantNull %int
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%120 = OpConstantNull %mat4v4float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%uint_1 = OpConstant %uint 1
%float_1 = OpConstant %float 1
%uint_5 = OpConstant %uint 5
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%144 = OpConstantComposite %v2float %float_1 %float_1
%uint_4 = OpConstant %uint 4
%int_2 = OpConstant %int 2
%bool = OpTypeBool
%176 = OpConstantComposite %v2float %float_0_5 %float_0_5
%uint_0 = OpConstant %uint 0
%uint_2 = OpConstant %uint 2
%float_8 = OpConstant %float 8
%float_0_125 = OpConstant %float 0.125
%uint_3 = OpConstant %uint 3
%int_1 = OpConstant %int 1
%uint_8 = OpConstant %uint 8
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main_out = OpTypeStruct %v4float
%355 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float
%getFrameData_f1_ = OpFunction %mat4v4float None %49
%frameID = OpFunctionParameter %_ptr_Function_float
%53 = OpLabel
%fX = OpVariable %_ptr_Function_float Function %37
%56 = OpLoad %float %frameID
%59 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%60 = OpLoad %float %59
%61 = OpFDiv %float %56 %60
OpStore %fX %61
%62 = OpLoad %float %fX
%64 = OpLoad %26 %frameMapSampler
%65 = OpLoad %23 %frameMapTexture
%67 = OpSampledImage %66 %65 %64
%68 = OpCompositeConstruct %v2float %62 %37
%63 = OpImageSampleImplicitLod %v4float %67 %68 Bias %37
%69 = OpLoad %float %fX
%71 = OpLoad %26 %frameMapSampler
%72 = OpLoad %23 %frameMapTexture
%73 = OpSampledImage %66 %72 %71
%75 = OpCompositeConstruct %v2float %69 %float_0_25
%70 = OpImageSampleImplicitLod %v4float %73 %75 Bias %37
%76 = OpLoad %float %fX
%78 = OpLoad %26 %frameMapSampler
%79 = OpLoad %23 %frameMapTexture
%80 = OpSampledImage %66 %79 %78
%82 = OpCompositeConstruct %v2float %76 %float_0_5
%77 = OpImageSampleImplicitLod %v4float %80 %82 Bias %37
%83 = OpCompositeExtract %float %63 0
%84 = OpCompositeExtract %float %63 1
%85 = OpCompositeExtract %float %63 2
%86 = OpCompositeExtract %float %63 3
%87 = OpCompositeConstruct %v4float %83 %84 %85 %86
%88 = OpCompositeExtract %float %70 0
%89 = OpCompositeExtract %float %70 1
%90 = OpCompositeExtract %float %70 2
%91 = OpCompositeExtract %float %70 3
%92 = OpCompositeConstruct %v4float %88 %89 %90 %91
%93 = OpCompositeExtract %float %77 0
%94 = OpCompositeExtract %float %77 1
%95 = OpCompositeExtract %float %77 2
%96 = OpCompositeExtract %float %77 3
%97 = OpCompositeConstruct %v4float %93 %94 %95 %96
%98 = OpCompositeConstruct %mat4v4float %87 %92 %97 %15
OpReturnValue %98
OpFunctionEnd
%main_1 = OpFunction %void None %99
%102 = OpLabel
%color = OpVariable %_ptr_Function_v4float Function %15
%tileUV = OpVariable %_ptr_Function_v2float Function %29
%tileID = OpVariable %_ptr_Function_v2float Function %29
%sheetUnits = OpVariable %_ptr_Function_v2float Function %29
%spriteUnits = OpVariable %_ptr_Function_float Function %37
%stageUnits = OpVariable %_ptr_Function_v2float Function %29
%i = OpVariable %_ptr_Function_int Function %114
%frameID_1 = OpVariable %_ptr_Function_float Function %37
%animationData = OpVariable %_ptr_Function_v4float Function %15
%f = OpVariable %_ptr_Function_float Function %37
%frameData = OpVariable %_ptr_Function_mat4v4float Function %120
%param = OpVariable %_ptr_Function_float Function %37
%frameSize = OpVariable %_ptr_Function_v2float Function %29
%offset_1 = OpVariable %_ptr_Function_v2float Function %29
%ratio = OpVariable %_ptr_Function_v2float Function %29
%nc = OpVariable %_ptr_Function_v4float Function %15
%alpha = OpVariable %_ptr_Function_float Function %37
%mixed = OpVariable %_ptr_Function_v3float Function %47
OpStore %color %15
%129 = OpLoad %v2float %tUV
%130 = OpExtInst %v2float %131 Fract %129
OpStore %tileUV %130
%133 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%134 = OpLoad %float %133
%135 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%137 = OpFSub %float %float_1 %134
OpStore %135 %137
%138 = OpLoad %v2float %tUV
%139 = OpExtInst %v2float %131 Floor %138
OpStore %tileID %139
%142 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%143 = OpLoad %v2float %142
%145 = OpFDiv %v2float %144 %143
OpStore %sheetUnits %145
%146 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%147 = OpLoad %float %146
%148 = OpFDiv %float %float_1 %147
OpStore %spriteUnits %148
%150 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%151 = OpLoad %v2float %150
%152 = OpFDiv %v2float %144 %151
OpStore %stageUnits %152
OpStore %i %114
OpBranch %153
%153 = OpLabel
OpLoopMerge %154 %155 None
OpBranch %156
%156 = OpLabel
%157 = OpLoad %int %i
%159 = OpSLessThan %bool %157 %int_2
OpSelectionMerge %161 None
OpBranchConditional %159 %162 %163
%162 = OpLabel
OpBranch %161
%163 = OpLabel
OpBranch %154
%161 = OpLabel
%164 = OpLoad %int %i
OpSelectionMerge %165 None
OpSwitch %164 %166 1 %167 0 %168
%167 = OpLabel
%169 = OpLoad %v2float %tileID
%170 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%171 = OpLoad %v2float %170
%173 = OpLoad %26 %tileMapsSampler
%174 = OpLoad %23 %tileMapsTexture1
%175 = OpSampledImage %66 %174 %173
%177 = OpFAdd %v2float %169 %176
%178 = OpFDiv %v2float %177 %171
%172 = OpImageSampleImplicitLod %v4float %175 %178 Bias %37
%179 = OpCompositeExtract %float %172 0
OpStore %frameID_1 %179
OpBranch %165
%168 = OpLabel
%180 = OpLoad %v2float %tileID
%181 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%182 = OpLoad %v2float %181
%184 = OpLoad %26 %tileMapsSampler
%185 = OpLoad %23 %tileMapsTexture0
%186 = OpSampledImage %66 %185 %184
%187 = OpFAdd %v2float %180 %176
%188 = OpFDiv %v2float %187 %182
%183 = OpImageSampleImplicitLod %v4float %186 %188 Bias %37
%189 = OpCompositeExtract %float %183 0
OpStore %frameID_1 %189
OpBranch %165
%166 = OpLabel
OpBranch %165
%165 = OpLabel
%190 = OpLoad %float %frameID_1
%191 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%192 = OpLoad %float %191
%194 = OpLoad %26 %animationMapSampler
%195 = OpLoad %23 %animationMapTexture
%196 = OpSampledImage %66 %195 %194
%197 = OpFAdd %float %190 %float_0_5
%198 = OpFDiv %float %197 %192
%199 = OpCompositeConstruct %v2float %198 %37
%193 = OpImageSampleImplicitLod %v4float %196 %199 Bias %37
OpStore %animationData %193
%200 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%201 = OpLoad %float %200
%202 = OpFOrdGreaterThan %bool %201 %37
OpSelectionMerge %203 None
OpBranchConditional %202 %204 %203
%204 = OpLabel
%206 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0
%207 = OpLoad %float %206
%209 = OpAccessChain %_ptr_Function_float %animationData %uint_2
%210 = OpLoad %float %209
%211 = OpFMul %float %207 %210
%212 = OpFRem %float %211 %float_1
OpStore %mt %212
OpStore %f %37
OpBranch %213
%213 = OpLabel
OpLoopMerge %214 %215 None
OpBranch %216
%216 = OpLabel
%217 = OpLoad %float %f
%219 = OpFOrdLessThan %bool %217 %float_8
OpSelectionMerge %220 None
OpBranchConditional %219 %221 %222
%221 = OpLabel
OpBranch %220
%222 = OpLabel
OpBranch %214
%220 = OpLabel
%223 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%224 = OpLoad %float %223
%225 = OpLoad %float %mt
%226 = OpFOrdGreaterThan %bool %224 %225
OpSelectionMerge %227 None
OpBranchConditional %226 %228 %227
%228 = OpLabel
%229 = OpAccessChain %_ptr_Function_float %animationData %uint_0
%230 = OpLoad %float %229
OpStore %frameID_1 %230
OpBranch %214
%227 = OpLabel
%231 = OpLoad %float %frameID_1
%232 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%233 = OpLoad %float %232
%234 = OpLoad %float %f
%236 = OpLoad %26 %animationMapSampler
%237 = OpLoad %23 %animationMapTexture
%238 = OpSampledImage %66 %237 %236
%239 = OpFAdd %float %231 %float_0_5
%240 = OpFDiv %float %239 %233
%242 = OpFMul %float %float_0_125 %234
%243 = OpCompositeConstruct %v2float %240 %242
%235 = OpImageSampleImplicitLod %v4float %238 %243 Bias %37
OpStore %animationData %235
OpBranch %215
%215 = OpLabel
%244 = OpLoad %float %f
%245 = OpFAdd %float %244 %float_1
OpStore %f %245
OpBranch %213
%214 = OpLabel
OpBranch %203
%203 = OpLabel
%246 = OpLoad %float %frameID_1
%247 = OpFAdd %float %246 %float_0_5
OpStore %param %247
%248 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
OpStore %frameData %248
%250 = OpAccessChain %_ptr_Function_v4float %frameData %114
%251 = OpLoad %v4float %250
%252 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%253 = OpLoad %v2float %252
%254 = OpCompositeExtract %float %251 3
%255 = OpCompositeExtract %float %251 2
%256 = OpCompositeConstruct %v2float %254 %255
%257 = OpFDiv %v2float %256 %253
OpStore %frameSize %257
%258 = OpAccessChain %_ptr_Function_v4float %frameData %114
%259 = OpLoad %v4float %258
%260 = OpLoad %v2float %sheetUnits
%261 = OpCompositeExtract %float %259 0
%262 = OpCompositeExtract %float %259 1
%263 = OpCompositeConstruct %v2float %261 %262
%264 = OpFMul %v2float %263 %260
OpStore %offset_1 %264
%265 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
%266 = OpLoad %v4float %265
%267 = OpAccessChain %_ptr_Function_v4float %frameData %114
%268 = OpLoad %v4float %267
%269 = OpCompositeExtract %float %266 0
%270 = OpCompositeExtract %float %266 1
%271 = OpCompositeConstruct %v2float %269 %270
%272 = OpCompositeExtract %float %268 3
%273 = OpCompositeExtract %float %268 2
%274 = OpCompositeConstruct %v2float %272 %273
%275 = OpFDiv %v2float %271 %274
OpStore %ratio %275
%276 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2
%277 = OpLoad %float %276
%278 = OpFOrdEqual %bool %277 %float_1
OpSelectionMerge %279 None
OpBranchConditional %278 %280 %279
%280 = OpLabel
%281 = OpLoad %v2float %tileUV
%282 = OpCompositeExtract %float %281 1
%283 = OpCompositeExtract %float %281 0
%284 = OpCompositeConstruct %v2float %282 %283
OpStore %tileUV %284
OpBranch %279
%279 = OpLabel
%285 = OpLoad %int %i
%286 = OpIEqual %bool %285 %114
OpSelectionMerge %287 None
OpBranchConditional %286 %288 %289
%288 = OpLabel
%290 = OpLoad %v2float %tileUV
%291 = OpLoad %v2float %frameSize
%292 = OpLoad %v2float %offset_1
%294 = OpLoad %26 %spriteSheetSampler
%295 = OpLoad %23 %spriteSheetTexture
%296 = OpSampledImage %66 %295 %294
%297 = OpFMul %v2float %290 %291
%298 = OpFAdd %v2float %297 %292
%293 = OpImageSampleImplicitLod %v4float %296 %298
OpStore %color %293
OpBranch %287
%289 = OpLabel
%299 = OpLoad %v2float %tileUV
%300 = OpLoad %v2float %frameSize
%301 = OpLoad %v2float %offset_1
%303 = OpLoad %26 %spriteSheetSampler
%304 = OpLoad %23 %spriteSheetTexture
%305 = OpSampledImage %66 %304 %303
%306 = OpFMul %v2float %299 %300
%307 = OpFAdd %v2float %306 %301
%302 = OpImageSampleImplicitLod %v4float %305 %307
OpStore %nc %302
%309 = OpAccessChain %_ptr_Function_float %color %uint_3
%310 = OpLoad %float %309
%311 = OpAccessChain %_ptr_Function_float %nc %uint_3
%312 = OpLoad %float %311
%314 = OpFAdd %float %310 %312
%313 = OpExtInst %float %131 NMin %314 %float_1
OpStore %alpha %313
%315 = OpLoad %v4float %color
%316 = OpLoad %v4float %nc
%317 = OpAccessChain %_ptr_Function_float %nc %uint_3
%318 = OpLoad %float %317
%320 = OpCompositeExtract %float %315 0
%321 = OpCompositeExtract %float %315 1
%322 = OpCompositeExtract %float %315 2
%323 = OpCompositeConstruct %v3float %320 %321 %322
%324 = OpCompositeExtract %float %316 0
%325 = OpCompositeExtract %float %316 1
%326 = OpCompositeExtract %float %316 2
%327 = OpCompositeConstruct %v3float %324 %325 %326
%328 = OpCompositeConstruct %v3float %318 %318 %318
%319 = OpExtInst %v3float %131 FMix %323 %327 %328
OpStore %mixed %319
%329 = OpLoad %v3float %mixed
%330 = OpLoad %float %alpha
%331 = OpCompositeExtract %float %329 0
%332 = OpCompositeExtract %float %329 1
%333 = OpCompositeExtract %float %329 2
%334 = OpCompositeConstruct %v4float %331 %332 %333 %330
OpStore %color %334
OpBranch %287
%287 = OpLabel
OpBranch %155
%155 = OpLabel
%335 = OpLoad %int %i
%337 = OpIAdd %int %335 %int_1
OpStore %i %337
OpBranch %153
%154 = OpLabel
%340 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8
%341 = OpLoad %v3float %340
%342 = OpLoad %v4float %color
%343 = OpCompositeExtract %float %342 0
%344 = OpCompositeExtract %float %342 1
%345 = OpCompositeExtract %float %342 2
%346 = OpCompositeConstruct %v3float %343 %344 %345
%347 = OpFMul %v3float %346 %341
%348 = OpLoad %v4float %color
%349 = OpCompositeExtract %float %347 0
%350 = OpCompositeExtract %float %347 1
%351 = OpCompositeExtract %float %347 2
%352 = OpCompositeExtract %float %348 3
%353 = OpCompositeConstruct %v4float %349 %350 %351 %352
OpStore %color %353
%354 = OpLoad %v4float %color
OpStore %glFragColor %354
OpReturn
OpFunctionEnd
%main_inner = OpFunction %main_out None %355
%tUV_param = OpFunctionParameter %v2float
%tileID_1_param = OpFunctionParameter %v2float
%levelUnits_param = OpFunctionParameter %v2float
%stageUnits_1_param = OpFunctionParameter %v2float
%vPosition_param = OpFunctionParameter %v3float
%vUV_param = OpFunctionParameter %v2float
%364 = OpLabel
OpStore %tUV %tUV_param
OpStore %tileID_1 %tileID_1_param
OpStore %levelUnits %levelUnits_param
OpStore %stageUnits_1 %stageUnits_1_param
OpStore %vPosition %vPosition_param
OpStore %vUV %vUV_param
%365 = OpFunctionCall %void %main_1
%366 = OpLoad %v4float %glFragColor
%367 = OpCompositeConstruct %main_out %366
OpReturnValue %367
OpFunctionEnd
%main = OpFunction %void None %99
%369 = OpLabel
%371 = OpLoad %v2float %tUV_param_1
%372 = OpLoad %v2float %tileID_1_param_1
%373 = OpLoad %v2float %levelUnits_param_1
%374 = OpLoad %v2float %stageUnits_1_param_1
%375 = OpLoad %v3float %vPosition_param_1
%376 = OpLoad %v2float %vUV_param_1
%370 = OpFunctionCall %main_out %main_inner %371 %372 %373 %374 %375 %376
%377 = OpCompositeExtract %v4float %370 0
OpStore %glFragColor_1_1 %377
OpReturn
OpFunctionEnd