; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 3 ; Bound: 1532 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %IN_HPosition %IN_Uv_EdgeDistance1 %IN_UvStuds_EdgeDistance2 %IN_Color %IN_LightPosition_Fog %IN_View_Depth %IN_Normal_SpecPower %IN_Tangent %IN_PosLightSpace_Reflectance %IN_studIndex %_entryPointOutput OpExecutionMode %main OriginUpperLeft OpSource HLSL 500 OpName %main "main" OpName %VertexOutput "VertexOutput" OpMemberName %VertexOutput 0 "HPosition" OpMemberName %VertexOutput 1 "Uv_EdgeDistance1" OpMemberName %VertexOutput 2 "UvStuds_EdgeDistance2" OpMemberName %VertexOutput 3 "Color" OpMemberName %VertexOutput 4 "LightPosition_Fog" OpMemberName %VertexOutput 5 "View_Depth" OpMemberName %VertexOutput 6 "Normal_SpecPower" OpMemberName %VertexOutput 7 "Tangent" OpMemberName %VertexOutput 8 "PosLightSpace_Reflectance" OpMemberName %VertexOutput 9 "studIndex" OpName %Surface "Surface" OpMemberName %Surface 0 "albedo" OpMemberName %Surface 1 "normal" OpMemberName %Surface 2 "specular" OpMemberName %Surface 3 "gloss" OpMemberName %Surface 4 "reflectance" OpMemberName %Surface 5 "opacity" OpName %SurfaceInput "SurfaceInput" OpMemberName %SurfaceInput 0 "Color" OpMemberName %SurfaceInput 1 "Uv" OpMemberName %SurfaceInput 2 "UvStuds" OpName %Globals "Globals" OpMemberName %Globals 0 "ViewProjection" OpMemberName %Globals 1 "ViewRight" OpMemberName %Globals 2 "ViewUp" OpMemberName %Globals 3 "ViewDir" OpMemberName %Globals 4 "CameraPosition" OpMemberName %Globals 5 "AmbientColor" OpMemberName %Globals 6 "Lamp0Color" OpMemberName %Globals 7 "Lamp0Dir" OpMemberName %Globals 8 "Lamp1Color" OpMemberName %Globals 9 "FogParams" OpMemberName %Globals 10 "FogColor" OpMemberName %Globals 11 "LightBorder" OpMemberName %Globals 12 "LightConfig0" OpMemberName %Globals 13 "LightConfig1" OpMemberName %Globals 14 "LightConfig2" OpMemberName %Globals 15 "LightConfig3" OpMemberName %Globals 16 "RefractionBias_FadeDistance_GlowFactor" OpMemberName %Globals 17 "OutlineBrightness_ShadowInfo" OpMemberName %Globals 18 "ShadowMatrix0" OpMemberName %Globals 19 "ShadowMatrix1" OpMemberName %Globals 20 "ShadowMatrix2" OpName %CB0 "CB0" OpMemberName %CB0 0 "CB0" OpName %_ "" OpName %LightMapTexture "LightMapTexture" OpName %LightMapSampler "LightMapSampler" OpName %ShadowMapSampler "ShadowMapSampler" OpName %ShadowMapTexture "ShadowMapTexture" OpName %EnvironmentMapTexture "EnvironmentMapTexture" OpName %EnvironmentMapSampler "EnvironmentMapSampler" OpName %IN_HPosition "IN.HPosition" OpName %IN_Uv_EdgeDistance1 "IN.Uv_EdgeDistance1" OpName %IN_UvStuds_EdgeDistance2 "IN.UvStuds_EdgeDistance2" OpName %IN_Color "IN.Color" OpName %IN_LightPosition_Fog "IN.LightPosition_Fog" OpName %IN_View_Depth "IN.View_Depth" OpName %IN_Normal_SpecPower "IN.Normal_SpecPower" OpName %IN_Tangent "IN.Tangent" OpName %IN_PosLightSpace_Reflectance "IN.PosLightSpace_Reflectance" OpName %IN_studIndex "IN.studIndex" OpName %_entryPointOutput "@entryPointOutput" OpName %DiffuseMapSampler "DiffuseMapSampler" OpName %DiffuseMapTexture "DiffuseMapTexture" OpName %NormalMapSampler "NormalMapSampler" OpName %NormalMapTexture "NormalMapTexture" OpName %NormalDetailMapTexture "NormalDetailMapTexture" OpName %NormalDetailMapSampler "NormalDetailMapSampler" OpName %StudsMapTexture "StudsMapTexture" OpName %StudsMapSampler "StudsMapSampler" OpName %SpecularMapSampler "SpecularMapSampler" OpName %SpecularMapTexture "SpecularMapTexture" OpName %Params "Params" OpMemberName %Params 0 "LqmatFarTilingFactor" OpName %CB2 "CB2" OpMemberName %CB2 0 "CB2" OpMemberDecorate %Globals 0 ColMajor OpMemberDecorate %Globals 0 Offset 0 OpMemberDecorate %Globals 0 MatrixStride 16 OpMemberDecorate %Globals 1 Offset 64 OpMemberDecorate %Globals 2 Offset 80 OpMemberDecorate %Globals 3 Offset 96 OpMemberDecorate %Globals 4 Offset 112 OpMemberDecorate %Globals 5 Offset 128 OpMemberDecorate %Globals 6 Offset 144 OpMemberDecorate %Globals 7 Offset 160 OpMemberDecorate %Globals 8 Offset 176 OpMemberDecorate %Globals 9 Offset 192 OpMemberDecorate %Globals 10 Offset 208 OpMemberDecorate %Globals 11 Offset 224 OpMemberDecorate %Globals 12 Offset 240 OpMemberDecorate %Globals 13 Offset 256 OpMemberDecorate %Globals 14 Offset 272 OpMemberDecorate %Globals 15 Offset 288 OpMemberDecorate %Globals 16 Offset 304 OpMemberDecorate %Globals 17 Offset 320 OpMemberDecorate %Globals 18 Offset 336 OpMemberDecorate %Globals 19 Offset 352 OpMemberDecorate %Globals 20 Offset 368 OpMemberDecorate %CB0 0 Offset 0 OpDecorate %CB0 Block OpDecorate %_ DescriptorSet 0 OpDecorate %_ Binding 0 OpDecorate %LightMapTexture DescriptorSet 1 OpDecorate %LightMapTexture Binding 6 OpDecorate %LightMapSampler DescriptorSet 1 OpDecorate %LightMapSampler Binding 6 OpDecorate %ShadowMapSampler DescriptorSet 1 OpDecorate %ShadowMapSampler Binding 1 OpDecorate %ShadowMapTexture DescriptorSet 1 OpDecorate %ShadowMapTexture Binding 1 OpDecorate %EnvironmentMapTexture DescriptorSet 1 OpDecorate %EnvironmentMapTexture Binding 2 OpDecorate %EnvironmentMapSampler DescriptorSet 1 OpDecorate %EnvironmentMapSampler Binding 2 OpDecorate %IN_HPosition BuiltIn FragCoord OpDecorate %IN_Uv_EdgeDistance1 Location 0 OpDecorate %IN_UvStuds_EdgeDistance2 Location 1 OpDecorate %IN_Color Location 2 OpDecorate %IN_LightPosition_Fog Location 3 OpDecorate %IN_View_Depth Location 4 OpDecorate %IN_Normal_SpecPower Location 5 OpDecorate %IN_Tangent Location 6 OpDecorate %IN_PosLightSpace_Reflectance Location 7 OpDecorate %IN_studIndex Location 8 OpDecorate %_entryPointOutput Location 0 OpDecorate %DiffuseMapSampler DescriptorSet 1 OpDecorate %DiffuseMapSampler Binding 3 OpDecorate %DiffuseMapTexture DescriptorSet 1 OpDecorate %DiffuseMapTexture Binding 3 OpDecorate %NormalMapSampler DescriptorSet 1 OpDecorate %NormalMapSampler Binding 4 OpDecorate %NormalMapTexture DescriptorSet 1 OpDecorate %NormalMapTexture Binding 4 OpDecorate %NormalDetailMapTexture DescriptorSet 1 OpDecorate %NormalDetailMapTexture Binding 8 OpDecorate %NormalDetailMapSampler DescriptorSet 1 OpDecorate %NormalDetailMapSampler Binding 8 OpDecorate %StudsMapTexture DescriptorSet 1 OpDecorate %StudsMapTexture Binding 0 OpDecorate %StudsMapSampler DescriptorSet 1 OpDecorate %StudsMapSampler Binding 0 OpDecorate %SpecularMapSampler DescriptorSet 1 OpDecorate %SpecularMapSampler Binding 5 OpDecorate %SpecularMapTexture DescriptorSet 1 OpDecorate %SpecularMapTexture Binding 5 OpMemberDecorate %Params 0 Offset 0 OpMemberDecorate %CB2 0 Offset 0 OpDecorate %CB2 Block %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %_ptr_Function_float = OpTypePointer Function %float %8 = OpTypeFunction %float %_ptr_Function_float %v4float = OpTypeVector %float 4 %_ptr_Function_v4float = OpTypePointer Function %v4float %v3float = OpTypeVector %float 3 %18 = OpTypeFunction %v3float %_ptr_Function_v4float %_ptr_Function_v3float = OpTypePointer Function %v3float %23 = OpTypeFunction %v4float %_ptr_Function_v3float %27 = OpTypeFunction %float %_ptr_Function_v3float %31 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float %36 = OpTypeSampler %_ptr_Function_36 = OpTypePointer Function %36 %38 = OpTypeImage %float 2D 0 0 0 1 Unknown %_ptr_Function_38 = OpTypePointer Function %38 %40 = OpTypeFunction %float %_ptr_Function_36 %_ptr_Function_38 %_ptr_Function_v3float %_ptr_Function_float %VertexOutput = OpTypeStruct %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v3float %v4float %float %_ptr_Function_VertexOutput = OpTypePointer Function %VertexOutput %Surface = OpTypeStruct %v3float %v3float %float %float %float %float %50 = OpTypeFunction %Surface %_ptr_Function_VertexOutput %54 = OpTypeFunction %v4float %_ptr_Function_VertexOutput %v2float = OpTypeVector %float 2 %_ptr_Function_v2float = OpTypePointer Function %v2float %60 = OpTypeFunction %v4float %_ptr_Function_36 %_ptr_Function_38 %_ptr_Function_v2float %_ptr_Function_float %_ptr_Function_float %SurfaceInput = OpTypeStruct %v4float %v2float %v2float %_ptr_Function_SurfaceInput = OpTypePointer Function %SurfaceInput %70 = OpTypeFunction %Surface %_ptr_Function_SurfaceInput %_ptr_Function_v2float %float_0 = OpConstant %float 0 %float_1 = OpConstant %float 1 %float_2 = OpConstant %float 2 %mat4v4float = OpTypeMatrix %v4float 4 %Globals = OpTypeStruct %mat4v4float %v4float %v4float %v4float %v3float %v3float %v3float %v3float %v3float %v4float %v3float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %v4float %CB0 = OpTypeStruct %Globals %_ptr_Uniform_CB0 = OpTypePointer Uniform %CB0 %_ = OpVariable %_ptr_Uniform_CB0 Uniform %int = OpTypeInt 32 1 %int_0 = OpConstant %int 0 %int_15 = OpConstant %int 15 %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %int_14 = OpConstant %int 14 %128 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %133 = OpTypeImage %float 3D 0 0 0 1 Unknown %_ptr_UniformConstant_133 = OpTypePointer UniformConstant %133 %LightMapTexture = OpVariable %_ptr_UniformConstant_133 UniformConstant %_ptr_UniformConstant_36 = OpTypePointer UniformConstant %36 %LightMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %140 = OpTypeSampledImage %133 %int_11 = OpConstant %int 11 %uint = OpTypeInt 32 0 %float_9 = OpConstant %float 9 %float_20 = OpConstant %float 20 %float_0_5 = OpConstant %float 0.5 %183 = OpTypeSampledImage %38 %uint_0 = OpConstant %uint 0 %uint_1 = OpConstant %uint 1 %int_17 = OpConstant %int 17 %uint_3 = OpConstant %uint 3 %_ptr_Uniform_float = OpTypePointer Uniform %float %float_0_25 = OpConstant %float 0.25 %int_5 = OpConstant %int 5 %float_0_00333333 = OpConstant %float 0.00333333 %int_16 = OpConstant %int 16 %_ptr_Function_Surface = OpTypePointer Function %Surface %int_6 = OpConstant %int 6 %int_7 = OpConstant %int 7 %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %int_8 = OpConstant %int 8 %ShadowMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %_ptr_UniformConstant_38 = OpTypePointer UniformConstant %38 %ShadowMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %367 = OpTypeImage %float Cube 0 0 0 1 Unknown %_ptr_UniformConstant_367 = OpTypePointer UniformConstant %367 %EnvironmentMapTexture = OpVariable %_ptr_UniformConstant_367 UniformConstant %EnvironmentMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %373 = OpTypeSampledImage %367 %float_1_5 = OpConstant %float 1.5 %int_10 = OpConstant %int 10 %_ptr_Input_v4float = OpTypePointer Input %v4float %IN_HPosition = OpVariable %_ptr_Input_v4float Input %IN_Uv_EdgeDistance1 = OpVariable %_ptr_Input_v4float Input %IN_UvStuds_EdgeDistance2 = OpVariable %_ptr_Input_v4float Input %IN_Color = OpVariable %_ptr_Input_v4float Input %IN_LightPosition_Fog = OpVariable %_ptr_Input_v4float Input %IN_View_Depth = OpVariable %_ptr_Input_v4float Input %IN_Normal_SpecPower = OpVariable %_ptr_Input_v4float Input %_ptr_Input_v3float = OpTypePointer Input %v3float %IN_Tangent = OpVariable %_ptr_Input_v3float Input %IN_PosLightSpace_Reflectance = OpVariable %_ptr_Input_v4float Input %_ptr_Input_float = OpTypePointer Input %float %IN_studIndex = OpVariable %_ptr_Input_float Input %_ptr_Output_v4float = OpTypePointer Output %v4float %_entryPointOutput = OpVariable %_ptr_Output_v4float Output %bool = OpTypeBool %DiffuseMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %DiffuseMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %NormalMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %NormalMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %NormalDetailMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %NormalDetailMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %float_0_3 = OpConstant %float 0.3 %StudsMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %StudsMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %SpecularMapSampler = OpVariable %_ptr_UniformConstant_36 UniformConstant %SpecularMapTexture = OpVariable %_ptr_UniformConstant_38 UniformConstant %float_0_75 = OpConstant %float 0.75 %float_256 = OpConstant %float 256 %689 = OpConstantComposite %v2float %float_2 %float_256 %float_0_01 = OpConstant %float 0.01 %692 = OpConstantComposite %v2float %float_0 %float_0_01 %float_0_8 = OpConstant %float 0.8 %float_120 = OpConstant %float 120 %697 = OpConstantComposite %v2float %float_0_8 %float_120 %Params = OpTypeStruct %v4float %CB2 = OpTypeStruct %Params %_ptr_Uniform_CB2 = OpTypePointer Uniform %CB2 %false = OpConstantFalse %bool %1509 = OpUndef %VertexOutput %1510 = OpUndef %SurfaceInput %1511 = OpUndef %v2float %1512 = OpUndef %v4float %1531 = OpUndef %Surface %main = OpFunction %void None %3 %5 = OpLabel %501 = OpLoad %v4float %IN_HPosition %1378 = OpCompositeInsert %VertexOutput %501 %1509 0 %504 = OpLoad %v4float %IN_Uv_EdgeDistance1 %1380 = OpCompositeInsert %VertexOutput %504 %1378 1 %507 = OpLoad %v4float %IN_UvStuds_EdgeDistance2 %1382 = OpCompositeInsert %VertexOutput %507 %1380 2 %510 = OpLoad %v4float %IN_Color %1384 = OpCompositeInsert %VertexOutput %510 %1382 3 %513 = OpLoad %v4float %IN_LightPosition_Fog %1386 = OpCompositeInsert %VertexOutput %513 %1384 4 %516 = OpLoad %v4float %IN_View_Depth %1388 = OpCompositeInsert %VertexOutput %516 %1386 5 %519 = OpLoad %v4float %IN_Normal_SpecPower %1390 = OpCompositeInsert %VertexOutput %519 %1388 6 %523 = OpLoad %v3float %IN_Tangent %1392 = OpCompositeInsert %VertexOutput %523 %1390 7 %526 = OpLoad %v4float %IN_PosLightSpace_Reflectance %1394 = OpCompositeInsert %VertexOutput %526 %1392 8 %530 = OpLoad %float %IN_studIndex %1396 = OpCompositeInsert %VertexOutput %530 %1394 9 %1400 = OpCompositeInsert %SurfaceInput %510 %1510 0 %954 = OpVectorShuffle %v2float %504 %504 0 1 %1404 = OpCompositeInsert %SurfaceInput %954 %1400 1 %958 = OpVectorShuffle %v2float %507 %507 0 1 %1408 = OpCompositeInsert %SurfaceInput %958 %1404 2 %1410 = OpCompositeExtract %float %1408 2 1 %962 = OpExtInst %float %1 Fract %1410 %965 = OpFAdd %float %962 %530 %966 = OpFMul %float %965 %float_0_25 %1414 = OpCompositeInsert %SurfaceInput %966 %1408 2 1 %1416 = OpCompositeExtract %float %1396 5 3 %970 = OpFMul %float %1416 %float_0_00333333 %971 = OpFSub %float %float_1 %970 %987 = OpExtInst %float %1 FClamp %971 %float_0 %float_1 %976 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_16 %uint_1 %977 = OpLoad %float %976 %978 = OpFMul %float %1416 %977 %979 = OpFSub %float %float_1 %978 %990 = OpExtInst %float %1 FClamp %979 %float_0 %float_1 %1024 = OpVectorTimesScalar %v2float %954 %float_1 %1029 = OpLoad %36 %DiffuseMapSampler %1030 = OpLoad %38 %DiffuseMapTexture OpBranch %1119 %1119 = OpLabel OpLoopMerge %1120 %1121 None OpBranch %1122 %1122 = OpLabel %1124 = OpFOrdEqual %bool %float_0 %float_0 OpSelectionMerge %1125 None OpBranchConditional %1124 %1126 %1127 %1126 = OpLabel %1130 = OpSampledImage %183 %1030 %1029 %1132 = OpImageSampleImplicitLod %v4float %1130 %1024 OpBranch %1120 %1127 = OpLabel %1134 = OpFSub %float %float_1 %float_0 %1135 = OpFDiv %float %float_1 %1134 %1138 = OpSampledImage %183 %1030 %1029 %1140 = OpVectorTimesScalar %v2float %1024 %float_0_25 %1141 = OpImageSampleImplicitLod %v4float %1138 %1140 %1144 = OpSampledImage %183 %1030 %1029 %1146 = OpImageSampleImplicitLod %v4float %1144 %1024 %1149 = OpFMul %float %987 %1135 %1152 = OpFMul %float %float_0 %1135 %1153 = OpFSub %float %1149 %1152 %1161 = OpExtInst %float %1 FClamp %1153 %float_0 %float_1 %1155 = OpCompositeConstruct %v4float %1161 %1161 %1161 %1161 %1156 = OpExtInst %v4float %1 FMix %1141 %1146 %1155 OpBranch %1120 %1125 = OpLabel %1157 = OpUndef %v4float OpBranch %1120 %1121 = OpLabel OpBranchConditional %false %1119 %1120 %1120 = OpLabel %1517 = OpPhi %v4float %1132 %1126 %1156 %1127 %1157 %1125 %1512 %1121 %1035 = OpVectorTimesScalar %v4float %1517 %float_1 %1036 = OpLoad %36 %NormalMapSampler %1037 = OpLoad %38 %NormalMapTexture OpBranch %1165 %1165 = OpLabel OpLoopMerge %1166 %1167 None OpBranch %1168 %1168 = OpLabel OpSelectionMerge %1171 None OpBranchConditional %1124 %1172 %1173 %1172 = OpLabel %1176 = OpSampledImage %183 %1037 %1036 %1178 = OpImageSampleImplicitLod %v4float %1176 %1024 OpBranch %1166 %1173 = OpLabel %1180 = OpFSub %float %float_1 %float_0 %1181 = OpFDiv %float %float_1 %1180 %1184 = OpSampledImage %183 %1037 %1036 %1186 = OpVectorTimesScalar %v2float %1024 %float_0_25 %1187 = OpImageSampleImplicitLod %v4float %1184 %1186 %1190 = OpSampledImage %183 %1037 %1036 %1192 = OpImageSampleImplicitLod %v4float %1190 %1024 %1195 = OpFMul %float %990 %1181 %1198 = OpFMul %float %float_0 %1181 %1199 = OpFSub %float %1195 %1198 %1206 = OpExtInst %float %1 FClamp %1199 %float_0 %float_1 %1201 = OpCompositeConstruct %v4float %1206 %1206 %1206 %1206 %1202 = OpExtInst %v4float %1 FMix %1187 %1192 %1201 OpBranch %1166 %1171 = OpLabel %1203 = OpUndef %v4float OpBranch %1166 %1167 = OpLabel OpBranchConditional %false %1165 %1166 %1166 = OpLabel %1523 = OpPhi %v4float %1178 %1172 %1202 %1173 %1203 %1171 %1512 %1167 %1210 = OpVectorShuffle %v2float %1523 %1523 3 1 %1211 = OpVectorTimesScalar %v2float %1210 %float_2 %1212 = OpCompositeConstruct %v2float %float_1 %float_1 %1213 = OpFSub %v2float %1211 %1212 %1216 = OpFNegate %v2float %1213 %1218 = OpDot %float %1216 %1213 %1219 = OpFAdd %float %float_1 %1218 %1220 = OpExtInst %float %1 FClamp %1219 %float_0 %float_1 %1221 = OpExtInst %float %1 Sqrt %1220 %1222 = OpCompositeExtract %float %1213 0 %1223 = OpCompositeExtract %float %1213 1 %1224 = OpCompositeConstruct %v3float %1222 %1223 %1221 %1042 = OpLoad %38 %NormalDetailMapTexture %1043 = OpLoad %36 %NormalDetailMapSampler %1044 = OpSampledImage %183 %1042 %1043 %1046 = OpVectorTimesScalar %v2float %1024 %float_0 %1047 = OpImageSampleImplicitLod %v4float %1044 %1046 %1228 = OpVectorShuffle %v2float %1047 %1047 3 1 %1229 = OpVectorTimesScalar %v2float %1228 %float_2 %1231 = OpFSub %v2float %1229 %1212 %1234 = OpFNegate %v2float %1231 %1236 = OpDot %float %1234 %1231 %1237 = OpFAdd %float %float_1 %1236 %1238 = OpExtInst %float %1 FClamp %1237 %float_0 %float_1 %1239 = OpExtInst %float %1 Sqrt %1238 %1240 = OpCompositeExtract %float %1231 0 %1241 = OpCompositeExtract %float %1231 1 %1242 = OpCompositeConstruct %v3float %1240 %1241 %1239 %1050 = OpVectorShuffle %v2float %1242 %1242 0 1 %1051 = OpVectorTimesScalar %v2float %1050 %float_0 %1053 = OpVectorShuffle %v2float %1224 %1224 0 1 %1054 = OpFAdd %v2float %1053 %1051 %1056 = OpVectorShuffle %v3float %1224 %1054 3 4 2 %1059 = OpVectorShuffle %v2float %1056 %1056 0 1 %1060 = OpVectorTimesScalar %v2float %1059 %990 %1062 = OpVectorShuffle %v3float %1056 %1060 3 4 2 %1430 = OpCompositeExtract %float %1062 0 %1065 = OpFMul %float %1430 %float_0_3 %1066 = OpFAdd %float %float_1 %1065 %1069 = OpVectorShuffle %v3float %510 %510 0 1 2 %1071 = OpVectorShuffle %v3float %1035 %1035 0 1 2 %1072 = OpFMul %v3float %1069 %1071 %1074 = OpVectorTimesScalar %v3float %1072 %1066 %1075 = OpLoad %38 %StudsMapTexture %1076 = OpLoad %36 %StudsMapSampler %1077 = OpSampledImage %183 %1075 %1076 %1434 = OpCompositeExtract %v2float %1414 2 %1080 = OpImageSampleImplicitLod %v4float %1077 %1434 %1436 = OpCompositeExtract %float %1080 0 %1083 = OpFMul %float %1436 %float_2 %1085 = OpVectorTimesScalar %v3float %1074 %1083 %1086 = OpLoad %36 %SpecularMapSampler %1087 = OpLoad %38 %SpecularMapTexture OpBranch %1246 %1246 = OpLabel OpLoopMerge %1247 %1248 None OpBranch %1249 %1249 = OpLabel %1251 = OpFOrdEqual %bool %float_0_75 %float_0 OpSelectionMerge %1252 None OpBranchConditional %1251 %1253 %1254 %1253 = OpLabel %1257 = OpSampledImage %183 %1087 %1086 %1259 = OpImageSampleImplicitLod %v4float %1257 %1024 OpBranch %1247 %1254 = OpLabel %1261 = OpFSub %float %float_1 %float_0_75 %1262 = OpFDiv %float %float_1 %1261 %1265 = OpSampledImage %183 %1087 %1086 %1267 = OpVectorTimesScalar %v2float %1024 %float_0_25 %1268 = OpImageSampleImplicitLod %v4float %1265 %1267 %1271 = OpSampledImage %183 %1087 %1086 %1273 = OpImageSampleImplicitLod %v4float %1271 %1024 %1276 = OpFMul %float %990 %1262 %1279 = OpFMul %float %float_0_75 %1262 %1280 = OpFSub %float %1276 %1279 %1287 = OpExtInst %float %1 FClamp %1280 %float_0 %float_1 %1282 = OpCompositeConstruct %v4float %1287 %1287 %1287 %1287 %1283 = OpExtInst %v4float %1 FMix %1268 %1273 %1282 OpBranch %1247 %1252 = OpLabel %1284 = OpUndef %v4float OpBranch %1247 %1248 = OpLabel OpBranchConditional %false %1246 %1247 %1247 = OpLabel %1530 = OpPhi %v4float %1259 %1253 %1283 %1254 %1284 %1252 %1512 %1248 %1091 = OpVectorShuffle %v2float %1530 %1530 0 1 %1093 = OpFMul %v2float %1091 %689 %1094 = OpFAdd %v2float %1093 %692 %1097 = OpCompositeConstruct %v2float %990 %990 %1098 = OpExtInst %v2float %1 FMix %697 %1094 %1097 %1438 = OpCompositeInsert %Surface %1085 %1531 0 %1440 = OpCompositeInsert %Surface %1062 %1438 1 %1442 = OpCompositeExtract %float %1098 0 %1444 = OpCompositeInsert %Surface %1442 %1440 2 %1446 = OpCompositeExtract %float %1098 1 %1448 = OpCompositeInsert %Surface %1446 %1444 3 %1450 = OpCompositeExtract %float %1091 1 %1112 = OpFMul %float %1450 %990 %1113 = OpFMul %float %1112 %float_0 %1452 = OpCompositeInsert %Surface %1113 %1448 4 %1456 = OpCompositeExtract %float %1396 3 3 %764 = OpCompositeExtract %float %1085 0 %765 = OpCompositeExtract %float %1085 1 %766 = OpCompositeExtract %float %1085 2 %767 = OpCompositeConstruct %v4float %764 %765 %766 %1456 %770 = OpVectorShuffle %v3float %519 %519 0 1 2 %773 = OpExtInst %v3float %1 Cross %770 %523 %1462 = OpCompositeExtract %float %1452 1 0 %778 = OpVectorTimesScalar %v3float %523 %1462 %1466 = OpCompositeExtract %float %1452 1 1 %782 = OpVectorTimesScalar %v3float %773 %1466 %783 = OpFAdd %v3float %778 %782 %1468 = OpCompositeExtract %float %1452 1 2 %789 = OpVectorTimesScalar %v3float %770 %1468 %790 = OpFAdd %v3float %783 %789 %791 = OpExtInst %v3float %1 Normalize %790 %793 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0 %int_7 %794 = OpLoad %v3float %793 %795 = OpFNegate %v3float %794 %796 = OpDot %float %791 %795 %1290 = OpExtInst %float %1 FClamp %796 %float_0 %float_1 %799 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0 %int_6 %800 = OpLoad %v3float %799 %801 = OpVectorTimesScalar %v3float %800 %1290 %803 = OpFNegate %float %796 %804 = OpExtInst %float %1 FMax %803 %float_0 %805 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0 %int_8 %806 = OpLoad %v3float %805 %807 = OpVectorTimesScalar %v3float %806 %804 %808 = OpFAdd %v3float %801 %807 %810 = OpExtInst %float %1 Step %float_0 %796 %813 = OpFMul %float %810 %1442 %820 = OpVectorShuffle %v3float %513 %513 0 1 2 %1296 = OpAccessChain %_ptr_Uniform_v4float %_ %int_0 %int_15 %1297 = OpLoad %v4float %1296 %1298 = OpVectorShuffle %v3float %1297 %1297 0 1 2 %1300 = OpAccessChain %_ptr_Uniform_v4float %_ %int_0 %int_14 %1301 = OpLoad %v4float %1300 %1302 = OpVectorShuffle %v3float %1301 %1301 0 1 2 %1303 = OpFSub %v3float %820 %1302 %1304 = OpExtInst %v3float %1 FAbs %1303 %1305 = OpExtInst %v3float %1 Step %1298 %1304 %1307 = OpDot %float %1305 %128 %1328 = OpExtInst %float %1 FClamp %1307 %float_0 %float_1 %1309 = OpLoad %133 %LightMapTexture %1310 = OpLoad %36 %LightMapSampler %1311 = OpSampledImage %140 %1309 %1310 %1313 = OpVectorShuffle %v3float %820 %820 1 2 0 %1317 = OpVectorTimesScalar %v3float %1313 %1328 %1318 = OpFSub %v3float %1313 %1317 %1319 = OpImageSampleImplicitLod %v4float %1311 %1318 %1321 = OpAccessChain %_ptr_Uniform_v4float %_ %int_0 %int_11 %1322 = OpLoad %v4float %1321 %1324 = OpCompositeConstruct %v4float %1328 %1328 %1328 %1328 %1325 = OpExtInst %v4float %1 FMix %1319 %1322 %1324 %822 = OpLoad %36 %ShadowMapSampler %823 = OpLoad %38 %ShadowMapTexture %826 = OpVectorShuffle %v3float %526 %526 0 1 2 %1482 = OpCompositeExtract %float %1325 3 %1337 = OpSampledImage %183 %823 %822 %1339 = OpVectorShuffle %v2float %826 %826 0 1 %1340 = OpImageSampleImplicitLod %v4float %1337 %1339 %1341 = OpVectorShuffle %v2float %1340 %1340 0 1 %1484 = OpCompositeExtract %float %826 2 %1486 = OpCompositeExtract %float %1341 0 %1363 = OpExtInst %float %1 Step %1486 %1484 %1365 = OpFSub %float %1484 %float_0_5 %1366 = OpExtInst %float %1 FAbs %1365 %1367 = OpFMul %float %float_20 %1366 %1368 = OpFSub %float %float_9 %1367 %1369 = OpExtInst %float %1 FClamp %1368 %float_0 %float_1 %1370 = OpFMul %float %1363 %1369 %1488 = OpCompositeExtract %float %1341 1 %1350 = OpFMul %float %1370 %1488 %1351 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_17 %uint_3 %1352 = OpLoad %float %1351 %1353 = OpFMul %float %1350 %1352 %1354 = OpFSub %float %float_1 %1353 %1356 = OpFMul %float %1354 %1482 %830 = OpLoad %367 %EnvironmentMapTexture %831 = OpLoad %36 %EnvironmentMapSampler %832 = OpSampledImage %373 %830 %831 %835 = OpVectorShuffle %v3float %516 %516 0 1 2 %836 = OpFNegate %v3float %835 %838 = OpExtInst %v3float %1 Reflect %836 %791 %839 = OpImageSampleImplicitLod %v4float %832 %838 %840 = OpVectorShuffle %v3float %839 %839 0 1 2 %842 = OpVectorShuffle %v3float %767 %767 0 1 2 %845 = OpCompositeConstruct %v3float %1113 %1113 %1113 %846 = OpExtInst %v3float %1 FMix %842 %840 %845 %848 = OpVectorShuffle %v4float %767 %846 4 5 6 3 %849 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0 %int_5 %850 = OpLoad %v3float %849 %853 = OpVectorTimesScalar %v3float %808 %1356 %854 = OpFAdd %v3float %850 %853 %856 = OpVectorShuffle %v3float %1325 %1325 0 1 2 %857 = OpFAdd %v3float %854 %856 %859 = OpVectorShuffle %v3float %848 %848 0 1 2 %860 = OpFMul %v3float %857 %859 %865 = OpFMul %float %813 %1356 %873 = OpExtInst %v3float %1 Normalize %835 %874 = OpFAdd %v3float %795 %873 %875 = OpExtInst %v3float %1 Normalize %874 %876 = OpDot %float %791 %875 %877 = OpExtInst %float %1 FClamp %876 %float_0 %float_1 %879 = OpExtInst %float %1 Pow %877 %1446 %880 = OpFMul %float %865 %879 %881 = OpVectorTimesScalar %v3float %800 %880 %884 = OpFAdd %v3float %860 %881 %886 = OpVectorShuffle %v4float %1512 %884 4 5 6 3 %1494 = OpCompositeExtract %float %848 3 %1496 = OpCompositeInsert %v4float %1494 %886 3 %896 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_17 %uint_0 %897 = OpLoad %float %896 %898 = OpFMul %float %978 %897 %899 = OpAccessChain %_ptr_Uniform_float %_ %int_0 %int_17 %uint_1 %900 = OpLoad %float %899 %901 = OpFAdd %float %898 %900 %1373 = OpExtInst %float %1 FClamp %901 %float_0 %float_1 %905 = OpVectorShuffle %v2float %504 %504 3 2 %908 = OpVectorShuffle %v2float %507 %507 3 2 %909 = OpExtInst %v2float %1 FMin %905 %908 %1504 = OpCompositeExtract %float %909 0 %1506 = OpCompositeExtract %float %909 1 %914 = OpExtInst %float %1 FMin %1504 %1506 %916 = OpFDiv %float %914 %978 %919 = OpFSub %float %float_1_5 %916 %920 = OpFMul %float %1373 %919 %922 = OpFAdd %float %920 %916 %1376 = OpExtInst %float %1 FClamp %922 %float_0 %float_1 %925 = OpVectorShuffle %v3float %1496 %1496 0 1 2 %926 = OpVectorTimesScalar %v3float %925 %1376 %928 = OpVectorShuffle %v4float %1496 %926 4 5 6 3 %1508 = OpCompositeExtract %float %1396 4 3 %931 = OpExtInst %float %1 FClamp %1508 %float_0 %float_1 %932 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0 %int_10 %933 = OpLoad %v3float %932 %935 = OpVectorShuffle %v3float %928 %928 0 1 2 %937 = OpCompositeConstruct %v3float %931 %931 %931 %938 = OpExtInst %v3float %1 FMix %933 %935 %937 %940 = OpVectorShuffle %v4float %928 %938 4 5 6 3 OpStore %_entryPointOutput %940 OpReturn OpFunctionEnd