glsl[1] glsl-650af1624d3491e7a62469aa3b90339e
#version 330 core
// LunarGOO output
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
struct PS_INPUT {
	vec4 member0;
	vec4 member1;
	vec4 member2;
	vec4 member3;
	vec4 member4;
	vec4 member5;
	vec4 member6;
	vec4 member7;
	bool member8;
};
layout(std140, binding = 1 ) uniform PerViewConstantBuffer_t {
	layout(row_major) mat4 g_matWorldToProjection;
	layout(row_major) mat4 g_matProjectionToWorld;
	layout(row_major) mat4 g_matWorldToView;
	layout(row_major) mat4 g_matViewToProjection;
	vec4 g_vInvProjRow3;
	vec4 g_vClipPlane0;
	float g_flToneMapScalarLinear;
	float g_flLightMapScalar;
	float g_flEnvMapScalar;
	float g_flToneMapScalarGamma;
	vec3 g_vCameraPositionWs;
	float g_flViewportMinZ;
	vec3 g_vCameraDirWs;
	float g_flViewportMaxZ;
	vec3 g_vCameraUpDirWs;
	float g_flTime;
	vec3 g_vDepthPsToVsConversion;
	float g_flNearPlane;
	float g_flFarPlane;
	float g_flLightBinnerFarPlane;
	vec2 g_vInvViewportSize;
	vec2 g_vViewportToGBufferRatio;
	vec2 g_vMorphTextureAtlasSize;
	vec4 g_vInvGBufferSize;
	vec2 g_vViewportOffset;
	vec2 g_vViewportSize;
	vec2 g_vRenderTargetSize;
	float g_flFogBlendToBackground;
	float g_flHenyeyGreensteinCoeff;
	vec3 g_vFogColor;
	float g_flNegFogStartOverFogRange;
	float g_flInvFogRange;
	float g_flFogMaxDensity;
	float g_flFogExponent;
	float g_flMod2xIdentity;
	float g_bStereoEnabled;
	float g_flStereoCameraIndex;
	float g_fInvViewportZRange;
	float g_fMinViewportZScaled;
	vec3 g_vMiddleEyePositionWs;
	float g_flPad2;
	layout(row_major) mat4 g_matWorldToProjectionMultiview[2];
	vec4 g_vCameraPositionWsMultiview[2];
	vec4 g_vFrameBufferCopyInvSizeAndUvScale;
	vec4 g_vCameraAngles;
	vec4 g_vWorldToCameraOffset;
	vec4 g_vWorldToCameraOffsetMultiview[2];
	vec4 g_vPerViewConstantExtraData0;
	vec4 g_vPerViewConstantExtraData1;
	vec4 g_vPerViewConstantExtraData2;
	vec4 g_vPerViewConstantExtraData3;
} ;
layout(std140, binding = 2 ) uniform DotaGlobalParams_t {
	vec3 g_vGlobalLightDir;
	vec3 g_vGlobalLightColor;
	float g_flGlobalLightSpecularScale;
	vec3 g_vGlobalLightSpecularDir;
	float g_flGlobalLightSpecularExp;
	vec3 g_vGlobalLightSpecularColor;
	float g_flGlobalLightSpecularIndependence;
	vec3 g_vGlobalLightAmbientDir;
	float g_flGlobalLightAmbientScale1;
	vec3 g_vGlobalLightAmbientColor1;
	float g_flGlobalLightAmbientScale2;
	vec3 g_vGlobalLightAmbientColor2;
	float g_flGlobalLightAmbientScale2Hero;
	vec2 g_vGlobalCloud1Offset;
	vec2 g_vGlobalCloud2Offset;
	vec3 g_vFowColor;
	float g_flGlobalCloudScale;
	float g_flFowDarkness;
	float g_flFowGrayFactor;
	float g_flFowColorFactor;
	float g_flFowGrayHilights;
	vec4 g_vFowWorldSize;
	vec4 g_vFowTexOffsets;
	layout(row_major) mat4 g_matShadowWorldToTexture;
	vec4 g_vInvShadowDepthTextureSize;
	vec3 g_vGlobalLightAmbientColor3;
	float g_flGlobalLightAmbientShadowAmount;
} ;
layout(std140, binding = 0 ) uniform _Globals_ {
	float g_flBumpStrength;
	vec3 g_vColorTint0;
	vec3 g_vColorTint1;
	vec3 g_vColorTint2;
	vec3 g_vColorTint3;
	vec3 g_vColorTintB0;
	vec3 g_vColorTintB1;
	vec3 g_vColorTintB2;
	vec3 g_vColorTintB3;
	vec4 g_vGlobalTint;
	vec3 g_vBorderColorTint1;
	vec3 g_vBorderColorTint2;
	vec3 g_vBorderColorTint3;
	float g_flBorderOffset1;
	float g_flBorderOffset2;
	float g_flBorderOffset3;
	float g_flBorderTintStrength1;
	float g_flBorderTintStrength2;
	float g_flBorderTintStrength3;
	float g_flBorderTintSoftness1;
	float g_flBorderTintSoftness2;
	float g_flBorderTintSoftness3;
	float g_flSpecularIntensity;
	float g_flSpecularBloom;
	float g_flTexCoordScale0;
	float g_flTexCoordRotate0;
	vec2 g_vTexCoordScroll0;
	vec2 g_vTexCoordOffset0;
	float g_flTexCoordScale1;
	float g_flTexCoordRotate1;
	vec2 g_vTexCoordScroll1;
	vec2 g_vTexCoordOffset1;
	float g_flTexCoordScale2;
	float g_flTexCoordRotate2;
	vec2 g_vTexCoordScroll2;
	vec2 g_vTexCoordOffset2;
	vec3 g_vTexCoordTransform2U;
	vec3 g_vTexCoordTransform2V;
	float g_flTexCoordScale3;
	float g_flTexCoordRotate3;
	vec2 g_vTexCoordScroll3;
	vec2 g_vTexCoordOffset3;
	vec3 g_vTexCoordTransform3U;
	vec3 g_vTexCoordTransform3V;
	vec3 g_vNormalTransform0U;
	vec3 g_vNormalTransform0V;
	vec3 g_vNormalTransform1U;
	vec3 g_vNormalTransform1V;
	vec3 g_vNormalTransform2U;
	vec3 g_vNormalTransform2V;
	vec3 g_vNormalTransform3U;
	vec3 g_vNormalTransform3V;
} ;
layout( binding = 0 ) uniform sampler2D g_tColor0;
layout( binding = 1 ) uniform sampler2D g_tColor1;
layout( binding = 2 ) uniform sampler2D g_tColor2;
layout( binding = 3 ) uniform sampler2D g_tColor3;
layout( binding = 4 ) uniform sampler2D g_tSpecular0;
layout( binding = 5 ) uniform sampler2D g_tSpecular1;
layout( binding = 6 ) uniform sampler2D g_tSpecular2;
layout( binding = 7 ) uniform sampler2D g_tSpecular3;
layout( binding = 8 ) uniform sampler2D g_tNormal0;
layout( binding = 9 ) uniform sampler2D g_tNormal1;
layout( binding = 10 ) uniform sampler2D g_tNormal2;
layout( binding = 11 ) uniform sampler2D g_tNormal3;
uniform sampler2D g_tFow;
uniform sampler2D g_tFrameBufferCopyTexture;
uniform sampler2D g_tDepthTexture;
uniform sampler2D g_tGBufferAlbedo;
uniform sampler2D g_tGBufferLightingTerms;
uniform sampler2D g_tGBufferDepth;
uniform sampler2D g_tGBufferNormalWs;
layout(std140) uniform PerLayerConstantBuffer_t {
	vec4 g_vWireframeColor;
} ;
uniform sampler2D g_tClouds;
uniform sampler2DShadow g_tShadowDepthTexture;
uniform sampler2D g_tTintMasks;
layout(location=0) in vec4 PS_INPUT_gl_vPositionWs_flLinearDepth;
layout(location=1) in vec4 PS_INPUT_gl_vNormalWs_flSpecularAmount;
layout(location=2) in vec4 PS_INPUT_gl_vVertexColor;
layout(location=3) in vec4 PS_INPUT_gl_vColorBlendValues_BlendY;
layout(location=4) in vec4 PS_INPUT_gl_vAlphaBlendValues_BlendZ;
layout(location=5) in vec4 PS_INPUT_gl_vTangentUWs_flTangentVSign;
layout(location=6) in vec4 PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1;
layout(location=7) in vec4 PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3;
layout(location=0) out vec4 PS_OUTPUT_gl_vDiffuse;
layout(location=1) out vec4 PS_OUTPUT_gl_flDepth;
const float C_1d0 = 1.0;
const float C_a1d0 = -1.0;
const float C_0d0 = 0.0;
const vec2 C_vec2p2d0p = vec2(2.0);
const vec2 C_vec2pa1d0p = vec2(-1.0);
const vec3 C_vec3p0d0p = vec3(0.0);
const float C_1d85 = 1.85;
const float C_0d45 = 0.45;
const float C_2d1 = 2.1;
const float C_0d5 = 0.5;
const vec3 C_kfumqy1 = vec3(0.2125, 0.7154, 0.0721);
const vec4 C_xx1m2m1 = vec4(0.0, 0.0, 0.0, 1.0);
void main()
{
	PS_INPUT param;
	PS_INPUT mainIn;
	mainIn.member0 = PS_INPUT_gl_vPositionWs_flLinearDepth;
	mainIn.member1 = PS_INPUT_gl_vNormalWs_flSpecularAmount;
	mainIn.member2 = PS_INPUT_gl_vVertexColor;
	mainIn.member3 = PS_INPUT_gl_vColorBlendValues_BlendY;
	mainIn.member4 = PS_INPUT_gl_vAlphaBlendValues_BlendZ;
	mainIn.member5 = PS_INPUT_gl_vTangentUWs_flTangentVSign;
	mainIn.member6 = PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1;
	mainIn.member7 = PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3;
	mainIn.member8 = gl_FrontFacing;
	param = mainIn;
	float i = param.member8 ? C_1d0 : C_a1d0;
	vec3 H_48fig1 = vec3(i);
	vec3 H_09cclc = H_48fig1 * param.member1.xyz;
	vec4 H_hxw2lk1 = param.member1;
	H_hxw2lk1.xyz = H_09cclc.xyz;
	param.member1 = H_hxw2lk1;
	vec3 vGeometricNormalWs = normalize(H_09cclc);
	vec3 vTangentUWs = normalize(param.member5.xyz);
	vec3 vTangentVWs = cross(vGeometricNormalWs, param.member5.xyz);
	vec3 vTangentVWs1 = normalize(vTangentVWs);
	vec3 vTangentVWs2 = param.member5.www * vTangentVWs1;
	vec4 vDiffuse = texture(g_tColor0, param.member6.xy);
	vec4 vDiffuse1 = texture(g_tColor1, param.member6.zw);
	vec4 vDiffuse2 = texture(g_tColor2, param.member7.xy);
	vec4 vDiffuse3 = texture(g_tColor3, param.member7.zw);
	vec3 H_wcvtba1 = g_vColorTint0 * vDiffuse.xyz;
	vec3 H_uc7tjr = g_vColorTint1 * vDiffuse1.xyz;
	vec3 H_q8wrom1 = g_vColorTint2 * vDiffuse2.xyz;
	vec3 H_q30rsf = g_vColorTint3 * vDiffuse3.xyz;
	float H_bwvo3c = vDiffuse1.w - param.member4.x;
	float minb = max(C_0d0, H_bwvo3c);
	float H_tholfr1 = param.member4.x + vDiffuse1.w;
	float maxb = min(C_1d0, H_tholfr1);
	float flResult = smoothstep(minb, maxb, param.member3.x);
	vec4 H_lbklhh1 = vec4(flResult);
	vec3 H_ce1opy1 = vec3(flResult);
	float H_4abpfv = C_1d0 - flResult;
	float H_hlu9qw1 = vDiffuse2.w - param.member4.y;
	float minb1 = max(C_0d0, H_hlu9qw1);
	float H_n63euv = param.member4.y + vDiffuse2.w;
	float maxb1 = min(C_1d0, H_n63euv);
	float flResult1 = smoothstep(minb1, maxb1, param.member3.y);
	float flResult2 = clamp(flResult1, C_0d0, H_4abpfv);
	vec4 H_fjfksz = vec4(flResult2);
	vec3 H_cy3lxl = vec3(flResult2);
	float H_x6pp2y1 = H_4abpfv - flResult2;
	float H_vkiwn6 = vDiffuse3.w - param.member4.z;
	float minb2 = max(C_0d0, H_vkiwn6);
	float H_lrsoj5 = param.member4.z + vDiffuse3.w;
	float maxb2 = min(C_1d0, H_lrsoj5);
	float flResult3 = smoothstep(minb2, maxb2, param.member3.z);
	float flResult4 = clamp(flResult3, C_0d0, H_x6pp2y1);
	vec4 H_149rs91 = vec4(flResult4);
	vec3 H_yruoot = vec3(flResult4);
	float H_8qsjgf1 = H_x6pp2y1 - flResult4;
	vec4 H_9rjn0c = vec4(H_8qsjgf1);
	vec3 H_q3sb44 = vec3(H_8qsjgf1);
	vec3 H_4hzefm = H_q3sb44 * H_wcvtba1;
	vec3 H_6uaahc = H_ce1opy1 * H_uc7tjr;
	vec3 H_w8521h = H_4hzefm + H_6uaahc;
	vec3 H_tqrw62 = H_cy3lxl * H_q8wrom1;
	vec3 H_7q73ff1 = H_tqrw62 + H_w8521h;
	vec3 H_y6sunf = H_q30rsf * H_yruoot;
	vec3 H_6dk5u9 = H_7q73ff1 + H_y6sunf;
	vec3 H_cjsjgj = H_6dk5u9 * param.member2.xyz;
	vec4 vSpecular = texture(g_tSpecular0, param.member6.xy);
	vec4 vSpecular1 = texture(g_tSpecular1, param.member6.zw);
	vec4 vSpecular2 = texture(g_tSpecular2, param.member7.xy);
	vec4 vSpecular3 = texture(g_tSpecular3, param.member7.zw);
	vec3 H_9hcu15 = H_q3sb44 * vSpecular.xyz;
	vec3 H_naakvz = H_ce1opy1 * vSpecular1.xyz;
	vec3 H_qezh2d = H_9hcu15 + H_naakvz;
	vec3 H_dx2101 = H_cy3lxl * vSpecular2.xyz;
	vec3 H_aw2g5t1 = H_dx2101 + H_qezh2d;
	vec3 H_jsi1kn1 = H_yruoot * vSpecular3.xyz;
	vec3 H_s1w56n = H_aw2g5t1 + H_jsi1kn1;
	float H_ekxfcg1 = H_s1w56n.x * g_flSpecularIntensity;
	float H_ayr8ln = H_s1w56n.z * g_flSpecularBloom;
	vec3 H_0kcqcx = vec3(H_ayr8ln);
	vec4 vNormalTexel = texture(g_tNormal0, param.member6.xy);
	vec4 vNormalTexel1 = texture(g_tNormal1, param.member6.zw);
	vec4 vNormalTexel2 = texture(g_tNormal2, param.member7.xy);
	vec4 vNormalTexel3 = texture(g_tNormal3, param.member7.zw);
	vec3 H_c9sxtd1 = vec3(vNormalTexel.w, vNormalTexel.y, C_1d0);
	float vNormalTexel4 = dot(g_vNormalTransform0U, H_c9sxtd1);
	float vNormalTexel5 = dot(g_vNormalTransform0V, H_c9sxtd1);
	vec4 H_2ett9s1 = vNormalTexel;
	H_2ett9s1.yw = vec2(vNormalTexel5, vNormalTexel4);
	vec3 H_m9bnvc = vec3(vNormalTexel1.w, vNormalTexel1.y, C_1d0);
	float vNormalTexel6 = dot(g_vNormalTransform1U, H_m9bnvc);
	float vNormalTexel7 = dot(g_vNormalTransform1V, H_m9bnvc);
	vec4 H_d5i45r1 = vNormalTexel1;
	H_d5i45r1.yw = vec2(vNormalTexel7, vNormalTexel6);
	vec3 H_gapr6p1 = vec3(vNormalTexel2.w, vNormalTexel2.y, C_1d0);
	float vNormalTexel8 = dot(g_vNormalTransform2U, H_gapr6p1);
	float vNormalTexel9 = dot(g_vNormalTransform2V, H_gapr6p1);
	vec4 H_g2p5bq1 = vNormalTexel2;
	H_g2p5bq1.yw = vec2(vNormalTexel9, vNormalTexel8);
	vec3 H_2lajvb = vec3(vNormalTexel3.w, vNormalTexel3.y, C_1d0);
	float vNormalTexela = dot(g_vNormalTransform3U, H_2lajvb);
	float vNormalTexelb = dot(g_vNormalTransform3V, H_2lajvb);
	vec4 H_fra5lq1 = vNormalTexel3;
	H_fra5lq1.yw = vec2(vNormalTexelb, vNormalTexela);
	vec4 H_d8o8mm = H_2ett9s1 * H_9rjn0c;
	vec4 H_14tvae = H_d5i45r1 * H_lbklhh1;
	vec4 H_k3x5lf = H_14tvae + H_d8o8mm;
	vec4 H_dk37g91 = H_fjfksz * H_g2p5bq1;
	vec4 H_nh9jil1 = H_dk37g91 + H_k3x5lf;
	vec4 H_oaezte1 = H_149rs91 * H_fra5lq1;
	vec4 vBlendedNormalTexel = H_nh9jil1 + H_oaezte1;
	vec2 H_m8lc3k1 = vBlendedNormalTexel.wy * C_vec2p2d0p;
	vec2 H_k9c4oe1 = H_m8lc3k1 + C_vec2pa1d0p;
	float vNormalTs = dot(H_k9c4oe1, H_k9c4oe1);
	float param1 = C_1d0 - vNormalTs;
	float misc3a = clamp(param1, C_0d0, C_1d0);
	float vNormalTs1 = sqrt(misc3a);
	float H_ikr96c1 = C_0d0 - H_k9c4oe1.y;
	vec2 H_x1he8s = vec2(g_flBumpStrength);
	vec2 H_v0t2831 = vec2(H_k9c4oe1.x, H_ikr96c1);
	vec2 H_ytgoo5 = H_v0t2831 * H_x1he8s;
	vec3 H_xxwq9g1 = vec3(H_ytgoo5.x, H_ytgoo5.y, vNormalTs1);
	vec3 vNormalTs2 = normalize(H_xxwq9g1);
	vec3 vVectorWs = vNormalTs2.xxx * vTangentUWs;
	vec3 H_35021c1 = vNormalTs2.yyy * vTangentVWs2;
	vec3 vVectorWs1 = H_35021c1 + vVectorWs;
	vec3 H_9wf1l91 = vGeometricNormalWs * vNormalTs2.zzz;
	vec3 vVectorWs2 = H_9wf1l91 + vVectorWs1;
	vec3 H_qw6t8a1 = normalize(vVectorWs2);
	vec3 H_arkbw11 = param.member0.xyz - g_vCameraPositionWs;
	vec3 H_1vtumx = normalize(H_arkbw11);
	vec3 H_1r7wyh1 = C_vec3p0d0p - H_1vtumx;
	vec3 vReflect = reflect(H_1r7wyh1, H_qw6t8a1);
	float flSpecular = dot(g_vGlobalLightSpecularDir, vReflect);
	float misc3a1 = clamp(flSpecular, C_0d0, C_1d0);
	float flSpecular1 = pow(misc3a1, g_flGlobalLightSpecularExp);
	float flSpecular2 = H_ekxfcg1 * flSpecular1;
	vec3 H_s6408y = vec3(flSpecular2);
	vec3 flSpecularRGB = H_s6408y * g_vGlobalLightSpecularColor;
	float misc3a2 = clamp(g_flGlobalLightSpecularIndependence, C_0d0, C_1d0);
	vec3 H_7pnklg = vec3(misc3a2);
	float H_f5a1k1 = C_1d0 - misc3a2;
	vec3 H_77m74o1 = vec3(H_f5a1k1);
	vec3 H_20dm1p = H_77m74o1 * flSpecularRGB;
	vec3 H_7anhea1 = H_20dm1p + H_cjsjgj;
	vec3 H_j03jbn = C_vec3p0d0p - g_vGlobalLightDir;
	float flNDotL = dot(H_j03jbn, H_qw6t8a1);
	float misc3a3 = clamp(flNDotL, C_0d0, C_1d0);
	float flDirectOcclusionFactor = pow(C_1d0, C_1d85);
	float flDirectOcclusionFactor1 = mix(C_0d45, C_1d0, flDirectOcclusionFactor);
	float flIndirectOcclusionFactor = pow(C_1d0, C_2d1);
	vec3 H_fx1uua = vec3(g_flGlobalLightAmbientScale1);
	vec3 vDirectionalAmbientColor = H_fx1uua * g_vGlobalLightAmbientColor1;
	float H_jjpf4g1 = H_qw6t8a1.z * C_0d5;
	float H_ahpdwy = C_0d5 + H_jjpf4g1;
	vec3 vShadowAmbientColor = mix(g_vGlobalLightAmbientColor3, g_vGlobalLightAmbientColor2, H_ahpdwy);
	vec3 H_s7noda1 = vec3(g_flGlobalLightAmbientScale2);
	vec3 vShadowAmbientColor1 = H_s7noda1 * vShadowAmbientColor;
	float flLuminance = dot(vDirectionalAmbientColor, C_kfumqy1);
	vec3 H_t1lelu1 = vec3(flLuminance);
	float flLuminance1 = dot(vShadowAmbientColor1, C_kfumqy1);
	vec3 H_chpant1 = vec3(flLuminance1);
	vec3 vDirectionalAmbientColor1 = mix(vDirectionalAmbientColor, H_t1lelu1, H_0kcqcx);
	vec3 vShadowAmbientColor2 = mix(vShadowAmbientColor1, H_chpant1, H_0kcqcx);
	float H_02oxme = flDirectOcclusionFactor1 * misc3a3;
	vec3 H_7fkfzb = vec3(H_02oxme);
	vec3 vDirectLight = H_7fkfzb * g_vGlobalLightColor;
	float vDirectionalAmbientLight = dot(g_vGlobalLightAmbientDir, H_qw6t8a1);
	float misc3a4 = clamp(vDirectionalAmbientLight, C_0d0, C_1d0);
	float H_7hjqoc1 = flIndirectOcclusionFactor * misc3a4;
	vec3 H_pqex5i = vec3(H_7hjqoc1);
	vec3 vDirectionalAmbientLight1 = H_pqex5i * vDirectionalAmbientColor1;
	float H_ggo1a1 = C_1d0 - misc3a3;
	float H_8kk2191 = H_ggo1a1 * flIndirectOcclusionFactor;
	vec3 H_7y3u2u1 = vec3(H_8kk2191);
	vec3 vShadowAmbientLight = H_7y3u2u1 * vShadowAmbientColor2;
	vec3 H_8w78gv1 = vDirectLight + vDirectionalAmbientLight1;
	vec3 vLighting = H_8w78gv1 + vShadowAmbientLight;
	vec3 H_r630nv = H_7anhea1 * vLighting;
	vec3 H_bcfwoi = vec3(g_flGlobalLightSpecularScale);
	vec3 H_knhpna = H_bcfwoi * flSpecularRGB;
	vec3 H_8xrc791 = H_7pnklg * H_knhpna;
	vec3 H_rbm7e = H_8xrc791 + H_r630nv;
	vec4 H_rwwpo7 = C_xx1m2m1;
	H_rwwpo7.xyz = H_rbm7e.xyz;
	PS_OUTPUT_gl_vDiffuse = H_rwwpo7;
	PS_OUTPUT_gl_flDepth = param.member0.wwww;
}