blob: 51c0bb08ade37a0bf035baf93d2bdfdccce2af43 [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 386
; Schema: 0
OpCapability Shader
%138 = 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 = OpConstant %float 0
%float_0_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5
%99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%void = OpTypeVoid
%106 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%121 = OpConstantNull %int
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%127 = 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
%151 = OpConstantComposite %v2float %float_1 %float_1
%uint_4 = OpConstant %uint 4
%int_0 = OpConstant %int 0
%int_2 = OpConstant %int 2
%bool = OpTypeBool
%184 = 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
%363 = 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
%69 = OpCompositeConstruct %v2float %62 %float_0
%63 = OpImageSampleImplicitLod %v4float %67 %69 Bias %float_0
%70 = OpLoad %float %fX
%72 = OpLoad %26 %frameMapSampler
%73 = OpLoad %23 %frameMapTexture
%74 = OpSampledImage %66 %73 %72
%76 = OpCompositeConstruct %v2float %70 %float_0_25
%71 = OpImageSampleImplicitLod %v4float %74 %76 Bias %float_0
%77 = OpLoad %float %fX
%79 = OpLoad %26 %frameMapSampler
%80 = OpLoad %23 %frameMapTexture
%81 = OpSampledImage %66 %80 %79
%83 = OpCompositeConstruct %v2float %77 %float_0_5
%78 = OpImageSampleImplicitLod %v4float %81 %83 Bias %float_0
%84 = OpCompositeExtract %float %63 0
%85 = OpCompositeExtract %float %63 1
%86 = OpCompositeExtract %float %63 2
%87 = OpCompositeExtract %float %63 3
%88 = OpCompositeConstruct %v4float %84 %85 %86 %87
%89 = OpCompositeExtract %float %71 0
%90 = OpCompositeExtract %float %71 1
%91 = OpCompositeExtract %float %71 2
%92 = OpCompositeExtract %float %71 3
%93 = OpCompositeConstruct %v4float %89 %90 %91 %92
%94 = OpCompositeExtract %float %78 0
%95 = OpCompositeExtract %float %78 1
%96 = OpCompositeExtract %float %78 2
%97 = OpCompositeExtract %float %78 3
%98 = OpCompositeConstruct %v4float %94 %95 %96 %97
%100 = OpCompositeExtract %float %99 0
%101 = OpCompositeExtract %float %99 1
%102 = OpCompositeExtract %float %99 2
%103 = OpCompositeExtract %float %99 3
%104 = OpCompositeConstruct %v4float %100 %101 %102 %103
%105 = OpCompositeConstruct %mat4v4float %88 %93 %98 %104
OpReturnValue %105
OpFunctionEnd
%main_1 = OpFunction %void None %106
%109 = 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 %121
%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 %127
%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 %99
%136 = OpLoad %v2float %tUV
%137 = OpExtInst %v2float %138 Fract %136
OpStore %tileUV %137
%140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%141 = OpLoad %float %140
%142 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%144 = OpFSub %float %float_1 %141
OpStore %142 %144
%145 = OpLoad %v2float %tUV
%146 = OpExtInst %v2float %138 Floor %145
OpStore %tileID %146
%149 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%150 = OpLoad %v2float %149
%152 = OpFDiv %v2float %151 %150
OpStore %sheetUnits %152
%153 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%154 = OpLoad %float %153
%155 = OpFDiv %float %float_1 %154
OpStore %spriteUnits %155
%157 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%158 = OpLoad %v2float %157
%159 = OpFDiv %v2float %151 %158
OpStore %stageUnits %159
OpStore %i %int_0
OpBranch %161
%161 = OpLabel
OpLoopMerge %162 %163 None
OpBranch %164
%164 = OpLabel
%165 = OpLoad %int %i
%167 = OpSLessThan %bool %165 %int_2
OpSelectionMerge %169 None
OpBranchConditional %167 %170 %171
%170 = OpLabel
OpBranch %169
%171 = OpLabel
OpBranch %162
%169 = OpLabel
%172 = OpLoad %int %i
OpSelectionMerge %173 None
OpSwitch %172 %174 1 %175 0 %176
%175 = OpLabel
%177 = OpLoad %v2float %tileID
%178 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%179 = OpLoad %v2float %178
%181 = OpLoad %26 %tileMapsSampler
%182 = OpLoad %23 %tileMapsTexture1
%183 = OpSampledImage %66 %182 %181
%185 = OpFAdd %v2float %177 %184
%186 = OpFDiv %v2float %185 %179
%180 = OpImageSampleImplicitLod %v4float %183 %186 Bias %float_0
%187 = OpCompositeExtract %float %180 0
OpStore %frameID_1 %187
OpBranch %173
%176 = OpLabel
%188 = OpLoad %v2float %tileID
%189 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%190 = OpLoad %v2float %189
%192 = OpLoad %26 %tileMapsSampler
%193 = OpLoad %23 %tileMapsTexture0
%194 = OpSampledImage %66 %193 %192
%195 = OpFAdd %v2float %188 %184
%196 = OpFDiv %v2float %195 %190
%191 = OpImageSampleImplicitLod %v4float %194 %196 Bias %float_0
%197 = OpCompositeExtract %float %191 0
OpStore %frameID_1 %197
OpBranch %173
%174 = OpLabel
OpBranch %173
%173 = OpLabel
%198 = OpLoad %float %frameID_1
%199 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%200 = OpLoad %float %199
%202 = OpLoad %26 %animationMapSampler
%203 = OpLoad %23 %animationMapTexture
%204 = OpSampledImage %66 %203 %202
%205 = OpFAdd %float %198 %float_0_5
%206 = OpFDiv %float %205 %200
%207 = OpCompositeConstruct %v2float %206 %float_0
%201 = OpImageSampleImplicitLod %v4float %204 %207 Bias %float_0
OpStore %animationData %201
%208 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%209 = OpLoad %float %208
%210 = OpFOrdGreaterThan %bool %209 %float_0
OpSelectionMerge %211 None
OpBranchConditional %210 %212 %211
%212 = OpLabel
%214 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0
%215 = OpLoad %float %214
%217 = OpAccessChain %_ptr_Function_float %animationData %uint_2
%218 = OpLoad %float %217
%219 = OpFMul %float %215 %218
%220 = OpFRem %float %219 %float_1
OpStore %mt %220
OpStore %f %float_0
OpBranch %221
%221 = OpLabel
OpLoopMerge %222 %223 None
OpBranch %224
%224 = OpLabel
%225 = OpLoad %float %f
%227 = OpFOrdLessThan %bool %225 %float_8
OpSelectionMerge %228 None
OpBranchConditional %227 %229 %230
%229 = OpLabel
OpBranch %228
%230 = OpLabel
OpBranch %222
%228 = OpLabel
%231 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%232 = OpLoad %float %231
%233 = OpLoad %float %mt
%234 = OpFOrdGreaterThan %bool %232 %233
OpSelectionMerge %235 None
OpBranchConditional %234 %236 %235
%236 = OpLabel
%237 = OpAccessChain %_ptr_Function_float %animationData %uint_0
%238 = OpLoad %float %237
OpStore %frameID_1 %238
OpBranch %222
%235 = OpLabel
%239 = OpLoad %float %frameID_1
%240 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%241 = OpLoad %float %240
%242 = OpLoad %float %f
%244 = OpLoad %26 %animationMapSampler
%245 = OpLoad %23 %animationMapTexture
%246 = OpSampledImage %66 %245 %244
%247 = OpFAdd %float %239 %float_0_5
%248 = OpFDiv %float %247 %241
%250 = OpFMul %float %float_0_125 %242
%251 = OpCompositeConstruct %v2float %248 %250
%243 = OpImageSampleImplicitLod %v4float %246 %251 Bias %float_0
OpStore %animationData %243
OpBranch %223
%223 = OpLabel
%252 = OpLoad %float %f
%253 = OpFAdd %float %252 %float_1
OpStore %f %253
OpBranch %221
%222 = OpLabel
OpBranch %211
%211 = OpLabel
%254 = OpLoad %float %frameID_1
%255 = OpFAdd %float %254 %float_0_5
OpStore %param %255
%256 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
OpStore %frameData %256
%258 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
%259 = OpLoad %v4float %258
%260 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%261 = OpLoad %v2float %260
%262 = OpCompositeExtract %float %259 3
%263 = OpCompositeExtract %float %259 2
%264 = OpCompositeConstruct %v2float %262 %263
%265 = OpFDiv %v2float %264 %261
OpStore %frameSize %265
%266 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
%267 = OpLoad %v4float %266
%268 = OpLoad %v2float %sheetUnits
%269 = OpCompositeExtract %float %267 0
%270 = OpCompositeExtract %float %267 1
%271 = OpCompositeConstruct %v2float %269 %270
%272 = OpFMul %v2float %271 %268
OpStore %offset_1 %272
%273 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
%274 = OpLoad %v4float %273
%275 = OpAccessChain %_ptr_Function_v4float %frameData %int_0
%276 = OpLoad %v4float %275
%277 = OpCompositeExtract %float %274 0
%278 = OpCompositeExtract %float %274 1
%279 = OpCompositeConstruct %v2float %277 %278
%280 = OpCompositeExtract %float %276 3
%281 = OpCompositeExtract %float %276 2
%282 = OpCompositeConstruct %v2float %280 %281
%283 = OpFDiv %v2float %279 %282
OpStore %ratio %283
%284 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2
%285 = OpLoad %float %284
%286 = OpFOrdEqual %bool %285 %float_1
OpSelectionMerge %287 None
OpBranchConditional %286 %288 %287
%288 = OpLabel
%289 = OpLoad %v2float %tileUV
%290 = OpCompositeExtract %float %289 1
%291 = OpCompositeExtract %float %289 0
%292 = OpCompositeConstruct %v2float %290 %291
OpStore %tileUV %292
OpBranch %287
%287 = OpLabel
%293 = OpLoad %int %i
%294 = OpIEqual %bool %293 %int_0
OpSelectionMerge %295 None
OpBranchConditional %294 %296 %297
%296 = OpLabel
%298 = OpLoad %v2float %tileUV
%299 = OpLoad %v2float %frameSize
%300 = OpLoad %v2float %offset_1
%302 = OpLoad %26 %spriteSheetSampler
%303 = OpLoad %23 %spriteSheetTexture
%304 = OpSampledImage %66 %303 %302
%305 = OpFMul %v2float %298 %299
%306 = OpFAdd %v2float %305 %300
%301 = OpImageSampleImplicitLod %v4float %304 %306
OpStore %color %301
OpBranch %295
%297 = OpLabel
%307 = OpLoad %v2float %tileUV
%308 = OpLoad %v2float %frameSize
%309 = OpLoad %v2float %offset_1
%311 = OpLoad %26 %spriteSheetSampler
%312 = OpLoad %23 %spriteSheetTexture
%313 = OpSampledImage %66 %312 %311
%314 = OpFMul %v2float %307 %308
%315 = OpFAdd %v2float %314 %309
%310 = OpImageSampleImplicitLod %v4float %313 %315
OpStore %nc %310
%317 = OpAccessChain %_ptr_Function_float %color %uint_3
%318 = OpLoad %float %317
%319 = OpAccessChain %_ptr_Function_float %nc %uint_3
%320 = OpLoad %float %319
%322 = OpFAdd %float %318 %320
%321 = OpExtInst %float %138 NMin %322 %float_1
OpStore %alpha %321
%323 = OpLoad %v4float %color
%324 = OpLoad %v4float %nc
%325 = OpAccessChain %_ptr_Function_float %nc %uint_3
%326 = OpLoad %float %325
%328 = OpCompositeExtract %float %323 0
%329 = OpCompositeExtract %float %323 1
%330 = OpCompositeExtract %float %323 2
%331 = OpCompositeConstruct %v3float %328 %329 %330
%332 = OpCompositeExtract %float %324 0
%333 = OpCompositeExtract %float %324 1
%334 = OpCompositeExtract %float %324 2
%335 = OpCompositeConstruct %v3float %332 %333 %334
%336 = OpCompositeConstruct %v3float %326 %326 %326
%327 = OpExtInst %v3float %138 FMix %331 %335 %336
OpStore %mixed %327
%337 = OpLoad %v3float %mixed
%338 = OpLoad %float %alpha
%339 = OpCompositeExtract %float %337 0
%340 = OpCompositeExtract %float %337 1
%341 = OpCompositeExtract %float %337 2
%342 = OpCompositeConstruct %v4float %339 %340 %341 %338
OpStore %color %342
OpBranch %295
%295 = OpLabel
OpBranch %163
%163 = OpLabel
%343 = OpLoad %int %i
%345 = OpIAdd %int %343 %int_1
OpStore %i %345
OpBranch %161
%162 = OpLabel
%348 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8
%349 = OpLoad %v3float %348
%350 = OpLoad %v4float %color
%351 = OpCompositeExtract %float %350 0
%352 = OpCompositeExtract %float %350 1
%353 = OpCompositeExtract %float %350 2
%354 = OpCompositeConstruct %v3float %351 %352 %353
%355 = OpFMul %v3float %354 %349
%356 = OpLoad %v4float %color
%357 = OpCompositeExtract %float %355 0
%358 = OpCompositeExtract %float %355 1
%359 = OpCompositeExtract %float %355 2
%360 = OpCompositeExtract %float %356 3
%361 = OpCompositeConstruct %v4float %357 %358 %359 %360
OpStore %color %361
%362 = OpLoad %v4float %color
OpStore %glFragColor %362
OpReturn
OpFunctionEnd
%main_inner = OpFunction %main_out None %363
%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
%372 = 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
%373 = OpFunctionCall %void %main_1
%374 = OpLoad %v4float %glFragColor
%375 = OpCompositeConstruct %main_out %374
OpReturnValue %375
OpFunctionEnd
%main = OpFunction %void None %106
%377 = OpLabel
%379 = OpLoad %v2float %tUV_param_1
%380 = OpLoad %v2float %tileID_1_param_1
%381 = OpLoad %v2float %levelUnits_param_1
%382 = OpLoad %v2float %stageUnits_1_param_1
%383 = OpLoad %v3float %vPosition_param_1
%384 = OpLoad %v2float %vUV_param_1
%378 = OpFunctionCall %main_out %main_inner %379 %380 %381 %382 %383 %384
%385 = OpCompositeExtract %v4float %378 0
OpStore %glFragColor_1_1 %385
OpReturn
OpFunctionEnd