blob: 2632ab34c5e4e821cfe9d8b6acacd30f021d6d64 [file] [log] [blame]
; 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