glsl[22] glsl-846ca82bd3551f2a85a866a3aa925207
#version 330 core
// LunarGOO output
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
layout(std140, binding = 1 ) 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( binding = 4 ) uniform sampler2DShadow g_tShadowDepthTexture;
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(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(std140, binding = 2 ) 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;
} ;
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 sampler2D g_tTintMasks;
uniform sampler2D g_tSpecular0;
uniform sampler2D g_tSpecular1;
uniform sampler2D g_tSpecular2;
uniform sampler2D g_tSpecular3;
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_vBaseTexCoord0_vBaseTexCoord1;
layout(location=6) 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_0d0 = 0.0;
const float C_1d0 = 1.0;
const vec3 C_vec3p0d0p = vec3(0.0);
const vec4 C_wt9i7t = vec4(0.0749064);
const vec2 C_a1z03r = vec2(0.0, 0.0);
const vec4 C_a1xzaw1 = vec4(0.123596);
const float C_0d205993 = 0.205993;
const float C_1d85 = 1.85;
const float C_0d45 = 0.45;
const float C_2d1 = 2.1;
const float C_0d5 = 0.5;
void main()
{
	vec3 vGeometricNormalWs = normalize(PS_INPUT_gl_vNormalWs_flSpecularAmount.xyz);
	vec4 vDiffuse = texture(g_tColor0, PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1.xy);
	vec4 vDiffuse1 = texture(g_tColor1, PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1.zw);
	vec4 vDiffuse2 = texture(g_tColor2, PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3.xy);
	vec4 vDiffuse3 = texture(g_tColor3, PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3.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_kgh6kc = vDiffuse1.w - PS_INPUT_gl_vAlphaBlendValues_BlendZ.x;
	float minb = max(C_0d0, H_kgh6kc);
	float H_cl72vu1 = PS_INPUT_gl_vAlphaBlendValues_BlendZ.x + vDiffuse1.w;
	float maxb = min(C_1d0, H_cl72vu1);
	float flResult = smoothstep(minb, maxb, PS_INPUT_gl_vColorBlendValues_BlendY.x);
	vec3 H_ce1opy1 = vec3(flResult);
	float H_4abpfv = C_1d0 - flResult;
	float H_8kria8 = vDiffuse2.w - PS_INPUT_gl_vAlphaBlendValues_BlendZ.y;
	float minb1 = max(C_0d0, H_8kria8);
	float H_qcf9ui = PS_INPUT_gl_vAlphaBlendValues_BlendZ.y + vDiffuse2.w;
	float maxb1 = min(C_1d0, H_qcf9ui);
	float flResult1 = smoothstep(minb1, maxb1, PS_INPUT_gl_vColorBlendValues_BlendY.y);
	float flResult2 = clamp(flResult1, C_0d0, H_4abpfv);
	vec3 H_cy3lxl = vec3(flResult2);
	float H_x6pp2y1 = H_4abpfv - flResult2;
	float H_snh0yx = vDiffuse3.w - PS_INPUT_gl_vAlphaBlendValues_BlendZ.z;
	float minb2 = max(C_0d0, H_snh0yx);
	float H_cvcskd1 = PS_INPUT_gl_vAlphaBlendValues_BlendZ.z + vDiffuse3.w;
	float maxb2 = min(C_1d0, H_cvcskd1);
	float flResult3 = smoothstep(minb2, maxb2, PS_INPUT_gl_vColorBlendValues_BlendY.z);
	float flResult4 = clamp(flResult3, C_0d0, H_x6pp2y1);
	vec3 H_yruoot = vec3(flResult4);
	float H_8qsjgf1 = H_x6pp2y1 - flResult4;
	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_9qw7i8 = H_6dk5u9 * PS_INPUT_gl_vVertexColor.xyz;
	vec3 H_j03jbn = C_vec3p0d0p - g_vGlobalLightDir;
	float flNDotL = dot(H_j03jbn, vGeometricNormalWs);
	float misc3a = clamp(flNDotL, C_0d0, C_1d0);
	float product = PS_INPUT_gl_vPositionWs_flLinearDepth.x * g_matShadowWorldToTexture[0].x;
	float product1 = PS_INPUT_gl_vPositionWs_flLinearDepth.y * g_matShadowWorldToTexture[1].x;
	float dotProduct = product + product1;
	float product2 = PS_INPUT_gl_vPositionWs_flLinearDepth.z * g_matShadowWorldToTexture[2].x;
	float dotProduct1 = dotProduct + product2;
	float dotProduct2 = dotProduct1 + g_matShadowWorldToTexture[3].x;
	float product3 = PS_INPUT_gl_vPositionWs_flLinearDepth.x * g_matShadowWorldToTexture[0].y;
	float product4 = PS_INPUT_gl_vPositionWs_flLinearDepth.y * g_matShadowWorldToTexture[1].y;
	float dotProduct3 = product3 + product4;
	float product5 = PS_INPUT_gl_vPositionWs_flLinearDepth.z * g_matShadowWorldToTexture[2].y;
	float dotProduct4 = dotProduct3 + product5;
	float dotProduct5 = dotProduct4 + g_matShadowWorldToTexture[3].y;
	float product6 = PS_INPUT_gl_vPositionWs_flLinearDepth.x * g_matShadowWorldToTexture[0].z;
	float product7 = PS_INPUT_gl_vPositionWs_flLinearDepth.y * g_matShadowWorldToTexture[1].z;
	float dotProduct6 = product6 + product7;
	float product8 = PS_INPUT_gl_vPositionWs_flLinearDepth.z * g_matShadowWorldToTexture[2].z;
	float dotProduct7 = dotProduct6 + product8;
	float dotProduct8 = dotProduct7 + g_matShadowWorldToTexture[3].z;
	float product9 = PS_INPUT_gl_vPositionWs_flLinearDepth.x * g_matShadowWorldToTexture[0].w;
	float producta = PS_INPUT_gl_vPositionWs_flLinearDepth.y * g_matShadowWorldToTexture[1].w;
	float dotProduct9 = product9 + producta;
	float productb = PS_INPUT_gl_vPositionWs_flLinearDepth.z * g_matShadowWorldToTexture[2].w;
	float dotProducta = dotProduct9 + productb;
	float dotProductb = dotProducta + g_matShadowWorldToTexture[3].w;
	vec3 H_16wbh81 = vec3(dotProductb);
	vec3 H_mo5dbs1 = vec3(dotProduct2, dotProduct5, dotProduct8);
	vec3 H_qdsg5k1 = H_mo5dbs1 / H_16wbh81;
	float param = C_0d0 - H_qdsg5k1.z;
	float misc3a1 = clamp(param, C_0d0, C_1d0);
	float H_60ojyb = C_0d0 - g_vInvShadowDepthTextureSize.x;
	vec2 H_t5te6f = vec2(H_60ojyb);
	vec2 H_ep5c3j1 = H_qdsg5k1.xy + g_vInvShadowDepthTextureSize.xx;
	vec3 H_vuqeij1 = vec3(H_ep5c3j1.x, H_ep5c3j1.y, misc3a1);
	float H_28oipf1 = textureLod(g_tShadowDepthTexture, H_vuqeij1, C_0d0);
	vec2 H_pv0in9 = vec2(H_60ojyb, g_vInvShadowDepthTextureSize.x);
	vec2 H_he48ts = H_pv0in9 + H_qdsg5k1.xy;
	vec3 H_jppbus1 = vec3(H_he48ts.x, H_he48ts.y, misc3a1);
	float H_ivhdzs = textureLod(g_tShadowDepthTexture, H_jppbus1, C_0d0);
	vec2 H_t32u4i1 = vec2(g_vInvShadowDepthTextureSize.x, H_60ojyb);
	vec2 H_3zubtq = H_qdsg5k1.xy + H_t32u4i1;
	vec3 H_n148fq = vec3(H_3zubtq.x, H_3zubtq.y, misc3a1);
	float H_dpd2541 = textureLod(g_tShadowDepthTexture, H_n148fq, C_0d0);
	vec2 H_r37y1w = H_qdsg5k1.xy + H_t5te6f;
	vec3 H_za7hkm = vec3(H_r37y1w.x, H_r37y1w.y, misc3a1);
	float H_b6h98q = textureLod(g_tShadowDepthTexture, H_za7hkm, C_0d0);
	vec4 H_5m1jtj1 = vec4(H_28oipf1, H_ivhdzs, H_dpd2541, H_b6h98q);
	float flSum = dot(H_5m1jtj1, C_wt9i7t);
	vec2 H_e9rh661 = vec2(g_vInvShadowDepthTextureSize.x, C_0d0);
	vec2 H_85dk7x = H_e9rh661 + H_qdsg5k1.xy;
	vec3 H_nuhisf = vec3(H_85dk7x.x, H_85dk7x.y, misc3a1);
	float H_6d1hyw = textureLod(g_tShadowDepthTexture, H_nuhisf, C_0d0);
	vec2 H_na4vhz = vec2(H_60ojyb, C_0d0);
	vec2 H_iybrli = H_na4vhz + H_qdsg5k1.xy;
	vec3 H_r56xpt = vec3(H_iybrli.x, H_iybrli.y, misc3a1);
	float H_ij9vx3 = textureLod(g_tShadowDepthTexture, H_r56xpt, C_0d0);
	vec2 H_23b4ob1 = C_a1z03r;
	H_23b4ob1.y = H_60ojyb;
	vec2 H_wcm3cs = H_23b4ob1 + H_qdsg5k1.xy;
	vec3 H_bg2omn1 = vec3(H_wcm3cs.x, H_wcm3cs.y, misc3a1);
	float H_jc31jt = textureLod(g_tShadowDepthTexture, H_bg2omn1, C_0d0);
	vec2 H_23b4ob1r = C_a1z03r;
	H_23b4ob1r.y = g_vInvShadowDepthTextureSize.x;
	vec2 H_omz8p81 = H_23b4ob1r + H_qdsg5k1.xy;
	vec3 H_nh5i681 = vec3(H_omz8p81.x, H_omz8p81.y, misc3a1);
	float H_wy2hek = textureLod(g_tShadowDepthTexture, H_nh5i681, C_0d0);
	vec4 H_3uv3kl1 = vec4(H_6d1hyw, H_ij9vx3, H_jc31jt, H_wy2hek);
	float flSum1 = dot(H_3uv3kl1, C_a1xzaw1);
	float flSum2 = flSum + flSum1;
	vec3 H_ls2vnt1 = vec3(H_qdsg5k1.x, H_qdsg5k1.y, misc3a1);
	float flSum3 = textureLod(g_tShadowDepthTexture, H_ls2vnt1, C_0d0);
	float H_xchcee1 = flSum3 * C_0d205993;
	float flSum4 = H_xchcee1 + flSum2;
	float flDirectionalAmbientShadow = mix(C_1d0, flSum4, g_flGlobalLightAmbientShadowAmount);
	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_guttgv1 = vGeometricNormalWs.z * C_0d5;
	float H_0yyagq1 = C_0d5 + H_guttgv1;
	vec3 vShadowAmbientColor = mix(g_vGlobalLightAmbientColor3, g_vGlobalLightAmbientColor2, H_0yyagq1);
	vec3 H_s7noda1 = vec3(g_flGlobalLightAmbientScale2);
	vec3 vShadowAmbientColor1 = H_s7noda1 * vShadowAmbientColor;
	float H_gjd0nq1 = flSum4 * misc3a;
	float H_999p8j = H_gjd0nq1 * flDirectOcclusionFactor1;
	vec3 H_56168t1 = vec3(H_999p8j);
	vec3 vDirectLight = H_56168t1 * g_vGlobalLightColor;
	float vDirectionalAmbientLight = dot(g_vGlobalLightAmbientDir, vGeometricNormalWs);
	float misc3a2 = clamp(vDirectionalAmbientLight, C_0d0, C_1d0);
	float H_j74xze = flDirectionalAmbientShadow * misc3a2;
	float H_e8ryxj = H_j74xze * flIndirectOcclusionFactor;
	vec3 H_sv6s9y1 = vec3(H_e8ryxj);
	vec3 vDirectionalAmbientLight1 = H_sv6s9y1 * vDirectionalAmbientColor;
	float H_lua7si = C_1d0 - H_gjd0nq1;
	float H_37qwjd = H_lua7si * flIndirectOcclusionFactor;
	vec3 H_q7vhfl = vec3(H_37qwjd);
	vec3 vShadowAmbientLight = H_q7vhfl * vShadowAmbientColor1;
	vec3 H_8w78gv1 = vDirectLight + vDirectionalAmbientLight1;
	vec3 vLighting = H_8w78gv1 + vShadowAmbientLight;
	vec3 H_tw7zw21 = H_9qw7i8 * vLighting;
	vec4 H_jenitn1 = vec4(PS_INPUT_gl_vPositionWs_flLinearDepth.x, PS_INPUT_gl_vPositionWs_flLinearDepth.y, PS_INPUT_gl_vPositionWs_flLinearDepth.z, C_1d0);
	float flClipPlaneDist = dot(g_vClipPlane0, H_jenitn1);
	float param1 = flClipPlaneDist * g_flInvFogRange;
	float misc3a3 = clamp(param1, C_0d0, C_1d0);
	vec4 H_jdt69p = vec4(H_tw7zw21.x, H_tw7zw21.y, H_tw7zw21.z, misc3a3);
	PS_OUTPUT_gl_vDiffuse = H_jdt69p;
	PS_OUTPUT_gl_flDepth = PS_INPUT_gl_vPositionWs_flLinearDepth.wwww;
}