| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 640 |
| ; Schema: 0 |
| OpCapability Shader |
| %89 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint Fragment %main "main" %main_loc1_Input %main_loc0_Input %main_front_facing_Input %main_loc3_Input %main_loc2_Input %main_loc0_Output |
| OpExecutionMode %main OriginUpperLeft |
| OpName %u_Float "u_Float" |
| OpName %u_Color "u_Color" |
| OpName %TextureSamplerTexture "TextureSamplerTexture" |
| OpName %TextureSamplerSampler "TextureSamplerSampler" |
| OpName %vMainuv "vMainuv" |
| OpMemberName %LeftOver 0 "u_World" |
| OpMemberName %LeftOver 1 "u_ViewProjection" |
| OpMemberName %LeftOver 2 "u_bumpStrength" |
| OpMemberName %LeftOver 3 "padding" |
| OpMemberName %LeftOver 4 "u_cameraPosition" |
| OpMemberName %LeftOver 5 "u_parallaxScale" |
| OpMemberName %LeftOver 6 "textureInfoName" |
| OpMemberName %LeftOver 7 "padding_1" |
| OpMemberName %LeftOver 8 "tangentSpaceParameter0" |
| OpName %LeftOver "LeftOver" |
| OpMemberName %x_269_block 0 "inner" |
| OpName %x_269_block "x_269_block" |
| OpName %v_output1 "v_output1" |
| OpName %gl_FrontFacing "gl_FrontFacing" |
| OpName %v_uv "v_uv" |
| OpName %v_output2 "v_output2" |
| OpName %TextureSampler1Texture "TextureSampler1Texture" |
| OpName %TextureSampler1Sampler "TextureSampler1Sampler" |
| OpMemberName %Light0 0 "vLightData" |
| OpMemberName %Light0 1 "vLightDiffuse" |
| OpMemberName %Light0 2 "vLightSpecular" |
| OpMemberName %Light0 3 "vLightGround" |
| OpMemberName %Light0 4 "padding_2" |
| OpMemberName %Light0 5 "shadowsInfo" |
| OpMemberName %Light0 6 "depthValues" |
| OpName %Light0 "Light0" |
| OpMemberName %light0_block 0 "inner" |
| OpName %light0_block "light0_block" |
| OpName %glFragColor "glFragColor" |
| OpName %bumpSamplerSampler "bumpSamplerSampler" |
| OpName %bumpSamplerTexture "bumpSamplerTexture" |
| OpName %main_loc1_Input "main_loc1_Input" |
| OpName %main_loc0_Input "main_loc0_Input" |
| OpName %main_front_facing_Input "main_front_facing_Input" |
| OpName %main_loc3_Input "main_loc3_Input" |
| OpName %main_loc2_Input "main_loc2_Input" |
| OpName %main_loc0_Output "main_loc0_Output" |
| OpName %cotangent_frame_vf3_vf3_vf2_vf2_ "cotangent_frame_vf3_vf3_vf2_vf2_" |
| OpName %normal_1_root "normal_1_root" |
| OpName %p_root "p_root" |
| OpName %uv_root "uv_root" |
| OpName %tangentSpaceParams_root "tangentSpaceParams_root" |
| OpName %dp1 "dp1" |
| OpName %dp2 "dp2" |
| OpName %duv1 "duv1" |
| OpName %duv2 "duv2" |
| OpName %dp2perp "dp2perp" |
| OpName %dp1perp "dp1perp" |
| OpName %tangent "tangent" |
| OpName %bitangent "bitangent" |
| OpName %invmax "invmax" |
| OpName %x_133 "x_133" |
| OpName %x_136 "x_136" |
| OpName %x_139 "x_139" |
| OpName %x_142 "x_142" |
| OpName %x_145 "x_145" |
| OpName %x_146 "x_146" |
| OpName %x_149 "x_149" |
| OpName %x_150 "x_150" |
| OpName %x_153 "x_153" |
| OpName %x_155 "x_155" |
| OpName %x_157 "x_157" |
| OpName %x_159 "x_159" |
| OpName %x_163 "x_163" |
| OpName %x_165 "x_165" |
| OpName %x_167 "x_167" |
| OpName %x_169 "x_169" |
| OpName %x_173 "x_173" |
| OpName %x_174 "x_174" |
| OpName %x_177 "x_177" |
| OpName %x_178 "x_178" |
| OpName %x_181 "x_181" |
| OpName %x_182 "x_182" |
| OpName %x_184 "x_184" |
| OpName %x_185 "x_185" |
| OpName %x_189 "x_189" |
| OpName %x_190 "x_190" |
| OpName %x_191 "x_191" |
| OpName %x_192 "x_192" |
| OpName %x_193 "x_193" |
| OpName %x_194 "x_194" |
| OpName %x_195 "x_195" |
| OpName %transposeMat3_mf33_ "transposeMat3_mf33_" |
| OpName %inMatrix_root "inMatrix_root" |
| OpName %i0 "i0" |
| OpName %i1 "i1" |
| OpName %i2 "i2" |
| OpName %outMatrix "outMatrix" |
| OpName %x_60 "x_60" |
| OpName %x_64 "x_64" |
| OpName %x_68 "x_68" |
| OpName %x_73 "x_73" |
| OpName %x_75 "x_75" |
| OpName %x_77 "x_77" |
| OpName %x_78 "x_78" |
| OpName %x_81 "x_81" |
| OpName %x_83 "x_83" |
| OpName %x_85 "x_85" |
| OpName %x_86 "x_86" |
| OpName %x_89 "x_89" |
| OpName %x_91 "x_91" |
| OpName %x_93 "x_93" |
| OpName %x_94 "x_94" |
| OpName %x_110 "x_110" |
| OpName %perturbNormalBase_mf33_vf3_f1_ "perturbNormalBase_mf33_vf3_f1_" |
| OpName %cotangentFrame_root "cotangentFrame_root" |
| OpName %normal_root "normal_root" |
| OpName %scale_root "scale_root" |
| OpName %x_113 "x_113" |
| OpName %x_114 "x_114" |
| OpName %perturbNormal_mf33_vf3_f1_ "perturbNormal_mf33_vf3_f1_" |
| OpName %cotangentFrame_1_root "cotangentFrame_1_root" |
| OpName %textureSample_root "textureSample_root" |
| OpName %scale_1_root "scale_1_root" |
| OpName %param "param" |
| OpName %param_1 "param_1" |
| OpName %param_2 "param_2" |
| OpName %x_119 "x_119" |
| OpName %x_125 "x_125" |
| OpName %x_128 "x_128" |
| OpName %x_129 "x_129" |
| OpName %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ "computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_" |
| OpMemberName %lightingInfo 0 "diffuse" |
| OpMemberName %lightingInfo 1 "specular" |
| OpName %lightingInfo "lightingInfo" |
| OpName %viewDirectionW_root "viewDirectionW_root" |
| OpName %vNormal_root "vNormal_root" |
| OpName %lightData_root "lightData_root" |
| OpName %diffuseColor_root "diffuseColor_root" |
| OpName %specularColor_root "specularColor_root" |
| OpName %groundColor_root "groundColor_root" |
| OpName %glossiness_root "glossiness_root" |
| OpName %ndl "ndl" |
| OpName %result "result" |
| OpName %angleW "angleW" |
| OpName %specComp "specComp" |
| OpName %x_212 "x_212" |
| OpName %x_213 "x_213" |
| OpName %x_220 "x_220" |
| OpName %x_221 "x_221" |
| OpName %x_222 "x_222" |
| OpName %x_227 "x_227" |
| OpName %x_228 "x_228" |
| OpName %x_233 "x_233" |
| OpName %x_234 "x_234" |
| OpName %x_237 "x_237" |
| OpName %x_238 "x_238" |
| OpName %x_241 "x_241" |
| OpName %x_242 "x_242" |
| OpName %x_245 "x_245" |
| OpName %main_1 "main_1" |
| OpName %tempTextureRead "tempTextureRead" |
| OpName %rgb "rgb" |
| OpName %output5 "output5" |
| OpName %output4 "output4" |
| OpName %uvOffset "uvOffset" |
| OpName %normalScale "normalScale" |
| OpName %TBNUV "TBNUV" |
| OpName %x_299 "x_299" |
| OpName %TBN "TBN" |
| OpName %param_3 "param_3" |
| OpName %param_4 "param_4" |
| OpName %param_5 "param_5" |
| OpName %param_6 "param_6" |
| OpName %invTBN "invTBN" |
| OpName %param_7 "param_7" |
| OpName %parallaxLimit "parallaxLimit" |
| OpName %vOffsetDir "vOffsetDir" |
| OpName %vMaxOffset "vMaxOffset" |
| OpName %numSamples "numSamples" |
| OpName %stepSize "stepSize" |
| OpName %currRayHeight "currRayHeight" |
| OpName %vCurrOffset "vCurrOffset" |
| OpName %vLastOffset "vLastOffset" |
| OpName %lastSampledHeight "lastSampledHeight" |
| OpName %currSampledHeight "currSampledHeight" |
| OpName %i "i" |
| OpName %delta1 "delta1" |
| OpName %delta2 "delta2" |
| OpName %ratio "ratio" |
| OpName %parallaxOcclusion_0 "parallaxOcclusion_0" |
| OpName %param_8 "param_8" |
| OpName %param_9 "param_9" |
| OpName %param_10 "param_10" |
| OpName %output6 "output6" |
| OpName %tempTextureRead1 "tempTextureRead1" |
| OpName %rgb1 "rgb1" |
| OpName %viewDirectionW_1 "viewDirectionW_1" |
| OpName %shadow "shadow" |
| OpName %glossiness_1 "glossiness_1" |
| OpName %diffuseBase "diffuseBase" |
| OpName %specularBase "specularBase" |
| OpName %normalW "normalW" |
| OpName %info "info" |
| OpName %param_11 "param_11" |
| OpName %param_12 "param_12" |
| OpName %param_13 "param_13" |
| OpName %param_14 "param_14" |
| OpName %param_15 "param_15" |
| OpName %param_16 "param_16" |
| OpName %param_17 "param_17" |
| OpName %diffuseOutput "diffuseOutput" |
| OpName %specularOutput "specularOutput" |
| OpName %output3 "output3" |
| OpName %x_261 "x_261" |
| OpName %x_262 "x_262" |
| OpName %x_264 "x_264" |
| OpName %x_273 "x_273" |
| OpName %x_279 "x_279" |
| OpName %x_282 "x_282" |
| OpName %x_292 "x_292" |
| OpName %x_298 "x_298" |
| OpName %x_303 "x_303" |
| OpName %x_305 "x_305" |
| OpName %x_307 "x_307" |
| OpName %x_310 "x_310" |
| OpName %x_312 "x_312" |
| OpName %x_317 "x_317" |
| OpName %x_320 "x_320" |
| OpName %x_324 "x_324" |
| OpName %x_325 "x_325" |
| OpName %x_328 "x_328" |
| OpName %x_329 "x_329" |
| OpName %x_331 "x_331" |
| OpName %x_332 "x_332" |
| OpName %x_334 "x_334" |
| OpName %x_337 "x_337" |
| OpName %x_338 "x_338" |
| OpName %x_345 "x_345" |
| OpName %x_346 "x_346" |
| OpName %x_349 "x_349" |
| OpName %x_350 "x_350" |
| OpName %x_352 "x_352" |
| OpName %x_356 "x_356" |
| OpName %x_357 "x_357" |
| OpName %x_361 "x_361" |
| OpName %x_362 "x_362" |
| OpName %x_365 "x_365" |
| OpName %x_366 "x_366" |
| OpName %x_374 "x_374" |
| OpName %x_388 "x_388" |
| OpName %x_394 "x_394" |
| OpName %x_395 "x_395" |
| OpName %x_397 "x_397" |
| OpName %x_400 "x_400" |
| OpName %x_401 "x_401" |
| OpName %x_406 "x_406" |
| OpName %x_407 "x_407" |
| OpName %x_410 "x_410" |
| OpName %x_411 "x_411" |
| OpName %x_413 "x_413" |
| OpName %x_416 "x_416" |
| OpName %x_417 "x_417" |
| OpName %x_418 "x_418" |
| OpName %x_421 "x_421" |
| OpName %x_422 "x_422" |
| OpName %x_424 "x_424" |
| OpName %x_426 "x_426" |
| OpName %x_431 "x_431" |
| OpName %x_432 "x_432" |
| OpName %x_434 "x_434" |
| OpName %x_435 "x_435" |
| OpName %x_436 "x_436" |
| OpName %x_438 "x_438" |
| OpName %x_440 "x_440" |
| OpName %x_441 "x_441" |
| OpName %x_444 "x_444" |
| OpName %x_445 "x_445" |
| OpName %x_449 "x_449" |
| OpName %x_450 "x_450" |
| OpName %x_452 "x_452" |
| OpName %x_454 "x_454" |
| OpName %x_457 "x_457" |
| OpName %x_461 "x_461" |
| OpName %x_462 "x_462" |
| OpName %x_465 "x_465" |
| OpName %x_466 "x_466" |
| OpName %x_474 "x_474" |
| OpName %x_475 "x_475" |
| OpName %x_477 "x_477" |
| OpName %x_481 "x_481" |
| OpName %x_482 "x_482" |
| OpName %x_488 "x_488" |
| OpName %x_494 "x_494" |
| OpName %x_501 "x_501" |
| OpName %x_503 "x_503" |
| OpName %x_507 "x_507" |
| OpName %x_510 "x_510" |
| OpName %x_514 "x_514" |
| OpName %x_518 "x_518" |
| OpName %x_520 "x_520" |
| OpName %x_521 "x_521" |
| OpName %x_523 "x_523" |
| OpName %x_524 "x_524" |
| OpName %x_526 "x_526" |
| OpName %x_529 "x_529" |
| OpName %x_530 "x_530" |
| OpName %x_532 "x_532" |
| OpName %x_535 "x_535" |
| OpName %x_536 "x_536" |
| OpName %x_539 "x_539" |
| OpName %x_540 "x_540" |
| OpName %x_543 "x_543" |
| OpName %x_544 "x_544" |
| OpName %x_548 "x_548" |
| OpName %main_inner "main_inner" |
| OpMemberName %main_out 0 "glFragColor_1" |
| OpName %main_out "main_out" |
| OpName %vMainuv_param "vMainuv_param" |
| OpName %v_output1_param "v_output1_param" |
| OpName %gl_FrontFacing_param "gl_FrontFacing_param" |
| OpName %v_uv_param "v_uv_param" |
| OpName %v_output2_param "v_output2_param" |
| OpName %main "main" |
| OpDecorate %TextureSamplerTexture DescriptorSet 2 |
| OpDecorate %TextureSamplerTexture Binding 1 |
| OpDecorate %TextureSamplerSampler DescriptorSet 2 |
| OpDecorate %TextureSamplerSampler Binding 0 |
| OpMemberDecorate %LeftOver 0 Offset 0 |
| OpMemberDecorate %LeftOver 0 ColMajor |
| OpMemberDecorate %LeftOver 0 MatrixStride 16 |
| OpMemberDecorate %LeftOver 1 Offset 64 |
| OpMemberDecorate %LeftOver 1 ColMajor |
| OpMemberDecorate %LeftOver 1 MatrixStride 16 |
| OpMemberDecorate %LeftOver 2 Offset 128 |
| OpMemberDecorate %LeftOver 3 Offset 132 |
| OpMemberDecorate %LeftOver 4 Offset 144 |
| OpMemberDecorate %LeftOver 5 Offset 156 |
| OpMemberDecorate %LeftOver 6 Offset 160 |
| OpMemberDecorate %LeftOver 7 Offset 164 |
| OpMemberDecorate %LeftOver 8 Offset 168 |
| OpMemberDecorate %x_269_block 0 Offset 0 |
| OpDecorate %x_269_block Block |
| OpDecorate %19 DescriptorSet 2 |
| OpDecorate %19 Binding 6 |
| OpDecorate %19 NonWritable |
| OpDecorate %TextureSampler1Texture DescriptorSet 2 |
| OpDecorate %TextureSampler1Texture Binding 3 |
| OpDecorate %TextureSampler1Sampler DescriptorSet 2 |
| OpDecorate %TextureSampler1Sampler Binding 2 |
| OpMemberDecorate %Light0 0 Offset 0 |
| OpMemberDecorate %Light0 1 Offset 16 |
| OpMemberDecorate %Light0 2 Offset 32 |
| OpMemberDecorate %Light0 3 Offset 48 |
| OpMemberDecorate %Light0 4 Offset 60 |
| OpMemberDecorate %Light0 5 Offset 64 |
| OpMemberDecorate %Light0 6 Offset 80 |
| OpMemberDecorate %light0_block 0 Offset 0 |
| OpDecorate %light0_block Block |
| OpDecorate %37 DescriptorSet 0 |
| OpDecorate %37 Binding 5 |
| OpDecorate %37 NonWritable |
| OpDecorate %bumpSamplerSampler DescriptorSet 2 |
| OpDecorate %bumpSamplerSampler Binding 4 |
| OpDecorate %bumpSamplerTexture DescriptorSet 2 |
| OpDecorate %bumpSamplerTexture Binding 5 |
| OpDecorate %main_loc1_Input Location 1 |
| OpDecorate %main_loc0_Input Location 0 |
| OpDecorate %main_front_facing_Input BuiltIn FrontFacing |
| OpDecorate %main_loc3_Input Location 3 |
| OpDecorate %main_loc2_Input Location 2 |
| OpDecorate %main_loc0_Output Location 0 |
| OpMemberDecorate %lightingInfo 0 Offset 0 |
| OpMemberDecorate %lightingInfo 1 Offset 16 |
| OpMemberDecorate %main_out 0 Offset 0 |
| %float = OpTypeFloat 32 |
| %_ptr_Private_float = OpTypePointer Private %float |
| %4 = OpConstantNull %float |
| %u_Float = OpVariable %_ptr_Private_float Private %4 |
| %v3float = OpTypeVector %float 3 |
| %_ptr_Private_v3float = OpTypePointer Private %v3float |
| %8 = OpConstantNull %v3float |
| %u_Color = OpVariable %_ptr_Private_v3float Private %8 |
| %11 = OpTypeImage %float 2D 0 0 0 1 Unknown |
| %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 |
| %TextureSamplerTexture = OpVariable %_ptr_UniformConstant_11 UniformConstant |
| %14 = OpTypeSampler |
| %_ptr_UniformConstant_14 = OpTypePointer UniformConstant %14 |
| %TextureSamplerSampler = OpVariable %_ptr_UniformConstant_14 UniformConstant |
| %v2float = OpTypeVector %float 2 |
| %_ptr_Private_v2float = OpTypePointer Private %v2float |
| %18 = OpConstantNull %v2float |
| %vMainuv = OpVariable %_ptr_Private_v2float Private %18 |
| %v4float = OpTypeVector %float 4 |
| %mat4v4float = OpTypeMatrix %v4float 4 |
| %uint = OpTypeInt 32 0 |
| %LeftOver = OpTypeStruct %mat4v4float %mat4v4float %float %uint %v3float %float %float %uint %v2float |
| %x_269_block = OpTypeStruct %LeftOver |
| %_ptr_Uniform_x_269_block = OpTypePointer Uniform %x_269_block |
| %19 = OpVariable %_ptr_Uniform_x_269_block Uniform |
| %_ptr_Private_v4float = OpTypePointer Private %v4float |
| %x_397 = OpConstantNull %v4float |
| %v_output1 = OpVariable %_ptr_Private_v4float Private %x_397 |
| %bool = OpTypeBool |
| %_ptr_Private_bool = OpTypePointer Private %bool |
| %32 = OpConstantNull %bool |
| %gl_FrontFacing = OpVariable %_ptr_Private_bool Private %32 |
| %v_uv = OpVariable %_ptr_Private_v2float Private %18 |
| %v_output2 = OpVariable %_ptr_Private_v4float Private %x_397 |
| %TextureSampler1Texture = OpVariable %_ptr_UniformConstant_11 UniformConstant |
| %TextureSampler1Sampler = OpVariable %_ptr_UniformConstant_14 UniformConstant |
| %Light0 = OpTypeStruct %v4float %v4float %v4float %v3float %uint %v4float %v2float |
| %light0_block = OpTypeStruct %Light0 |
| %_ptr_Uniform_light0_block = OpTypePointer Uniform %light0_block |
| %37 = OpVariable %_ptr_Uniform_light0_block Uniform |
| %glFragColor = OpVariable %_ptr_Private_v4float Private %x_397 |
| %bumpSamplerSampler = OpVariable %_ptr_UniformConstant_14 UniformConstant |
| %bumpSamplerTexture = OpVariable %_ptr_UniformConstant_11 UniformConstant |
| %_ptr_Input_v2float = OpTypePointer Input %v2float |
| %main_loc1_Input = OpVariable %_ptr_Input_v2float Input |
| %_ptr_Input_v4float = OpTypePointer Input %v4float |
| %main_loc0_Input = OpVariable %_ptr_Input_v4float Input |
| %_ptr_Input_bool = OpTypePointer Input %bool |
| %main_front_facing_Input = OpVariable %_ptr_Input_bool Input |
| %main_loc3_Input = OpVariable %_ptr_Input_v2float Input |
| %main_loc2_Input = OpVariable %_ptr_Input_v4float Input |
| %_ptr_Output_v4float = OpTypePointer Output %v4float |
| %main_loc0_Output = OpVariable %_ptr_Output_v4float Output |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %_ptr_Function_v3float = OpTypePointer Function %v3float |
| %_ptr_Function_v2float = OpTypePointer Function %v2float |
| %62 = OpTypeFunction %mat3v3float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v2float %_ptr_Function_v2float |
| %_ptr_Function_float = OpTypePointer Function %float |
| %uint_0 = OpConstant %uint 0 |
| %uint_1 = OpConstant %uint 1 |
| %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float |
| %152 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float |
| %158 = OpConstantNull %mat3v3float |
| %int = OpTypeInt 32 1 |
| %int_0 = OpConstant %int 0 |
| %int_1 = OpConstant %int 1 |
| %int_2 = OpConstant %int 2 |
| %uint_2 = OpConstant %uint 2 |
| %209 = OpTypeFunction %v3float %_ptr_Function_mat3v3float %_ptr_Function_v3float %_ptr_Function_float |
| %float_2 = OpConstant %float 2 |
| %float_1 = OpConstant %float 1 |
| %233 = OpConstantComposite %v3float %float_1 %float_1 %float_1 |
| %lightingInfo = OpTypeStruct %v3float %v3float |
| %_ptr_Function_v4float = OpTypePointer Function %v4float |
| %247 = OpTypeFunction %lightingInfo %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v4float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_v3float %_ptr_Function_float |
| %_ptr_Function_lightingInfo = OpTypePointer Function %lightingInfo |
| %259 = OpConstantNull %lightingInfo |
| %float_0_5 = OpConstant %float 0.5 |
| %float_0 = OpConstant %float 0 |
| %void = OpTypeVoid |
| %302 = OpTypeFunction %void |
| %_ptr_Function_int = OpTypePointer Function %int |
| %331 = OpConstantNull %int |
| %float_100 = OpConstant %float 100 |
| %360 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 |
| %365 = OpTypeSampledImage %11 |
| %_ptr_Uniform_float = OpTypePointer Uniform %float |
| %uint_6 = OpConstant %uint 6 |
| %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float |
| %uint_4 = OpConstant %uint 4 |
| %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float |
| %uint_8 = OpConstant %uint 8 |
| %uint_5 = OpConstant %uint 5 |
| %float_n11 = OpConstant %float -11 |
| %float_15 = OpConstant %float 15 |
| %int_15 = OpConstant %int 15 |
| %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float |
| %uint_3 = OpConstant %uint 3 |
| %main_out = OpTypeStruct %v4float |
| %626 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float |
| %cotangent_frame_vf3_vf3_vf2_vf2_ = OpFunction %mat3v3float None %62 |
| %normal_1_root = OpFunctionParameter %_ptr_Function_v3float |
| %p_root = OpFunctionParameter %_ptr_Function_v3float |
| %uv_root = OpFunctionParameter %_ptr_Function_v2float |
| %tangentSpaceParams_root = OpFunctionParameter %_ptr_Function_v2float |
| %63 = OpLabel |
| %dp1 = OpVariable %_ptr_Function_v3float Function %8 |
| %dp2 = OpVariable %_ptr_Function_v3float Function %8 |
| %duv1 = OpVariable %_ptr_Function_v2float Function %18 |
| %duv2 = OpVariable %_ptr_Function_v2float Function %18 |
| %dp2perp = OpVariable %_ptr_Function_v3float Function %8 |
| %dp1perp = OpVariable %_ptr_Function_v3float Function %8 |
| %tangent = OpVariable %_ptr_Function_v3float Function %8 |
| %bitangent = OpVariable %_ptr_Function_v3float Function %8 |
| %invmax = OpVariable %_ptr_Function_float Function %4 |
| %64 = OpAccessChain %_ptr_Function_v3float %normal_1_root |
| %65 = OpAccessChain %_ptr_Function_v3float %p_root |
| %66 = OpAccessChain %_ptr_Function_v2float %uv_root |
| %67 = OpAccessChain %_ptr_Function_v2float %tangentSpaceParams_root |
| %x_133 = OpLoad %v3float %65 None |
| %79 = OpDPdx %v3float %x_133 |
| OpStore %dp1 %79 None |
| %x_136 = OpLoad %v3float %65 None |
| %81 = OpDPdy %v3float %x_136 |
| OpStore %dp2 %81 None |
| %x_139 = OpLoad %v2float %66 None |
| %83 = OpDPdx %v2float %x_139 |
| OpStore %duv1 %83 None |
| %x_142 = OpLoad %v2float %66 None |
| %85 = OpDPdy %v2float %x_142 |
| OpStore %duv2 %85 None |
| %x_145 = OpLoad %v3float %dp2 None |
| %x_146 = OpLoad %v3float %64 None |
| %88 = OpExtInst %v3float %89 Cross %x_145 %x_146 |
| OpStore %dp2perp %88 None |
| %x_149 = OpLoad %v3float %64 None |
| %x_150 = OpLoad %v3float %dp1 None |
| %92 = OpExtInst %v3float %89 Cross %x_149 %x_150 |
| OpStore %dp1perp %92 None |
| %x_153 = OpLoad %v3float %dp2perp None |
| %94 = OpAccessChain %_ptr_Function_float %duv1 %uint_0 |
| %x_155 = OpLoad %float %94 None |
| %x_157 = OpLoad %v3float %dp1perp None |
| %98 = OpAccessChain %_ptr_Function_float %duv2 %uint_0 |
| %x_159 = OpLoad %float %98 None |
| %100 = OpVectorTimesScalar %v3float %x_153 %x_155 |
| %101 = OpVectorTimesScalar %v3float %x_157 %x_159 |
| %102 = OpFAdd %v3float %100 %101 |
| OpStore %tangent %102 None |
| %x_163 = OpLoad %v3float %dp2perp None |
| %104 = OpAccessChain %_ptr_Function_float %duv1 %uint_1 |
| %x_165 = OpLoad %float %104 None |
| %x_167 = OpLoad %v3float %dp1perp None |
| %108 = OpAccessChain %_ptr_Function_float %duv2 %uint_1 |
| %x_169 = OpLoad %float %108 None |
| %110 = OpVectorTimesScalar %v3float %x_163 %x_165 |
| %111 = OpVectorTimesScalar %v3float %x_167 %x_169 |
| %112 = OpFAdd %v3float %110 %111 |
| OpStore %bitangent %112 None |
| %113 = OpAccessChain %_ptr_Function_float %67 %uint_0 |
| %x_173 = OpLoad %float %113 None |
| %x_174 = OpLoad %v3float %tangent None |
| %116 = OpVectorTimesScalar %v3float %x_174 %x_173 |
| OpStore %tangent %116 None |
| %117 = OpAccessChain %_ptr_Function_float %67 %uint_1 |
| %x_177 = OpLoad %float %117 None |
| %x_178 = OpLoad %v3float %bitangent None |
| %120 = OpVectorTimesScalar %v3float %x_178 %x_177 |
| OpStore %bitangent %120 None |
| %x_181 = OpLoad %v3float %tangent None |
| %x_182 = OpLoad %v3float %tangent None |
| %x_184 = OpLoad %v3float %bitangent None |
| %x_185 = OpLoad %v3float %bitangent None |
| %125 = OpDot %float %x_181 %x_182 |
| %126 = OpDot %float %x_184 %x_185 |
| %127 = OpExtInst %float %89 FMax %125 %126 |
| %128 = OpExtInst %float %89 InverseSqrt %127 |
| OpStore %invmax %128 None |
| %x_189 = OpLoad %v3float %tangent None |
| %x_190 = OpLoad %float %invmax None |
| %x_191 = OpVectorTimesScalar %v3float %x_189 %x_190 |
| %x_192 = OpLoad %v3float %bitangent None |
| %x_193 = OpLoad %float %invmax None |
| %x_194 = OpVectorTimesScalar %v3float %x_192 %x_193 |
| %x_195 = OpLoad %v3float %64 None |
| %136 = OpCompositeExtract %float %x_191 0 |
| %137 = OpCompositeExtract %float %x_191 1 |
| %138 = OpCompositeExtract %float %x_191 2 |
| %139 = OpCompositeConstruct %v3float %136 %137 %138 |
| %140 = OpCompositeExtract %float %x_194 0 |
| %141 = OpCompositeExtract %float %x_194 1 |
| %142 = OpCompositeExtract %float %x_194 2 |
| %143 = OpCompositeConstruct %v3float %140 %141 %142 |
| %144 = OpCompositeExtract %float %x_195 0 |
| %145 = OpCompositeExtract %float %x_195 1 |
| %146 = OpCompositeExtract %float %x_195 2 |
| %147 = OpCompositeConstruct %v3float %144 %145 %146 |
| %148 = OpCompositeConstruct %mat3v3float %139 %143 %147 |
| OpReturnValue %148 |
| OpFunctionEnd |
| %transposeMat3_mf33_ = OpFunction %mat3v3float None %152 |
| %inMatrix_root = OpFunctionParameter %_ptr_Function_mat3v3float |
| %153 = OpLabel |
| %i0 = OpVariable %_ptr_Function_v3float Function %8 |
| %i1 = OpVariable %_ptr_Function_v3float Function %8 |
| %i2 = OpVariable %_ptr_Function_v3float Function %8 |
| %outMatrix = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %159 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_0 |
| %x_60 = OpLoad %v3float %159 None |
| OpStore %i0 %x_60 None |
| %163 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_1 |
| %x_64 = OpLoad %v3float %163 None |
| OpStore %i1 %x_64 None |
| %166 = OpAccessChain %_ptr_Function_v3float %inMatrix_root %int_2 |
| %x_68 = OpLoad %v3float %166 None |
| OpStore %i2 %x_68 None |
| %169 = OpAccessChain %_ptr_Function_float %i0 %uint_0 |
| %x_73 = OpLoad %float %169 None |
| %171 = OpAccessChain %_ptr_Function_float %i1 %uint_0 |
| %x_75 = OpLoad %float %171 None |
| %173 = OpAccessChain %_ptr_Function_float %i2 %uint_0 |
| %x_77 = OpLoad %float %173 None |
| %x_78 = OpCompositeConstruct %v3float %x_73 %x_75 %x_77 |
| %176 = OpAccessChain %_ptr_Function_float %i0 %uint_1 |
| %x_81 = OpLoad %float %176 None |
| %178 = OpAccessChain %_ptr_Function_float %i1 %uint_1 |
| %x_83 = OpLoad %float %178 None |
| %180 = OpAccessChain %_ptr_Function_float %i2 %uint_1 |
| %x_85 = OpLoad %float %180 None |
| %x_86 = OpCompositeConstruct %v3float %x_81 %x_83 %x_85 |
| %183 = OpAccessChain %_ptr_Function_float %i0 %uint_2 |
| %x_89 = OpLoad %float %183 None |
| %186 = OpAccessChain %_ptr_Function_float %i1 %uint_2 |
| %x_91 = OpLoad %float %186 None |
| %188 = OpAccessChain %_ptr_Function_float %i2 %uint_2 |
| %x_93 = OpLoad %float %188 None |
| %x_94 = OpCompositeConstruct %v3float %x_89 %x_91 %x_93 |
| %191 = OpCompositeExtract %float %x_78 0 |
| %192 = OpCompositeExtract %float %x_78 1 |
| %193 = OpCompositeExtract %float %x_78 2 |
| %194 = OpCompositeConstruct %v3float %191 %192 %193 |
| %195 = OpCompositeExtract %float %x_86 0 |
| %196 = OpCompositeExtract %float %x_86 1 |
| %197 = OpCompositeExtract %float %x_86 2 |
| %198 = OpCompositeConstruct %v3float %195 %196 %197 |
| %199 = OpCompositeExtract %float %x_94 0 |
| %200 = OpCompositeExtract %float %x_94 1 |
| %201 = OpCompositeExtract %float %x_94 2 |
| %202 = OpCompositeConstruct %v3float %199 %200 %201 |
| %203 = OpCompositeConstruct %mat3v3float %194 %198 %202 |
| OpStore %outMatrix %203 None |
| %x_110 = OpLoad %mat3v3float %outMatrix None |
| OpReturnValue %x_110 |
| OpFunctionEnd |
| %perturbNormalBase_mf33_vf3_f1_ = OpFunction %v3float None %209 |
| %cotangentFrame_root = OpFunctionParameter %_ptr_Function_mat3v3float |
| %normal_root = OpFunctionParameter %_ptr_Function_v3float |
| %scale_root = OpFunctionParameter %_ptr_Function_float |
| %210 = OpLabel |
| %211 = OpAccessChain %_ptr_Function_mat3v3float %cotangentFrame_root |
| %212 = OpAccessChain %_ptr_Function_v3float %normal_root |
| %x_113 = OpLoad %mat3v3float %211 None |
| %x_114 = OpLoad %v3float %212 None |
| %215 = OpMatrixTimesVector %v3float %x_113 %x_114 |
| %216 = OpExtInst %v3float %89 Normalize %215 |
| OpReturnValue %216 |
| OpFunctionEnd |
| %perturbNormal_mf33_vf3_f1_ = OpFunction %v3float None %209 |
| %cotangentFrame_1_root = OpFunctionParameter %_ptr_Function_mat3v3float |
| %textureSample_root = OpFunctionParameter %_ptr_Function_v3float |
| %scale_1_root = OpFunctionParameter %_ptr_Function_float |
| %221 = OpLabel |
| %param = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %param_1 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_2 = OpVariable %_ptr_Function_float Function %4 |
| %222 = OpAccessChain %_ptr_Function_mat3v3float %cotangentFrame_1_root |
| %223 = OpAccessChain %_ptr_Function_v3float %textureSample_root |
| %224 = OpAccessChain %_ptr_Function_float %scale_1_root |
| %x_119 = OpLoad %v3float %223 None |
| %x_125 = OpLoad %mat3v3float %222 None |
| OpStore %param %x_125 None |
| %230 = OpVectorTimesScalar %v3float %x_119 %float_2 |
| %232 = OpFSub %v3float %230 %233 |
| OpStore %param_1 %232 None |
| %x_128 = OpLoad %float %224 None |
| OpStore %param_2 %x_128 None |
| %x_129 = OpFunctionCall %v3float %perturbNormalBase_mf33_vf3_f1_ %param %param_1 %param_2 |
| OpReturnValue %x_129 |
| OpFunctionEnd |
| %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ = OpFunction %lightingInfo None %247 |
| %viewDirectionW_root = OpFunctionParameter %_ptr_Function_v3float |
| %vNormal_root = OpFunctionParameter %_ptr_Function_v3float |
| %lightData_root = OpFunctionParameter %_ptr_Function_v4float |
| %diffuseColor_root = OpFunctionParameter %_ptr_Function_v3float |
| %specularColor_root = OpFunctionParameter %_ptr_Function_v3float |
| %groundColor_root = OpFunctionParameter %_ptr_Function_v3float |
| %glossiness_root = OpFunctionParameter %_ptr_Function_float |
| %248 = OpLabel |
| %ndl = OpVariable %_ptr_Function_float Function %4 |
| %result = OpVariable %_ptr_Function_lightingInfo Function %259 |
| %angleW = OpVariable %_ptr_Function_v3float Function %8 |
| %specComp = OpVariable %_ptr_Function_float Function %4 |
| %249 = OpAccessChain %_ptr_Function_v3float %viewDirectionW_root |
| %250 = OpAccessChain %_ptr_Function_v3float %vNormal_root |
| %251 = OpAccessChain %_ptr_Function_v4float %lightData_root |
| %252 = OpAccessChain %_ptr_Function_v3float %diffuseColor_root |
| %253 = OpAccessChain %_ptr_Function_v3float %specularColor_root |
| %254 = OpAccessChain %_ptr_Function_v3float %groundColor_root |
| %255 = OpAccessChain %_ptr_Function_float %glossiness_root |
| %x_212 = OpLoad %v3float %250 None |
| %x_213 = OpLoad %v4float %251 None |
| %264 = OpCompositeExtract %float %x_213 0 |
| %265 = OpCompositeExtract %float %x_213 1 |
| %266 = OpCompositeExtract %float %x_213 2 |
| %267 = OpCompositeConstruct %v3float %264 %265 %266 |
| %268 = OpDot %float %x_212 %267 |
| %269 = OpFMul %float %268 %float_0_5 |
| %271 = OpFAdd %float %269 %float_0_5 |
| OpStore %ndl %271 None |
| %x_220 = OpLoad %v3float %254 None |
| %x_221 = OpLoad %v3float %252 None |
| %x_222 = OpLoad %float %ndl None |
| %275 = OpAccessChain %_ptr_Function_v3float %result %uint_0 |
| %276 = OpCompositeConstruct %v3float %x_222 %x_222 %x_222 |
| %277 = OpExtInst %v3float %89 FMix %x_220 %x_221 %276 |
| OpStore %275 %277 None |
| %x_227 = OpLoad %v3float %249 None |
| %x_228 = OpLoad %v4float %251 None |
| %280 = OpCompositeExtract %float %x_228 0 |
| %281 = OpCompositeExtract %float %x_228 1 |
| %282 = OpCompositeExtract %float %x_228 2 |
| %283 = OpCompositeConstruct %v3float %280 %281 %282 |
| %284 = OpFAdd %v3float %x_227 %283 |
| %285 = OpExtInst %v3float %89 Normalize %284 |
| OpStore %angleW %285 None |
| %x_233 = OpLoad %v3float %250 None |
| %x_234 = OpLoad %v3float %angleW None |
| %288 = OpDot %float %x_233 %x_234 |
| %289 = OpExtInst %float %89 FMax %float_0 %288 |
| OpStore %specComp %289 None |
| %x_237 = OpLoad %float %specComp None |
| %x_238 = OpLoad %float %255 None |
| %293 = OpExtInst %float %89 FMax %float_1 %x_238 |
| %294 = OpExtInst %float %89 Pow %x_237 %293 |
| OpStore %specComp %294 None |
| %x_241 = OpLoad %float %specComp None |
| %x_242 = OpLoad %v3float %253 None |
| %297 = OpAccessChain %_ptr_Function_v3float %result %uint_1 |
| %298 = OpVectorTimesScalar %v3float %x_242 %x_241 |
| OpStore %297 %298 None |
| %x_245 = OpLoad %lightingInfo %result None |
| OpReturnValue %x_245 |
| OpFunctionEnd |
| %main_1 = OpFunction %void None %302 |
| %303 = OpLabel |
| %tempTextureRead = OpVariable %_ptr_Function_v4float Function %x_397 |
| %rgb = OpVariable %_ptr_Function_v3float Function %8 |
| %output5 = OpVariable %_ptr_Function_v3float Function %8 |
| %output4 = OpVariable %_ptr_Function_v4float Function %x_397 |
| %uvOffset = OpVariable %_ptr_Function_v2float Function %18 |
| %normalScale = OpVariable %_ptr_Function_float Function %4 |
| %TBNUV = OpVariable %_ptr_Function_v2float Function %18 |
| %x_299 = OpVariable %_ptr_Function_v2float Function %18 |
| %TBN = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %param_3 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_4 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_5 = OpVariable %_ptr_Function_v2float Function %18 |
| %param_6 = OpVariable %_ptr_Function_v2float Function %18 |
| %invTBN = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %param_7 = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %parallaxLimit = OpVariable %_ptr_Function_float Function %4 |
| %vOffsetDir = OpVariable %_ptr_Function_v2float Function %18 |
| %vMaxOffset = OpVariable %_ptr_Function_v2float Function %18 |
| %numSamples = OpVariable %_ptr_Function_float Function %4 |
| %stepSize = OpVariable %_ptr_Function_float Function %4 |
| %currRayHeight = OpVariable %_ptr_Function_float Function %4 |
| %vCurrOffset = OpVariable %_ptr_Function_v2float Function %18 |
| %vLastOffset = OpVariable %_ptr_Function_v2float Function %18 |
| %lastSampledHeight = OpVariable %_ptr_Function_float Function %4 |
| %currSampledHeight = OpVariable %_ptr_Function_float Function %4 |
| %i = OpVariable %_ptr_Function_int Function %331 |
| %delta1 = OpVariable %_ptr_Function_float Function %4 |
| %delta2 = OpVariable %_ptr_Function_float Function %4 |
| %ratio = OpVariable %_ptr_Function_float Function %4 |
| %parallaxOcclusion_0 = OpVariable %_ptr_Function_v2float Function %18 |
| %param_8 = OpVariable %_ptr_Function_mat3v3float Function %158 |
| %param_9 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_10 = OpVariable %_ptr_Function_float Function %4 |
| %output6 = OpVariable %_ptr_Function_v2float Function %18 |
| %tempTextureRead1 = OpVariable %_ptr_Function_v4float Function %x_397 |
| %rgb1 = OpVariable %_ptr_Function_v3float Function %8 |
| %viewDirectionW_1 = OpVariable %_ptr_Function_v3float Function %8 |
| %shadow = OpVariable %_ptr_Function_float Function %4 |
| %glossiness_1 = OpVariable %_ptr_Function_float Function %4 |
| %diffuseBase = OpVariable %_ptr_Function_v3float Function %8 |
| %specularBase = OpVariable %_ptr_Function_v3float Function %8 |
| %normalW = OpVariable %_ptr_Function_v3float Function %8 |
| %info = OpVariable %_ptr_Function_lightingInfo Function %259 |
| %param_11 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_12 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_13 = OpVariable %_ptr_Function_v4float Function %x_397 |
| %param_14 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_15 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_16 = OpVariable %_ptr_Function_v3float Function %8 |
| %param_17 = OpVariable %_ptr_Function_float Function %4 |
| %diffuseOutput = OpVariable %_ptr_Function_v3float Function %8 |
| %specularOutput = OpVariable %_ptr_Function_v3float Function %8 |
| %output3 = OpVariable %_ptr_Function_v3float Function %8 |
| OpStore %u_Float %float_100 None |
| OpStore %u_Color %360 None |
| %x_261 = OpLoad %v2float %vMainuv None |
| %362 = OpLoad %11 %TextureSamplerTexture None |
| %363 = OpLoad %14 %TextureSamplerSampler None |
| %364 = OpSampledImage %365 %362 %363 |
| %x_262 = OpImageSampleImplicitLod %v4float %364 %x_261 None |
| OpStore %tempTextureRead %x_262 None |
| %x_264 = OpLoad %v4float %tempTextureRead None |
| %368 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_6 |
| %x_273 = OpLoad %float %368 None |
| %372 = OpCompositeExtract %float %x_264 0 |
| %373 = OpCompositeExtract %float %x_264 1 |
| %374 = OpCompositeExtract %float %x_264 2 |
| %375 = OpCompositeConstruct %v3float %372 %373 %374 |
| %376 = OpVectorTimesScalar %v3float %375 %x_273 |
| OpStore %rgb %376 None |
| %377 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4 |
| %x_279 = OpLoad %v3float %377 None |
| %x_282 = OpLoad %v4float %v_output1 None |
| %382 = OpCompositeExtract %float %x_282 0 |
| %383 = OpCompositeExtract %float %x_282 1 |
| %384 = OpCompositeExtract %float %x_282 2 |
| %385 = OpCompositeConstruct %v3float %382 %383 %384 |
| %386 = OpFSub %v3float %x_279 %385 |
| %387 = OpExtInst %v3float %89 Normalize %386 |
| OpStore %output5 %387 None |
| OpStore %output4 %x_397 None |
| OpStore %uvOffset %18 None |
| %388 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2 |
| %x_292 = OpLoad %float %388 None |
| %390 = OpFDiv %float %float_1 %x_292 |
| OpStore %normalScale %390 None |
| %x_298 = OpLoad %bool %gl_FrontFacing None |
| OpSelectionMerge %392 None |
| OpBranchConditional %x_298 %393 %394 |
| %393 = OpLabel |
| %x_303 = OpLoad %v2float %v_uv None |
| OpStore %x_299 %x_303 None |
| OpBranch %392 |
| %394 = OpLabel |
| %x_305 = OpLoad %v2float %v_uv None |
| %397 = OpFNegate %v2float %x_305 |
| OpStore %x_299 %397 None |
| OpBranch %392 |
| %392 = OpLabel |
| %x_307 = OpLoad %v2float %x_299 None |
| OpStore %TBNUV %x_307 None |
| %x_310 = OpLoad %v4float %v_output2 None |
| %x_312 = OpLoad %float %normalScale None |
| %401 = OpCompositeExtract %float %x_310 0 |
| %402 = OpCompositeExtract %float %x_310 1 |
| %403 = OpCompositeExtract %float %x_310 2 |
| %404 = OpCompositeConstruct %v3float %401 %402 %403 |
| %405 = OpVectorTimesScalar %v3float %404 %x_312 |
| OpStore %param_3 %405 None |
| %x_317 = OpLoad %v4float %v_output1 None |
| %407 = OpCompositeExtract %float %x_317 0 |
| %408 = OpCompositeExtract %float %x_317 1 |
| %409 = OpCompositeExtract %float %x_317 2 |
| %410 = OpCompositeConstruct %v3float %407 %408 %409 |
| OpStore %param_4 %410 None |
| %x_320 = OpLoad %v2float %TBNUV None |
| OpStore %param_5 %x_320 None |
| %412 = OpAccessChain %_ptr_Uniform_v2float %19 %uint_0 %uint_8 |
| %x_324 = OpLoad %v2float %412 None |
| OpStore %param_6 %x_324 None |
| %x_325 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2_ %param_3 %param_4 %param_5 %param_6 |
| OpStore %TBN %x_325 None |
| %x_328 = OpLoad %mat3v3float %TBN None |
| OpStore %param_7 %x_328 None |
| %x_329 = OpFunctionCall %mat3v3float %transposeMat3_mf33_ %param_7 |
| OpStore %invTBN %x_329 None |
| %x_331 = OpLoad %mat3v3float %invTBN None |
| %x_332 = OpLoad %v3float %output5 None |
| %421 = OpFNegate %v3float %x_332 |
| %x_334 = OpMatrixTimesVector %v3float %x_331 %421 |
| %x_337 = OpLoad %mat3v3float %invTBN None |
| %x_338 = OpLoad %v3float %output5 None |
| %425 = OpCompositeExtract %float %x_334 0 |
| %426 = OpCompositeExtract %float %x_334 1 |
| %427 = OpCompositeConstruct %v2float %425 %426 |
| %428 = OpExtInst %float %89 Length %427 |
| %429 = OpFNegate %v3float %x_338 |
| %430 = OpMatrixTimesVector %v3float %x_337 %429 |
| %431 = OpCompositeExtract %float %430 2 |
| %432 = OpFDiv %float %428 %431 |
| OpStore %parallaxLimit %432 None |
| %433 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_5 |
| %x_345 = OpLoad %float %433 None |
| %x_346 = OpLoad %float %parallaxLimit None |
| %437 = OpFMul %float %x_346 %x_345 |
| OpStore %parallaxLimit %437 None |
| %x_349 = OpLoad %mat3v3float %invTBN None |
| %x_350 = OpLoad %v3float %output5 None |
| %440 = OpFNegate %v3float %x_350 |
| %x_352 = OpMatrixTimesVector %v3float %x_349 %440 |
| %442 = OpCompositeExtract %float %x_352 0 |
| %443 = OpCompositeExtract %float %x_352 1 |
| %444 = OpCompositeConstruct %v2float %442 %443 |
| %445 = OpExtInst %v2float %89 Normalize %444 |
| OpStore %vOffsetDir %445 None |
| %x_356 = OpLoad %v2float %vOffsetDir None |
| %x_357 = OpLoad %float %parallaxLimit None |
| %448 = OpVectorTimesScalar %v2float %x_356 %x_357 |
| OpStore %vMaxOffset %448 None |
| %x_361 = OpLoad %mat3v3float %invTBN None |
| %x_362 = OpLoad %v3float %output5 None |
| %x_365 = OpLoad %mat3v3float %invTBN None |
| %x_366 = OpLoad %v4float %v_output2 None |
| %453 = OpFNegate %v3float %x_362 |
| %454 = OpMatrixTimesVector %v3float %x_361 %453 |
| %455 = OpCompositeExtract %float %x_366 0 |
| %456 = OpCompositeExtract %float %x_366 1 |
| %457 = OpCompositeExtract %float %x_366 2 |
| %458 = OpCompositeConstruct %v3float %455 %456 %457 |
| %459 = OpMatrixTimesVector %v3float %x_365 %458 |
| %460 = OpDot %float %454 %459 |
| %461 = OpFMul %float %460 %float_n11 |
| %463 = OpFAdd %float %float_15 %461 |
| OpStore %numSamples %463 None |
| %x_374 = OpLoad %float %numSamples None |
| %466 = OpFDiv %float %float_1 %x_374 |
| OpStore %stepSize %466 None |
| OpStore %currRayHeight %float_1 None |
| OpStore %vCurrOffset %18 None |
| OpStore %vLastOffset %18 None |
| OpStore %lastSampledHeight %float_1 None |
| OpStore %currSampledHeight %float_1 None |
| OpStore %i %int_0 None |
| OpBranch %469 |
| %469 = OpLabel |
| OpLoopMerge %470 %468 None |
| OpBranch %467 |
| %467 = OpLabel |
| %x_388 = OpLoad %int %i None |
| %472 = OpSLessThan %bool %x_388 %int_15 |
| OpSelectionMerge %474 None |
| OpBranchConditional %472 %474 %475 |
| %475 = OpLabel |
| OpBranch %470 |
| %474 = OpLabel |
| %x_394 = OpLoad %v2float %v_uv None |
| %x_395 = OpLoad %v2float %vCurrOffset None |
| %478 = OpCompositeExtract %float %x_397 3 |
| OpStore %currSampledHeight %478 None |
| %x_400 = OpLoad %float %currSampledHeight None |
| %x_401 = OpLoad %float %currRayHeight None |
| %481 = OpFOrdGreaterThan %bool %x_400 %x_401 |
| OpSelectionMerge %482 None |
| OpBranchConditional %481 %483 %484 |
| %483 = OpLabel |
| %x_406 = OpLoad %float %currSampledHeight None |
| %x_407 = OpLoad %float %currRayHeight None |
| %487 = OpFSub %float %x_406 %x_407 |
| OpStore %delta1 %487 None |
| %x_410 = OpLoad %float %currRayHeight None |
| %x_411 = OpLoad %float %stepSize None |
| %x_413 = OpLoad %float %lastSampledHeight None |
| %491 = OpFAdd %float %x_410 %x_411 |
| %492 = OpFSub %float %491 %x_413 |
| OpStore %delta2 %492 None |
| %x_416 = OpLoad %float %delta1 None |
| %x_417 = OpLoad %float %delta1 None |
| %x_418 = OpLoad %float %delta2 None |
| %496 = OpFAdd %float %x_417 %x_418 |
| %497 = OpFDiv %float %x_416 %496 |
| OpStore %ratio %497 None |
| %x_421 = OpLoad %float %ratio None |
| %x_422 = OpLoad %v2float %vLastOffset None |
| %x_424 = OpLoad %float %ratio None |
| %x_426 = OpLoad %v2float %vCurrOffset None |
| %502 = OpVectorTimesScalar %v2float %x_422 %x_421 |
| %503 = OpFSub %float %float_1 %x_424 |
| %504 = OpVectorTimesScalar %v2float %x_426 %503 |
| %505 = OpFAdd %v2float %502 %504 |
| OpStore %vCurrOffset %505 None |
| OpBranch %470 |
| %484 = OpLabel |
| %x_431 = OpLoad %float %stepSize None |
| %x_432 = OpLoad %float %currRayHeight None |
| %508 = OpFSub %float %x_432 %x_431 |
| OpStore %currRayHeight %508 None |
| %x_434 = OpLoad %v2float %vCurrOffset None |
| OpStore %vLastOffset %x_434 None |
| %x_435 = OpLoad %float %stepSize None |
| %x_436 = OpLoad %v2float %vMaxOffset None |
| %x_438 = OpLoad %v2float %vCurrOffset None |
| %513 = OpVectorTimesScalar %v2float %x_436 %x_435 |
| %514 = OpFAdd %v2float %x_438 %513 |
| OpStore %vCurrOffset %514 None |
| %x_440 = OpLoad %float %currSampledHeight None |
| OpStore %lastSampledHeight %x_440 None |
| OpBranch %482 |
| %482 = OpLabel |
| OpBranch %468 |
| %468 = OpLabel |
| %x_441 = OpLoad %int %i None |
| %517 = OpIAdd %int %x_441 %int_1 |
| OpStore %i %517 None |
| OpBranch %469 |
| %470 = OpLabel |
| %x_444 = OpLoad %v2float %vCurrOffset None |
| OpStore %parallaxOcclusion_0 %x_444 None |
| %x_445 = OpLoad %v2float %parallaxOcclusion_0 None |
| OpStore %uvOffset %x_445 None |
| %x_449 = OpLoad %v2float %v_uv None |
| %x_450 = OpLoad %v2float %uvOffset None |
| %522 = OpLoad %11 %TextureSamplerTexture None |
| %523 = OpLoad %14 %TextureSamplerSampler None |
| %524 = OpFAdd %v2float %x_449 %x_450 |
| %525 = OpSampledImage %365 %522 %523 |
| %x_452 = OpImageSampleImplicitLod %v4float %525 %524 None |
| %527 = OpAccessChain %_ptr_Uniform_float %19 %uint_0 %uint_2 |
| %x_454 = OpLoad %float %527 None |
| %x_457 = OpLoad %mat3v3float %TBN None |
| OpStore %param_8 %x_457 None |
| %530 = OpCompositeExtract %float %x_452 0 |
| %531 = OpCompositeExtract %float %x_452 1 |
| %532 = OpCompositeExtract %float %x_452 2 |
| %533 = OpCompositeConstruct %v3float %530 %531 %532 |
| OpStore %param_9 %533 None |
| %534 = OpFDiv %float %float_1 %x_454 |
| OpStore %param_10 %534 None |
| %x_461 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1_ %param_8 %param_9 %param_10 |
| %x_462 = OpLoad %v4float %output4 None |
| %537 = OpCompositeExtract %float %x_461 0 |
| %538 = OpCompositeExtract %float %x_461 1 |
| %539 = OpCompositeExtract %float %x_461 2 |
| %540 = OpCompositeExtract %float %x_462 3 |
| %541 = OpCompositeConstruct %v4float %537 %538 %539 %540 |
| OpStore %output4 %541 None |
| %x_465 = OpLoad %v2float %v_uv None |
| %x_466 = OpLoad %v2float %uvOffset None |
| %544 = OpFAdd %v2float %x_465 %x_466 |
| OpStore %output6 %544 None |
| %x_474 = OpLoad %v2float %output6 None |
| %546 = OpLoad %11 %TextureSampler1Texture None |
| %547 = OpLoad %14 %TextureSampler1Sampler None |
| %548 = OpSampledImage %365 %546 %547 |
| %x_475 = OpImageSampleImplicitLod %v4float %548 %x_474 None |
| OpStore %tempTextureRead1 %x_475 None |
| %x_477 = OpLoad %v4float %tempTextureRead1 None |
| %551 = OpCompositeExtract %float %x_477 0 |
| %552 = OpCompositeExtract %float %x_477 1 |
| %553 = OpCompositeExtract %float %x_477 2 |
| %554 = OpCompositeConstruct %v3float %551 %552 %553 |
| OpStore %rgb1 %554 None |
| %555 = OpAccessChain %_ptr_Uniform_v3float %19 %uint_0 %uint_4 |
| %x_481 = OpLoad %v3float %555 None |
| %x_482 = OpLoad %v4float %v_output1 None |
| %558 = OpCompositeExtract %float %x_482 0 |
| %559 = OpCompositeExtract %float %x_482 1 |
| %560 = OpCompositeExtract %float %x_482 2 |
| %561 = OpCompositeConstruct %v3float %558 %559 %560 |
| %562 = OpFSub %v3float %x_481 %561 |
| %563 = OpExtInst %v3float %89 Normalize %562 |
| OpStore %viewDirectionW_1 %563 None |
| OpStore %shadow %float_1 None |
| %x_488 = OpLoad %float %u_Float None |
| %565 = OpFMul %float %float_1 %x_488 |
| OpStore %glossiness_1 %565 None |
| OpStore %diffuseBase %8 None |
| OpStore %specularBase %8 None |
| %x_494 = OpLoad %v4float %output4 None |
| %567 = OpCompositeExtract %float %x_494 0 |
| %568 = OpCompositeExtract %float %x_494 1 |
| %569 = OpCompositeExtract %float %x_494 2 |
| %570 = OpCompositeConstruct %v3float %567 %568 %569 |
| OpStore %normalW %570 None |
| %x_501 = OpLoad %v3float %viewDirectionW_1 None |
| OpStore %param_11 %x_501 None |
| %x_503 = OpLoad %v3float %normalW None |
| OpStore %param_12 %x_503 None |
| %573 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_0 |
| %x_507 = OpLoad %v4float %573 None |
| OpStore %param_13 %x_507 None |
| %576 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_1 |
| %x_510 = OpLoad %v4float %576 None |
| %578 = OpCompositeExtract %float %x_510 0 |
| %579 = OpCompositeExtract %float %x_510 1 |
| %580 = OpCompositeExtract %float %x_510 2 |
| %581 = OpCompositeConstruct %v3float %578 %579 %580 |
| OpStore %param_14 %581 None |
| %582 = OpAccessChain %_ptr_Uniform_v4float %37 %uint_0 %uint_2 |
| %x_514 = OpLoad %v4float %582 None |
| %584 = OpCompositeExtract %float %x_514 0 |
| %585 = OpCompositeExtract %float %x_514 1 |
| %586 = OpCompositeExtract %float %x_514 2 |
| %587 = OpCompositeConstruct %v3float %584 %585 %586 |
| OpStore %param_15 %587 None |
| %588 = OpAccessChain %_ptr_Uniform_v3float %37 %uint_0 %uint_3 |
| %x_518 = OpLoad %v3float %588 None |
| OpStore %param_16 %x_518 None |
| %x_520 = OpLoad %float %glossiness_1 None |
| OpStore %param_17 %x_520 None |
| %x_521 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17 |
| OpStore %info %x_521 None |
| OpStore %shadow %float_1 None |
| %593 = OpAccessChain %_ptr_Function_v3float %info %uint_0 |
| %x_523 = OpLoad %v3float %593 None |
| %x_524 = OpLoad %float %shadow None |
| %x_526 = OpLoad %v3float %diffuseBase None |
| %597 = OpVectorTimesScalar %v3float %x_523 %x_524 |
| %598 = OpFAdd %v3float %x_526 %597 |
| OpStore %diffuseBase %598 None |
| %599 = OpAccessChain %_ptr_Function_v3float %info %uint_1 |
| %x_529 = OpLoad %v3float %599 None |
| %x_530 = OpLoad %float %shadow None |
| %x_532 = OpLoad %v3float %specularBase None |
| %603 = OpVectorTimesScalar %v3float %x_529 %x_530 |
| %604 = OpFAdd %v3float %x_532 %603 |
| OpStore %specularBase %604 None |
| %x_535 = OpLoad %v3float %diffuseBase None |
| %x_536 = OpLoad %v3float %rgb1 None |
| %607 = OpFMul %v3float %x_535 %x_536 |
| OpStore %diffuseOutput %607 None |
| %x_539 = OpLoad %v3float %specularBase None |
| %x_540 = OpLoad %v3float %u_Color None |
| %610 = OpFMul %v3float %x_539 %x_540 |
| OpStore %specularOutput %610 None |
| %x_543 = OpLoad %v3float %diffuseOutput None |
| %x_544 = OpLoad %v3float %specularOutput None |
| %613 = OpFAdd %v3float %x_543 %x_544 |
| OpStore %output3 %613 None |
| %x_548 = OpLoad %v3float %output3 None |
| %615 = OpCompositeExtract %float %x_548 0 |
| %616 = OpCompositeExtract %float %x_548 1 |
| %617 = OpCompositeExtract %float %x_548 2 |
| %618 = OpCompositeConstruct %v4float %615 %616 %617 %float_1 |
| OpStore %glFragColor %618 None |
| OpReturn |
| OpFunctionEnd |
| %main_inner = OpFunction %main_out None %626 |
| %vMainuv_param = OpFunctionParameter %v2float |
| %v_output1_param = OpFunctionParameter %v4float |
| %gl_FrontFacing_param = OpFunctionParameter %bool |
| %v_uv_param = OpFunctionParameter %v2float |
| %v_output2_param = OpFunctionParameter %v4float |
| %627 = OpLabel |
| OpStore %vMainuv %vMainuv_param None |
| OpStore %v_output1 %v_output1_param None |
| OpStore %gl_FrontFacing %gl_FrontFacing_param None |
| OpStore %v_uv %v_uv_param None |
| OpStore %v_output2 %v_output2_param None |
| %628 = OpFunctionCall %void %main_1 |
| %629 = OpLoad %v4float %glFragColor None |
| %630 = OpCompositeConstruct %main_out %629 |
| OpReturnValue %630 |
| OpFunctionEnd |
| %main = OpFunction %void None %302 |
| %632 = OpLabel |
| %633 = OpLoad %v2float %main_loc1_Input None |
| %634 = OpLoad %v4float %main_loc0_Input None |
| %635 = OpLoad %bool %main_front_facing_Input None |
| %636 = OpLoad %v2float %main_loc3_Input None |
| %637 = OpLoad %v4float %main_loc2_Input None |
| %638 = OpFunctionCall %main_out %main_inner %633 %634 %635 %636 %637 |
| %639 = OpCompositeExtract %v4float %638 0 |
| OpStore %main_loc0_Output %639 None |
| OpReturn |
| OpFunctionEnd |