blob: 2f1a75b8f2e7e7b4f43df709a5ddf65f24da1ba2 [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 667
; Schema: 0
OpCapability Shader
%90 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %vMainuv_param_1 %v_output1_param_1 %gl_FrontFacing_param_1 %v_uv_param_1 %v_output2_param_1 %glFragColor_1_1
OpExecutionMode %main OriginUpperLeft
OpName %vMainuv_param_1 "vMainuv_param_1"
OpName %v_output1_param_1 "v_output1_param_1"
OpName %gl_FrontFacing_param_1 "gl_FrontFacing_param_1"
OpName %v_uv_param_1 "v_uv_param_1"
OpName %v_output2_param_1 "v_output2_param_1"
OpName %glFragColor_1_1 "glFragColor_1_1"
OpName %u_Float "u_Float"
OpName %u_Color "u_Color"
OpName %TextureSamplerTexture "TextureSamplerTexture"
OpName %TextureSamplerSampler "TextureSamplerSampler"
OpName %vMainuv "vMainuv"
OpName %x_269_block "x_269_block"
OpMemberName %x_269_block 0 "inner"
OpName %LeftOver "LeftOver"
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 %x_269 "x_269"
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"
OpName %light0_block "light0_block"
OpMemberName %light0_block 0 "inner"
OpName %Light0 "Light0"
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"
OpName %glFragColor "glFragColor"
OpName %bumpSamplerSampler "bumpSamplerSampler"
OpName %bumpSamplerTexture "bumpSamplerTexture"
OpName %cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F "cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F"
OpName %normal_1 "normal_1"
OpName %p "p"
OpName %uv "uv"
OpName %tangentSpaceParams "tangentSpaceParams"
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 %transposeMat3_mf33__F "transposeMat3_mf33__F"
OpName %inMatrix "inMatrix"
OpName %i0 "i0"
OpName %i1 "i1"
OpName %i2 "i2"
OpName %outMatrix "outMatrix"
OpName %perturbNormalBase_mf33_vf3_f1__F_F_F "perturbNormalBase_mf33_vf3_f1__F_F_F"
OpName %cotangentFrame "cotangentFrame"
OpName %normal "normal"
OpName %scale "scale"
OpName %perturbNormal_mf33_vf3_f1__F_F_F "perturbNormal_mf33_vf3_f1__F_F_F"
OpName %cotangentFrame_1 "cotangentFrame_1"
OpName %textureSample "textureSample"
OpName %scale_1 "scale_1"
OpName %param "param"
OpName %param_1 "param_1"
OpName %param_2 "param_2"
OpName %lightingInfo "lightingInfo"
OpMemberName %lightingInfo 0 "diffuse"
OpMemberName %lightingInfo 1 "specular"
OpName %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F "computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F"
OpName %viewDirectionW "viewDirectionW"
OpName %vNormal "vNormal"
OpName %lightData "lightData"
OpName %diffuseColor "diffuseColor"
OpName %specularColor "specularColor"
OpName %groundColor "groundColor"
OpName %glossiness "glossiness"
OpName %ndl "ndl"
OpName %result "result"
OpName %angleW "angleW"
OpName %specComp "specComp"
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 %main_out "main_out"
OpMemberName %main_out 0 "glFragColor_1"
OpName %main_inner "main_inner"
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 %vMainuv_param_1 Location 1
OpDecorate %v_output1_param_1 Location 0
OpDecorate %gl_FrontFacing_param_1 BuiltIn FrontFacing
OpDecorate %v_uv_param_1 Location 3
OpDecorate %v_output2_param_1 Location 2
OpDecorate %glFragColor_1_1 Location 0
OpDecorate %TextureSamplerTexture DescriptorSet 2
OpDecorate %TextureSamplerTexture Binding 1
OpDecorate %TextureSamplerSampler DescriptorSet 2
OpDecorate %TextureSamplerSampler Binding 0
OpDecorate %x_269_block Block
OpMemberDecorate %x_269_block 0 Offset 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
OpDecorate %x_269 NonWritable
OpDecorate %x_269 DescriptorSet 2
OpDecorate %x_269 Binding 6
OpDecorate %TextureSampler1Texture DescriptorSet 2
OpDecorate %TextureSampler1Texture Binding 3
OpDecorate %TextureSampler1Sampler DescriptorSet 2
OpDecorate %TextureSampler1Sampler Binding 2
OpDecorate %light0_block Block
OpMemberDecorate %light0_block 0 Offset 0
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
OpDecorate %light0 NonWritable
OpDecorate %light0 DescriptorSet 0
OpDecorate %light0 Binding 5
OpDecorate %bumpSamplerSampler DescriptorSet 2
OpDecorate %bumpSamplerSampler Binding 4
OpDecorate %bumpSamplerTexture DescriptorSet 2
OpDecorate %bumpSamplerTexture Binding 5
OpMemberDecorate %lightingInfo 0 Offset 0
OpMemberDecorate %lightingInfo 1 Offset 16
OpMemberDecorate %main_out 0 Offset 0
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%vMainuv_param_1 = OpVariable %_ptr_Input_v2float Input
%v4float = OpTypeVector %float 4
%_ptr_Input_v4float = OpTypePointer Input %v4float
%v_output1_param_1 = OpVariable %_ptr_Input_v4float Input
%bool = OpTypeBool
%_ptr_Input_bool = OpTypePointer Input %bool
%gl_FrontFacing_param_1 = OpVariable %_ptr_Input_bool Input
%v_uv_param_1 = OpVariable %_ptr_Input_v2float Input
%v_output2_param_1 = OpVariable %_ptr_Input_v4float Input
%_ptr_Output_v4float = OpTypePointer Output %v4float
%15 = OpConstantNull %v4float
%glFragColor_1_1 = OpVariable %_ptr_Output_v4float Output %15
%_ptr_Private_float = OpTypePointer Private %float
%18 = OpConstantNull %float
%u_Float = OpVariable %_ptr_Private_float Private %18
%v3float = OpTypeVector %float 3
%_ptr_Private_v3float = OpTypePointer Private %v3float
%22 = OpConstantNull %v3float
%u_Color = OpVariable %_ptr_Private_v3float Private %22
%25 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25
%TextureSamplerTexture = OpVariable %_ptr_UniformConstant_25 UniformConstant
%28 = OpTypeSampler
%_ptr_UniformConstant_28 = OpTypePointer UniformConstant %28
%TextureSamplerSampler = OpVariable %_ptr_UniformConstant_28 UniformConstant
%_ptr_Private_v2float = OpTypePointer Private %v2float
%31 = OpConstantNull %v2float
%vMainuv = OpVariable %_ptr_Private_v2float Private %31
%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
%x_269 = OpVariable %_ptr_Uniform_x_269_block Uniform
%_ptr_Private_v4float = OpTypePointer Private %v4float
%v_output1 = OpVariable %_ptr_Private_v4float Private %15
%_ptr_Private_bool = OpTypePointer Private %bool
%42 = OpConstantNull %bool
%gl_FrontFacing = OpVariable %_ptr_Private_bool Private %42
%v_uv = OpVariable %_ptr_Private_v2float Private %31
%v_output2 = OpVariable %_ptr_Private_v4float Private %15
%TextureSampler1Texture = OpVariable %_ptr_UniformConstant_25 UniformConstant
%TextureSampler1Sampler = OpVariable %_ptr_UniformConstant_28 UniformConstant
%Light0 = OpTypeStruct %v4float %v4float %v4float %v3float %uint %v4float %v2float
%light0_block = OpTypeStruct %Light0
%_ptr_Uniform_light0_block = OpTypePointer Uniform %light0_block
%light0 = OpVariable %_ptr_Uniform_light0_block Uniform
%glFragColor = OpVariable %_ptr_Private_v4float Private %15
%bumpSamplerSampler = OpVariable %_ptr_UniformConstant_28 UniformConstant
%bumpSamplerTexture = OpVariable %_ptr_UniformConstant_25 UniformConstant
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%54 = 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
%154 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float
%163 = OpConstantNull %mat3v3float
%int = OpTypeInt 32 1
%166 = OpConstantNull %int
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%uint_2 = OpConstant %uint 2
%213 = OpTypeFunction %v3float %_ptr_Function_mat3v3float %_ptr_Function_v3float %_ptr_Function_float
%float_2 = OpConstant %float 2
%float_1 = OpConstant %float 1
%240 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%lightingInfo = OpTypeStruct %v3float %v3float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%248 = 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
%263 = OpConstantNull %lightingInfo
%float_0_5 = OpConstant %float 0.5
%void = OpTypeVoid
%312 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int
%float_100 = OpConstant %float 100
%371 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
%376 = OpTypeSampledImage %25
%uint_6 = OpConstant %uint 6
%_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_4 = OpConstant %uint 4
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%uint_8 = OpConstant %uint 8
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%uint_5 = OpConstant %uint 5
%float_15 = OpConstant %float 15
%float_n11 = OpConstant %float -11
%int_15 = OpConstant %int 15
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%uint_3 = OpConstant %uint 3
%main_out = OpTypeStruct %v4float
%646 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float
%cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F = OpFunction %mat3v3float None %54
%normal_1 = OpFunctionParameter %_ptr_Function_v3float
%p = OpFunctionParameter %_ptr_Function_v3float
%uv = OpFunctionParameter %_ptr_Function_v2float
%tangentSpaceParams = OpFunctionParameter %_ptr_Function_v2float
%63 = OpLabel
%dp1 = OpVariable %_ptr_Function_v3float Function %22
%dp2 = OpVariable %_ptr_Function_v3float Function %22
%duv1 = OpVariable %_ptr_Function_v2float Function %31
%duv2 = OpVariable %_ptr_Function_v2float Function %31
%dp2perp = OpVariable %_ptr_Function_v3float Function %22
%dp1perp = OpVariable %_ptr_Function_v3float Function %22
%tangent = OpVariable %_ptr_Function_v3float Function %22
%bitangent = OpVariable %_ptr_Function_v3float Function %22
%invmax = OpVariable %_ptr_Function_float Function %18
%75 = OpLoad %v3float %p
%76 = OpDPdx %v3float %75
OpStore %dp1 %76
%78 = OpLoad %v3float %p
%79 = OpDPdy %v3float %78
OpStore %dp2 %79
%81 = OpLoad %v2float %uv
%82 = OpDPdx %v2float %81
OpStore %duv1 %82
%84 = OpLoad %v2float %uv
%85 = OpDPdy %v2float %84
OpStore %duv2 %85
%86 = OpLoad %v3float %dp2
%88 = OpLoad %v3float %normal_1
%89 = OpExtInst %v3float %90 Cross %86 %88
OpStore %dp2perp %89
%92 = OpLoad %v3float %normal_1
%93 = OpLoad %v3float %dp1
%94 = OpExtInst %v3float %90 Cross %92 %93
OpStore %dp1perp %94
%95 = OpLoad %v3float %dp2perp
%97 = OpAccessChain %_ptr_Function_float %duv1 %uint_0
%98 = OpLoad %float %97
%99 = OpLoad %v3float %dp1perp
%100 = OpAccessChain %_ptr_Function_float %duv2 %uint_0
%101 = OpLoad %float %100
%102 = OpVectorTimesScalar %v3float %95 %98
%103 = OpVectorTimesScalar %v3float %99 %101
%104 = OpFAdd %v3float %102 %103
OpStore %tangent %104
%105 = OpLoad %v3float %dp2perp
%107 = OpAccessChain %_ptr_Function_float %duv1 %uint_1
%108 = OpLoad %float %107
%109 = OpLoad %v3float %dp1perp
%110 = OpAccessChain %_ptr_Function_float %duv2 %uint_1
%111 = OpLoad %float %110
%112 = OpVectorTimesScalar %v3float %105 %108
%113 = OpVectorTimesScalar %v3float %109 %111
%114 = OpFAdd %v3float %112 %113
OpStore %bitangent %114
%116 = OpAccessChain %_ptr_Function_float %tangentSpaceParams %uint_0
%117 = OpLoad %float %116
%118 = OpLoad %v3float %tangent
%119 = OpVectorTimesScalar %v3float %118 %117
OpStore %tangent %119
%121 = OpAccessChain %_ptr_Function_float %tangentSpaceParams %uint_1
%122 = OpLoad %float %121
%123 = OpLoad %v3float %bitangent
%124 = OpVectorTimesScalar %v3float %123 %122
OpStore %bitangent %124
%125 = OpLoad %v3float %tangent
%126 = OpLoad %v3float %tangent
%127 = OpLoad %v3float %bitangent
%128 = OpLoad %v3float %bitangent
%131 = OpDot %float %125 %126
%132 = OpDot %float %127 %128
%130 = OpExtInst %float %90 NMax %131 %132
%129 = OpExtInst %float %90 InverseSqrt %130
OpStore %invmax %129
%133 = OpLoad %v3float %tangent
%134 = OpLoad %float %invmax
%135 = OpVectorTimesScalar %v3float %133 %134
%136 = OpLoad %v3float %bitangent
%137 = OpLoad %float %invmax
%138 = OpVectorTimesScalar %v3float %136 %137
%140 = OpLoad %v3float %normal_1
%141 = OpCompositeExtract %float %135 0
%142 = OpCompositeExtract %float %135 1
%143 = OpCompositeExtract %float %135 2
%144 = OpCompositeConstruct %v3float %141 %142 %143
%145 = OpCompositeExtract %float %138 0
%146 = OpCompositeExtract %float %138 1
%147 = OpCompositeExtract %float %138 2
%148 = OpCompositeConstruct %v3float %145 %146 %147
%149 = OpCompositeExtract %float %140 0
%150 = OpCompositeExtract %float %140 1
%151 = OpCompositeExtract %float %140 2
%152 = OpCompositeConstruct %v3float %149 %150 %151
%153 = OpCompositeConstruct %mat3v3float %144 %148 %152
OpReturnValue %153
OpFunctionEnd
%transposeMat3_mf33__F = OpFunction %mat3v3float None %154
%inMatrix = OpFunctionParameter %_ptr_Function_mat3v3float
%158 = OpLabel
%i0 = OpVariable %_ptr_Function_v3float Function %22
%i1 = OpVariable %_ptr_Function_v3float Function %22
%i2 = OpVariable %_ptr_Function_v3float Function %22
%outMatrix = OpVariable %_ptr_Function_mat3v3float Function %163
%167 = OpAccessChain %_ptr_Function_v3float %inMatrix %166
%168 = OpLoad %v3float %167
OpStore %i0 %168
%171 = OpAccessChain %_ptr_Function_v3float %inMatrix %int_1
%172 = OpLoad %v3float %171
OpStore %i1 %172
%175 = OpAccessChain %_ptr_Function_v3float %inMatrix %int_2
%176 = OpLoad %v3float %175
OpStore %i2 %176
%177 = OpAccessChain %_ptr_Function_float %i0 %uint_0
%178 = OpLoad %float %177
%179 = OpAccessChain %_ptr_Function_float %i1 %uint_0
%180 = OpLoad %float %179
%181 = OpAccessChain %_ptr_Function_float %i2 %uint_0
%182 = OpLoad %float %181
%183 = OpCompositeConstruct %v3float %178 %180 %182
%184 = OpAccessChain %_ptr_Function_float %i0 %uint_1
%185 = OpLoad %float %184
%186 = OpAccessChain %_ptr_Function_float %i1 %uint_1
%187 = OpLoad %float %186
%188 = OpAccessChain %_ptr_Function_float %i2 %uint_1
%189 = OpLoad %float %188
%190 = OpCompositeConstruct %v3float %185 %187 %189
%192 = OpAccessChain %_ptr_Function_float %i0 %uint_2
%193 = OpLoad %float %192
%194 = OpAccessChain %_ptr_Function_float %i1 %uint_2
%195 = OpLoad %float %194
%196 = OpAccessChain %_ptr_Function_float %i2 %uint_2
%197 = OpLoad %float %196
%198 = OpCompositeConstruct %v3float %193 %195 %197
%199 = OpCompositeExtract %float %183 0
%200 = OpCompositeExtract %float %183 1
%201 = OpCompositeExtract %float %183 2
%202 = OpCompositeConstruct %v3float %199 %200 %201
%203 = OpCompositeExtract %float %190 0
%204 = OpCompositeExtract %float %190 1
%205 = OpCompositeExtract %float %190 2
%206 = OpCompositeConstruct %v3float %203 %204 %205
%207 = OpCompositeExtract %float %198 0
%208 = OpCompositeExtract %float %198 1
%209 = OpCompositeExtract %float %198 2
%210 = OpCompositeConstruct %v3float %207 %208 %209
%211 = OpCompositeConstruct %mat3v3float %202 %206 %210
OpStore %outMatrix %211
%212 = OpLoad %mat3v3float %outMatrix
OpReturnValue %212
OpFunctionEnd
%perturbNormalBase_mf33_vf3_f1__F_F_F = OpFunction %v3float None %213
%cotangentFrame = OpFunctionParameter %_ptr_Function_mat3v3float
%normal = OpFunctionParameter %_ptr_Function_v3float
%scale = OpFunctionParameter %_ptr_Function_float
%218 = OpLabel
%220 = OpLoad %mat3v3float %cotangentFrame
%222 = OpLoad %v3float %normal
%224 = OpMatrixTimesVector %v3float %220 %222
%223 = OpExtInst %v3float %90 Normalize %224
OpReturnValue %223
OpFunctionEnd
%perturbNormal_mf33_vf3_f1__F_F_F = OpFunction %v3float None %213
%cotangentFrame_1 = OpFunctionParameter %_ptr_Function_mat3v3float
%textureSample = OpFunctionParameter %_ptr_Function_v3float
%scale_1 = OpFunctionParameter %_ptr_Function_float
%229 = OpLabel
%param = OpVariable %_ptr_Function_mat3v3float Function %163
%param_1 = OpVariable %_ptr_Function_v3float Function %22
%param_2 = OpVariable %_ptr_Function_float Function %18
%234 = OpLoad %v3float %textureSample
%236 = OpLoad %mat3v3float %cotangentFrame_1
OpStore %param %236
%238 = OpVectorTimesScalar %v3float %234 %float_2
%241 = OpFSub %v3float %238 %240
OpStore %param_1 %241
%243 = OpLoad %float %scale_1
OpStore %param_2 %243
%244 = OpFunctionCall %v3float %perturbNormalBase_mf33_vf3_f1__F_F_F %param %param_1 %param_2
OpReturnValue %244
OpFunctionEnd
%computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F = OpFunction %lightingInfo None %248
%viewDirectionW = OpFunctionParameter %_ptr_Function_v3float
%vNormal = OpFunctionParameter %_ptr_Function_v3float
%lightData = OpFunctionParameter %_ptr_Function_v4float
%diffuseColor = OpFunctionParameter %_ptr_Function_v3float
%specularColor = OpFunctionParameter %_ptr_Function_v3float
%groundColor = OpFunctionParameter %_ptr_Function_v3float
%glossiness = OpFunctionParameter %_ptr_Function_float
%259 = OpLabel
%ndl = OpVariable %_ptr_Function_float Function %18
%result = OpVariable %_ptr_Function_lightingInfo Function %263
%angleW = OpVariable %_ptr_Function_v3float Function %22
%specComp = OpVariable %_ptr_Function_float Function %18
%267 = OpLoad %v3float %vNormal
%269 = OpLoad %v4float %lightData
%271 = OpCompositeExtract %float %269 0
%272 = OpCompositeExtract %float %269 1
%273 = OpCompositeExtract %float %269 2
%274 = OpCompositeConstruct %v3float %271 %272 %273
%270 = OpDot %float %267 %274
%276 = OpFMul %float %270 %float_0_5
%277 = OpFAdd %float %276 %float_0_5
OpStore %ndl %277
%279 = OpLoad %v3float %groundColor
%281 = OpLoad %v3float %diffuseColor
%282 = OpLoad %float %ndl
%283 = OpAccessChain %_ptr_Function_v3float %result %uint_0
%285 = OpCompositeConstruct %v3float %282 %282 %282
%284 = OpExtInst %v3float %90 FMix %279 %281 %285
OpStore %283 %284
%287 = OpLoad %v3float %viewDirectionW
%289 = OpLoad %v4float %lightData
%291 = OpCompositeExtract %float %289 0
%292 = OpCompositeExtract %float %289 1
%293 = OpCompositeExtract %float %289 2
%294 = OpCompositeConstruct %v3float %291 %292 %293
%295 = OpFAdd %v3float %287 %294
%290 = OpExtInst %v3float %90 Normalize %295
OpStore %angleW %290
%297 = OpLoad %v3float %vNormal
%298 = OpLoad %v3float %angleW
%300 = OpDot %float %297 %298
%299 = OpExtInst %float %90 NMax %18 %300
OpStore %specComp %299
%301 = OpLoad %float %specComp
%303 = OpLoad %float %glossiness
%305 = OpExtInst %float %90 NMax %float_1 %303
%304 = OpExtInst %float %90 Pow %301 %305
OpStore %specComp %304
%306 = OpLoad %float %specComp
%308 = OpLoad %v3float %specularColor
%309 = OpAccessChain %_ptr_Function_v3float %result %uint_1
%310 = OpVectorTimesScalar %v3float %308 %306
OpStore %309 %310
%311 = OpLoad %lightingInfo %result
OpReturnValue %311
OpFunctionEnd
%main_1 = OpFunction %void None %312
%315 = OpLabel
%tempTextureRead = OpVariable %_ptr_Function_v4float Function %15
%rgb = OpVariable %_ptr_Function_v3float Function %22
%output5 = OpVariable %_ptr_Function_v3float Function %22
%output4 = OpVariable %_ptr_Function_v4float Function %15
%uvOffset = OpVariable %_ptr_Function_v2float Function %31
%normalScale = OpVariable %_ptr_Function_float Function %18
%TBNUV = OpVariable %_ptr_Function_v2float Function %31
%x_299 = OpVariable %_ptr_Function_v2float Function %31
%TBN = OpVariable %_ptr_Function_mat3v3float Function %163
%param_3 = OpVariable %_ptr_Function_v3float Function %22
%param_4 = OpVariable %_ptr_Function_v3float Function %22
%param_5 = OpVariable %_ptr_Function_v2float Function %31
%param_6 = OpVariable %_ptr_Function_v2float Function %31
%invTBN = OpVariable %_ptr_Function_mat3v3float Function %163
%param_7 = OpVariable %_ptr_Function_mat3v3float Function %163
%parallaxLimit = OpVariable %_ptr_Function_float Function %18
%vOffsetDir = OpVariable %_ptr_Function_v2float Function %31
%vMaxOffset = OpVariable %_ptr_Function_v2float Function %31
%numSamples = OpVariable %_ptr_Function_float Function %18
%stepSize = OpVariable %_ptr_Function_float Function %18
%currRayHeight = OpVariable %_ptr_Function_float Function %18
%vCurrOffset = OpVariable %_ptr_Function_v2float Function %31
%vLastOffset = OpVariable %_ptr_Function_v2float Function %31
%lastSampledHeight = OpVariable %_ptr_Function_float Function %18
%currSampledHeight = OpVariable %_ptr_Function_float Function %18
%i = OpVariable %_ptr_Function_int Function %166
%delta1 = OpVariable %_ptr_Function_float Function %18
%delta2 = OpVariable %_ptr_Function_float Function %18
%ratio = OpVariable %_ptr_Function_float Function %18
%parallaxOcclusion_0 = OpVariable %_ptr_Function_v2float Function %31
%param_8 = OpVariable %_ptr_Function_mat3v3float Function %163
%param_9 = OpVariable %_ptr_Function_v3float Function %22
%param_10 = OpVariable %_ptr_Function_float Function %18
%output6 = OpVariable %_ptr_Function_v2float Function %31
%tempTextureRead1 = OpVariable %_ptr_Function_v4float Function %15
%rgb1 = OpVariable %_ptr_Function_v3float Function %22
%viewDirectionW_1 = OpVariable %_ptr_Function_v3float Function %22
%shadow = OpVariable %_ptr_Function_float Function %18
%glossiness_1 = OpVariable %_ptr_Function_float Function %18
%diffuseBase = OpVariable %_ptr_Function_v3float Function %22
%specularBase = OpVariable %_ptr_Function_v3float Function %22
%normalW = OpVariable %_ptr_Function_v3float Function %22
%info = OpVariable %_ptr_Function_lightingInfo Function %263
%param_11 = OpVariable %_ptr_Function_v3float Function %22
%param_12 = OpVariable %_ptr_Function_v3float Function %22
%param_13 = OpVariable %_ptr_Function_v4float Function %15
%param_14 = OpVariable %_ptr_Function_v3float Function %22
%param_15 = OpVariable %_ptr_Function_v3float Function %22
%param_16 = OpVariable %_ptr_Function_v3float Function %22
%param_17 = OpVariable %_ptr_Function_float Function %18
%diffuseOutput = OpVariable %_ptr_Function_v3float Function %22
%specularOutput = OpVariable %_ptr_Function_v3float Function %22
%output3 = OpVariable %_ptr_Function_v3float Function %22
OpStore %u_Float %float_100
OpStore %u_Color %371
%372 = OpLoad %v2float %vMainuv
%374 = OpLoad %28 %TextureSamplerSampler
%375 = OpLoad %25 %TextureSamplerTexture
%377 = OpSampledImage %376 %375 %374
%373 = OpImageSampleImplicitLod %v4float %377 %372
OpStore %tempTextureRead %373
%378 = OpLoad %v4float %tempTextureRead
%381 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_0 %uint_6
%382 = OpLoad %float %381
%383 = OpCompositeExtract %float %378 0
%384 = OpCompositeExtract %float %378 1
%385 = OpCompositeExtract %float %378 2
%386 = OpCompositeConstruct %v3float %383 %384 %385
%387 = OpVectorTimesScalar %v3float %386 %382
OpStore %rgb %387
%390 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_0 %uint_4
%391 = OpLoad %v3float %390
%392 = OpLoad %v4float %v_output1
%394 = OpCompositeExtract %float %392 0
%395 = OpCompositeExtract %float %392 1
%396 = OpCompositeExtract %float %392 2
%397 = OpCompositeConstruct %v3float %394 %395 %396
%398 = OpFSub %v3float %391 %397
%393 = OpExtInst %v3float %90 Normalize %398
OpStore %output5 %393
OpStore %output4 %15
OpStore %uvOffset %31
%399 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_0 %uint_2
%400 = OpLoad %float %399
%401 = OpFDiv %float %float_1 %400
OpStore %normalScale %401
%402 = OpLoad %bool %gl_FrontFacing
OpSelectionMerge %403 None
OpBranchConditional %402 %404 %405
%404 = OpLabel
%406 = OpLoad %v2float %v_uv
OpStore %x_299 %406
OpBranch %403
%405 = OpLabel
%407 = OpLoad %v2float %v_uv
%408 = OpFNegate %v2float %407
OpStore %x_299 %408
OpBranch %403
%403 = OpLabel
%409 = OpLoad %v2float %x_299
OpStore %TBNUV %409
%410 = OpLoad %v4float %v_output2
%411 = OpLoad %float %normalScale
%412 = OpCompositeExtract %float %410 0
%413 = OpCompositeExtract %float %410 1
%414 = OpCompositeExtract %float %410 2
%415 = OpCompositeConstruct %v3float %412 %413 %414
%416 = OpVectorTimesScalar %v3float %415 %411
OpStore %param_3 %416
%417 = OpLoad %v4float %v_output1
%418 = OpCompositeExtract %float %417 0
%419 = OpCompositeExtract %float %417 1
%420 = OpCompositeExtract %float %417 2
%421 = OpCompositeConstruct %v3float %418 %419 %420
OpStore %param_4 %421
%422 = OpLoad %v2float %TBNUV
OpStore %param_5 %422
%425 = OpAccessChain %_ptr_Uniform_v2float %x_269 %uint_0 %uint_8
%426 = OpLoad %v2float %425
OpStore %param_6 %426
%427 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2__F_F_F_F %param_3 %param_4 %param_5 %param_6
OpStore %TBN %427
%432 = OpLoad %mat3v3float %TBN
OpStore %param_7 %432
%433 = OpFunctionCall %mat3v3float %transposeMat3_mf33__F %param_7
OpStore %invTBN %433
%435 = OpLoad %mat3v3float %invTBN
%436 = OpLoad %v3float %output5
%437 = OpFNegate %v3float %436
%438 = OpMatrixTimesVector %v3float %435 %437
%439 = OpLoad %mat3v3float %invTBN
%440 = OpLoad %v3float %output5
%442 = OpCompositeExtract %float %438 0
%443 = OpCompositeExtract %float %438 1
%444 = OpCompositeConstruct %v2float %442 %443
%441 = OpExtInst %float %90 Length %444
%445 = OpFNegate %v3float %440
%446 = OpMatrixTimesVector %v3float %439 %445
%447 = OpCompositeExtract %float %446 2
%448 = OpFDiv %float %441 %447
OpStore %parallaxLimit %448
%450 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_0 %uint_5
%451 = OpLoad %float %450
%452 = OpLoad %float %parallaxLimit
%453 = OpFMul %float %452 %451
OpStore %parallaxLimit %453
%454 = OpLoad %mat3v3float %invTBN
%455 = OpLoad %v3float %output5
%456 = OpFNegate %v3float %455
%457 = OpMatrixTimesVector %v3float %454 %456
%459 = OpCompositeExtract %float %457 0
%460 = OpCompositeExtract %float %457 1
%461 = OpCompositeConstruct %v2float %459 %460
%458 = OpExtInst %v2float %90 Normalize %461
OpStore %vOffsetDir %458
%462 = OpLoad %v2float %vOffsetDir
%463 = OpLoad %float %parallaxLimit
%464 = OpVectorTimesScalar %v2float %462 %463
OpStore %vMaxOffset %464
%465 = OpLoad %mat3v3float %invTBN
%466 = OpLoad %v3float %output5
%467 = OpLoad %mat3v3float %invTBN
%468 = OpLoad %v4float %v_output2
%471 = OpFNegate %v3float %466
%472 = OpMatrixTimesVector %v3float %465 %471
%473 = OpCompositeExtract %float %468 0
%474 = OpCompositeExtract %float %468 1
%475 = OpCompositeExtract %float %468 2
%476 = OpCompositeConstruct %v3float %473 %474 %475
%477 = OpMatrixTimesVector %v3float %467 %476
%470 = OpDot %float %472 %477
%479 = OpFMul %float %470 %float_n11
%480 = OpFAdd %float %float_15 %479
OpStore %numSamples %480
%481 = OpLoad %float %numSamples
%482 = OpFDiv %float %float_1 %481
OpStore %stepSize %482
OpStore %currRayHeight %float_1
OpStore %vCurrOffset %31
OpStore %vLastOffset %31
OpStore %lastSampledHeight %float_1
OpStore %currSampledHeight %float_1
OpStore %i %166
OpBranch %483
%483 = OpLabel
OpLoopMerge %484 %485 None
OpBranch %486
%486 = OpLabel
%487 = OpLoad %int %i
%489 = OpSLessThan %bool %487 %int_15
OpSelectionMerge %490 None
OpBranchConditional %489 %491 %492
%491 = OpLabel
OpBranch %490
%492 = OpLabel
OpBranch %484
%490 = OpLabel
%493 = OpLoad %v2float %v_uv
%494 = OpLoad %v2float %vCurrOffset
%495 = OpCompositeExtract %float %15 3
OpStore %currSampledHeight %495
%496 = OpLoad %float %currSampledHeight
%497 = OpLoad %float %currRayHeight
%498 = OpFOrdGreaterThan %bool %496 %497
OpSelectionMerge %499 None
OpBranchConditional %498 %500 %501
%500 = OpLabel
%502 = OpLoad %float %currSampledHeight
%503 = OpLoad %float %currRayHeight
%504 = OpFSub %float %502 %503
OpStore %delta1 %504
%505 = OpLoad %float %currRayHeight
%506 = OpLoad %float %stepSize
%507 = OpLoad %float %lastSampledHeight
%508 = OpFAdd %float %505 %506
%509 = OpFSub %float %508 %507
OpStore %delta2 %509
%510 = OpLoad %float %delta1
%511 = OpLoad %float %delta1
%512 = OpLoad %float %delta2
%513 = OpFAdd %float %511 %512
%514 = OpFDiv %float %510 %513
OpStore %ratio %514
%515 = OpLoad %float %ratio
%516 = OpLoad %v2float %vLastOffset
%517 = OpLoad %float %ratio
%518 = OpLoad %v2float %vCurrOffset
%519 = OpVectorTimesScalar %v2float %516 %515
%520 = OpFSub %float %float_1 %517
%521 = OpVectorTimesScalar %v2float %518 %520
%522 = OpFAdd %v2float %519 %521
OpStore %vCurrOffset %522
OpBranch %484
%501 = OpLabel
%523 = OpLoad %float %stepSize
%524 = OpLoad %float %currRayHeight
%525 = OpFSub %float %524 %523
OpStore %currRayHeight %525
%526 = OpLoad %v2float %vCurrOffset
OpStore %vLastOffset %526
%527 = OpLoad %float %stepSize
%528 = OpLoad %v2float %vMaxOffset
%529 = OpLoad %v2float %vCurrOffset
%530 = OpVectorTimesScalar %v2float %528 %527
%531 = OpFAdd %v2float %529 %530
OpStore %vCurrOffset %531
%532 = OpLoad %float %currSampledHeight
OpStore %lastSampledHeight %532
OpBranch %499
%499 = OpLabel
OpBranch %485
%485 = OpLabel
%533 = OpLoad %int %i
%534 = OpIAdd %int %533 %int_1
OpStore %i %534
OpBranch %483
%484 = OpLabel
%535 = OpLoad %v2float %vCurrOffset
OpStore %parallaxOcclusion_0 %535
%536 = OpLoad %v2float %parallaxOcclusion_0
OpStore %uvOffset %536
%537 = OpLoad %v2float %v_uv
%538 = OpLoad %v2float %uvOffset
%540 = OpLoad %28 %TextureSamplerSampler
%541 = OpLoad %25 %TextureSamplerTexture
%542 = OpSampledImage %376 %541 %540
%543 = OpFAdd %v2float %537 %538
%539 = OpImageSampleImplicitLod %v4float %542 %543
%544 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_0 %uint_2
%545 = OpLoad %float %544
%546 = OpLoad %mat3v3float %TBN
OpStore %param_8 %546
%547 = OpCompositeExtract %float %539 0
%548 = OpCompositeExtract %float %539 1
%549 = OpCompositeExtract %float %539 2
%550 = OpCompositeConstruct %v3float %547 %548 %549
OpStore %param_9 %550
%551 = OpFDiv %float %float_1 %545
OpStore %param_10 %551
%552 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1__F_F_F %param_8 %param_9 %param_10
%556 = OpLoad %v4float %output4
%557 = OpCompositeExtract %float %552 0
%558 = OpCompositeExtract %float %552 1
%559 = OpCompositeExtract %float %552 2
%560 = OpCompositeExtract %float %556 3
%561 = OpCompositeConstruct %v4float %557 %558 %559 %560
OpStore %output4 %561
%562 = OpLoad %v2float %v_uv
%563 = OpLoad %v2float %uvOffset
%564 = OpFAdd %v2float %562 %563
OpStore %output6 %564
%565 = OpLoad %v2float %output6
%567 = OpLoad %28 %TextureSampler1Sampler
%568 = OpLoad %25 %TextureSampler1Texture
%569 = OpSampledImage %376 %568 %567
%566 = OpImageSampleImplicitLod %v4float %569 %565
OpStore %tempTextureRead1 %566
%570 = OpLoad %v4float %tempTextureRead1
%571 = OpCompositeExtract %float %570 0
%572 = OpCompositeExtract %float %570 1
%573 = OpCompositeExtract %float %570 2
%574 = OpCompositeConstruct %v3float %571 %572 %573
OpStore %rgb1 %574
%575 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_0 %uint_4
%576 = OpLoad %v3float %575
%577 = OpLoad %v4float %v_output1
%579 = OpCompositeExtract %float %577 0
%580 = OpCompositeExtract %float %577 1
%581 = OpCompositeExtract %float %577 2
%582 = OpCompositeConstruct %v3float %579 %580 %581
%583 = OpFSub %v3float %576 %582
%578 = OpExtInst %v3float %90 Normalize %583
OpStore %viewDirectionW_1 %578
OpStore %shadow %float_1
%584 = OpLoad %float %u_Float
%585 = OpFMul %float %float_1 %584
OpStore %glossiness_1 %585
OpStore %diffuseBase %22
OpStore %specularBase %22
%586 = OpLoad %v4float %output4
%587 = OpCompositeExtract %float %586 0
%588 = OpCompositeExtract %float %586 1
%589 = OpCompositeExtract %float %586 2
%590 = OpCompositeConstruct %v3float %587 %588 %589
OpStore %normalW %590
%591 = OpLoad %v3float %viewDirectionW_1
OpStore %param_11 %591
%592 = OpLoad %v3float %normalW
OpStore %param_12 %592
%594 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_0 %uint_0
%595 = OpLoad %v4float %594
OpStore %param_13 %595
%596 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_0 %uint_1
%597 = OpLoad %v4float %596
%598 = OpCompositeExtract %float %597 0
%599 = OpCompositeExtract %float %597 1
%600 = OpCompositeExtract %float %597 2
%601 = OpCompositeConstruct %v3float %598 %599 %600
OpStore %param_14 %601
%602 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_0 %uint_2
%603 = OpLoad %v4float %602
%604 = OpCompositeExtract %float %603 0
%605 = OpCompositeExtract %float %603 1
%606 = OpCompositeExtract %float %603 2
%607 = OpCompositeConstruct %v3float %604 %605 %606
OpStore %param_15 %607
%609 = OpAccessChain %_ptr_Uniform_v3float %light0 %uint_0 %uint_3
%610 = OpLoad %v3float %609
OpStore %param_16 %610
%611 = OpLoad %float %glossiness_1
OpStore %param_17 %611
%612 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1__F_F_F_F_F_F_F %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17
OpStore %info %612
OpStore %shadow %float_1
%620 = OpAccessChain %_ptr_Function_v3float %info %uint_0
%621 = OpLoad %v3float %620
%622 = OpLoad %float %shadow
%623 = OpLoad %v3float %diffuseBase
%624 = OpVectorTimesScalar %v3float %621 %622
%625 = OpFAdd %v3float %623 %624
OpStore %diffuseBase %625
%626 = OpAccessChain %_ptr_Function_v3float %info %uint_1
%627 = OpLoad %v3float %626
%628 = OpLoad %float %shadow
%629 = OpLoad %v3float %specularBase
%630 = OpVectorTimesScalar %v3float %627 %628
%631 = OpFAdd %v3float %629 %630
OpStore %specularBase %631
%632 = OpLoad %v3float %diffuseBase
%633 = OpLoad %v3float %rgb1
%634 = OpFMul %v3float %632 %633
OpStore %diffuseOutput %634
%635 = OpLoad %v3float %specularBase
%636 = OpLoad %v3float %u_Color
%637 = OpFMul %v3float %635 %636
OpStore %specularOutput %637
%638 = OpLoad %v3float %diffuseOutput
%639 = OpLoad %v3float %specularOutput
%640 = OpFAdd %v3float %638 %639
OpStore %output3 %640
%641 = OpLoad %v3float %output3
%642 = OpCompositeExtract %float %641 0
%643 = OpCompositeExtract %float %641 1
%644 = OpCompositeExtract %float %641 2
%645 = OpCompositeConstruct %v4float %642 %643 %644 %float_1
OpStore %glFragColor %645
OpReturn
OpFunctionEnd
%main_inner = OpFunction %main_out None %646
%vMainuv_param = OpFunctionParameter %v2float
%v_output1_param = OpFunctionParameter %v4float
%gl_FrontFacing_param = OpFunctionParameter %bool
%v_uv_param = OpFunctionParameter %v2float
%v_output2_param = OpFunctionParameter %v4float
%654 = OpLabel
OpStore %vMainuv %vMainuv_param
OpStore %v_output1 %v_output1_param
OpStore %gl_FrontFacing %gl_FrontFacing_param
OpStore %v_uv %v_uv_param
OpStore %v_output2 %v_output2_param
%655 = OpFunctionCall %void %main_1
%656 = OpLoad %v4float %glFragColor
%657 = OpCompositeConstruct %main_out %656
OpReturnValue %657
OpFunctionEnd
%main = OpFunction %void None %312
%659 = OpLabel
%661 = OpLoad %v2float %vMainuv_param_1
%662 = OpLoad %v4float %v_output1_param_1
%663 = OpLoad %bool %gl_FrontFacing_param_1
%664 = OpLoad %v2float %v_uv_param_1
%665 = OpLoad %v4float %v_output2_param_1
%660 = OpFunctionCall %main_out %main_inner %661 %662 %663 %664 %665
%666 = OpCompositeExtract %v4float %660 0
OpStore %glFragColor_1_1 %666
OpReturn
OpFunctionEnd