glsl[16] glsl-f0737ae14e99987e1dfd66f60f94f24a
//ATTRIBMAP-00-30-50-51-52-53-20-5D-xx
#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;
	vec4 member8;
};
layout(std140, binding = 12 ) 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( binding = 18 ) uniform sampler2D g_tTransformTexture;
layout(std140, binding = 13 ) uniform _Globals_ {
	float g_flTexCoordScale0;
	float g_flTexCoordScale1;
	float g_flTexCoordScale2;
	float g_flTexCoordRotate0;
	float g_flTexCoordRotate1;
	float g_flTexCoordRotate2;
	vec2 g_vTexCoordScroll0;
	vec2 g_vTexCoordScroll1;
	vec2 g_vTexCoordScroll2;
	vec2 g_vTexCoordOffset0;
	vec2 g_vTexCoordOffset1;
	vec2 g_vTexCoordOffset2;
	float g_flTexCoordScale3;
	float g_flTexCoordRotate3;
	vec2 g_vTexCoordScroll3;
	vec2 g_vTexCoordOffset3;
} ;
layout(std140) 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;
} ;
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;
layout(location=0) in vec3 VS_INPUT_gl_vPositionOs;
layout(location=1) in vec4 VS_INPUT_gl_vNormalOs;
layout(location=2) in vec2 VS_INPUT_gl_vTexCoord;
layout(location=3) in vec3 VS_INPUT_gl_vColorBlendValues;
layout(location=4) in vec3 VS_INPUT_gl_vAlphaBlendValues;
layout(location=5) in vec3 VS_INPUT_gl_vBlendColorTint;
layout(location=6) in uvec4 VS_INPUT_gl_vBlendIndices;
layout(location=7) in vec2 VS_INPUT_gl_vTransformTextureUV;
out gl_PerVertex {
	vec4 gl_Position;
	float gl_ClipDistance[1];
} ;
layout(location=0) out vec4 PS_INPUT_gl_vPositionWs_flLinearDepth;
layout(location=1) out vec4 PS_INPUT_gl_vNormalWs_flSpecularAmount;
layout(location=2) out vec4 PS_INPUT_gl_vVertexColor;
layout(location=3) out vec4 PS_INPUT_gl_vColorBlendValues_BlendY;
layout(location=4) out vec4 PS_INPUT_gl_vAlphaBlendValues_BlendZ;
layout(location=5) out vec4 PS_INPUT_gl_vTangentUWs_flTangentVSign;
layout(location=6) out vec4 PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1;
layout(location=7) out vec4 PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3;
const float C_0d0 = 0.0;
const float C_2d0 = 2.0;
const float C_4d0 = 4.0;
const float C_0d5 = 0.5;
const ivec2 C_ivec2p1ca0p = ivec2(1, 0);
const ivec2 C_ivec2p2ca0p = ivec2(2, 0);
const vec4 C_vec4p255d0p = vec4(255.0);
const vec4 C_avvsno = vec4(-128.0);
const vec4 C_vec4p0d0p = vec4(0.0);
const vec4 C_vec4pa64d0p = vec4(-64.0);
const vec4 C_vec4p63d0p = vec4(63.0);
const vec4 C_vec4p2d0p = vec4(2.0);
const vec4 C_vec4p1d0p = vec4(1.0);
const float C_1d0 = 1.0;
const float C_0d0174533 = 0.0174533;
const vec2 C_vec2pa0d5p = vec2(-0.5);
const vec2 C_vec2p0d5p = vec2(0.5);
const ivec2 C_ivec2p3ca0p = ivec2(3, 0);
const vec3 C_vec3p0d5p = vec3(0.5);
const float C_0d0001 = 0.0001;
const vec3 C_vec3p12d92p = vec3(12.92);
const vec3 C_vec3p1d055p = vec3(1.055);
const vec3 C_bw96as = vec3(0.0521327);
const vec3 C_vec3p2d4p = vec3(2.4);
const float C_0d04045 = 0.04045;
void main()
{
	PS_INPUT o;
	PS_INPUT mainOut;
	gl_ClipDistance[0] = C_0d0;
	float H_33xh0u1 = float(ivec4(VS_INPUT_gl_vBlendIndices).x);
	float H_twpgh9 = H_33xh0u1 + C_2d0;
	float H_3qvjkl1 = H_twpgh9 * C_4d0;
	float H_u77z731 = H_3qvjkl1 + C_0d5;
	float H_jxjzkk = H_u77z731 * g_vInvGBufferSize.z;
	vec2 H_bqvuk21 = vec2(H_jxjzkk, C_0d0);
	vec2 vBlendTransform0UV = H_bqvuk21 + VS_INPUT_gl_vTransformTextureUV;
	float flWrapLines = floor(vBlendTransform0UV.x);
	float H_7mdp57 = vBlendTransform0UV.x - flWrapLines;
	float H_wgm8gx = flWrapLines * g_vInvGBufferSize.w;
	float H_06afd41 = H_wgm8gx + vBlendTransform0UV.y;
	vec2 H_crnj9e1 = vec2(H_7mdp57, H_06afd41);
	vec4 vMatObjectToWorldRow = textureLod(g_tTransformTexture, H_crnj9e1, C_0d0);
	vec4 vMatObjectToWorldRow1 = textureLodOffset(g_tTransformTexture, H_crnj9e1, C_0d0, C_ivec2p1ca0p);
	vec4 vMatObjectToWorldRow2 = textureLodOffset(g_tTransformTexture, H_crnj9e1, C_0d0, C_ivec2p2ca0p);
	vec4 vAnimationControlWord = textureLod(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0);
	vec4 param = VS_INPUT_gl_vNormalOs * C_vec4p255d0p;
	vec4 H_s4fazc1 = param + C_avvsno;
	bvec4 H_nqcyuo = lessThan(H_s4fazc1, C_vec4p0d0p);
	vec4 ztztSignBits = vec4(H_nqcyuo);
	vec4 xyxyAbs = abs(H_s4fazc1);
	vec4 xyxyAbs1 = xyxyAbs - ztztSignBits;
	vec4 H_0msvjm1 = xyxyAbs1 + C_vec4pa64d0p;
	bvec4 H_xidabx = lessThan(H_0msvjm1, C_vec4p0d0p);
	vec4 xyxySignBits = vec4(H_xidabx);
	vec4 normTan = abs(H_0msvjm1);
	vec4 H_if834f1 = normTan - xyxySignBits;
	vec4 normTan1 = H_if834f1 / C_vec4p63d0p;
	vec4 H_s1685x1 = xyxySignBits * C_vec4p2d0p;
	vec4 xyxySigns = C_vec4p1d0p - H_s1685x1;
	vec4 H_4hnhmp1 = C_vec4p2d0p * ztztSignBits;
	vec4 ztztSigns = C_vec4p1d0p - H_4hnhmp1;
	float H_lk9i08 = C_1d0 - normTan1.x;
	float H_dvpao91 = H_lk9i08 - normTan1.y;
	vec3 H_7olu74 = vec3(normTan1.x, normTan1.y, H_dvpao91);
	vec3 o_vNormalOs = normalize(H_7olu74);
	vec2 H_g1gr9q = o_vNormalOs.xy * xyxySigns.xy;
	float H_csfx2e = o_vNormalOs.z * ztztSigns.x;
	float H_n62jg7 = C_1d0 - normTan1.z;
	float H_4tnj1d1 = H_n62jg7 - normTan1.w;
	vec3 H_zfbbuh = vec3(normTan1.z, normTan1.w, H_4tnj1d1);
	vec3 o_vTangentUOs_flTangentVSign = normalize(H_zfbbuh);
	vec2 H_yap5rf = o_vTangentUOs_flTangentVSign.xy * xyxySigns.zw;
	float H_42nb75 = o_vTangentUOs_flTangentVSign.z * ztztSigns.z;
	vec4 H_bjyqbe1 = vec4(H_g1gr9q.x, H_g1gr9q.y, H_csfx2e, C_0d0);
	float dotres = dot(H_bjyqbe1, vMatObjectToWorldRow);
	float dotres1 = dot(H_bjyqbe1, vMatObjectToWorldRow1);
	float dotres2 = dot(H_bjyqbe1, vMatObjectToWorldRow2);
	vec3 H_3cij4j1 = vec3(dotres, dotres1, dotres2);
	vec3 vNormalWs = normalize(H_3cij4j1);
	vec4 H_pj8mqi1;
	H_pj8mqi1.xyz = vNormalWs.xyz;
	vec4 H_cs27ko1 = vec4(H_yap5rf.x, H_yap5rf.y, H_42nb75, C_0d0);
	float dotres3 = dot(H_cs27ko1, vMatObjectToWorldRow);
	float dotres4 = dot(H_cs27ko1, vMatObjectToWorldRow1);
	float dotres5 = dot(H_cs27ko1, vMatObjectToWorldRow2);
	vec3 H_25kyhb = vec3(dotres3, dotres4, dotres5);
	float vTangentUWs = dot(H_25kyhb, vNormalWs);
	vec3 H_5m70t21 = vec3(vTangentUWs);
	vec3 H_7g28ki = H_5m70t21 * vNormalWs;
	vec3 H_tiz4n5 = H_25kyhb - H_7g28ki;
	vec3 vTangentUWs1 = normalize(H_tiz4n5);
	vec4 H_5as0dk1 = vec4(vTangentUWs1.x, vTangentUWs1.y, vTangentUWs1.z, ztztSigns.w);
	o.member5 = H_5as0dk1;
	o.member1 = H_pj8mqi1;
	vec3 H_u8espd = VS_INPUT_gl_vPositionOs * vAnimationControlWord.zzz;
	vec4 H_2f7gnb = vec4(H_u8espd.x, H_u8espd.y, H_u8espd.z, C_1d0);
	float dotres6 = dot(H_2f7gnb, vMatObjectToWorldRow);
	float dotres7 = dot(H_2f7gnb, vMatObjectToWorldRow1);
	float dotres8 = dot(H_2f7gnb, vMatObjectToWorldRow2);
	vec3 H_v3pmtu1 = vec3(dotres6, dotres7, dotres8);
	vec4 Lg_1;
	Lg_1.xyz = vec3(dotres6, dotres7, dotres8);
	o.member0 = Lg_1;
	vec3 H_n1robs1 = H_v3pmtu1 - g_vCameraPositionWs;
	float H_q6adkl = dot(g_vCameraDirWs, H_n1robs1);
	vec4 H_s4cwvz = vec4(dotres6, dotres7, dotres8, H_q6adkl);
	o.member0 = H_s4cwvz;
	vec4 H_i8jodt1 = vec4(vNormalWs.x, vNormalWs.y, vNormalWs.z, C_0d0);
	o.member1 = H_i8jodt1;
	vec4 H_pzx5dy = vec4(dotres6, dotres7, dotres8, C_1d0);
	vec4 H_sg41bi = H_pzx5dy + g_vWorldToCameraOffset;
	float dotres9 = dot(H_sg41bi, g_matWorldToProjection[0]);
	float dotresa = dot(H_sg41bi, g_matWorldToProjection[1]);
	float dotresb = dot(H_sg41bi, g_matWorldToProjection[2]);
	float dotresc = dot(H_sg41bi, g_matWorldToProjection[3]);
	vec4 H_zolhrr1 = vec4(dotres9, dotresa, dotresb, dotresc);
	o.member8 = H_zolhrr1;
	float param1 = g_flTexCoordRotate0 * C_0d0174533;
	vec2 H_6yh3dc1 = vec2(g_flTexCoordScale0);
	vec2 vAdjust = VS_INPUT_gl_vTexCoord + C_vec2pa0d5p;
	float H_vyry841 = cos(param1);
	float H_u7xj891 = sin(param1);
	float H_iezkfh = H_vyry841 * vAdjust.x;
	float H_mhulsx = H_u7xj891 * vAdjust.y;
	float H_y0fmjt1 = H_iezkfh - H_mhulsx;
	float H_l6gl2y = H_u7xj891 * vAdjust.x;
	float H_h3lkph = H_vyry841 * vAdjust.y;
	float H_az4w3d1 = H_h3lkph + H_l6gl2y;
	vec2 H_xaeqcg1 = vec2(H_y0fmjt1, H_az4w3d1);
	vec2 H_zssnl31 = H_6yh3dc1 * H_xaeqcg1;
	vec2 H_w8o9wl = H_zssnl31 + C_vec2p0d5p;
	vec2 H_ts6vqy1 = vec2(g_flTime);
	vec2 H_plg0l4 = H_ts6vqy1 * g_vTexCoordScroll0;
	vec2 H_3o1u4e = H_plg0l4 + H_w8o9wl;
	vec2 H_lphbe8 = H_3o1u4e + g_vTexCoordOffset0;
	vec4 H_cc01s61 = o.member6;
	H_cc01s61.xy = H_lphbe8.xy;
	o.member6 = H_cc01s61;
	float param2 = C_0d0174533 * g_flTexCoordRotate1;
	vec2 H_z234mk = vec2(g_flTexCoordScale1);
	float H_wniv4d1 = cos(param2);
	float H_5djdwf1 = sin(param2);
	float H_c5sk39 = H_wniv4d1 * vAdjust.x;
	float H_j48c411 = H_5djdwf1 * vAdjust.y;
	float H_5lge73 = H_c5sk39 - H_j48c411;
	float H_kfmcu01 = H_5djdwf1 * vAdjust.x;
	float H_budkd9 = H_wniv4d1 * vAdjust.y;
	float H_e3qiao = H_budkd9 + H_kfmcu01;
	vec2 H_d9r3ga = vec2(H_5lge73, H_e3qiao);
	vec2 H_o65ylk1 = H_d9r3ga * H_z234mk;
	vec2 H_330flm = C_vec2p0d5p + H_o65ylk1;
	vec2 H_qwu0b4 = H_ts6vqy1 * g_vTexCoordScroll1;
	vec2 H_w164nd = H_330flm + H_qwu0b4;
	vec2 H_nqfl681 = H_w164nd + g_vTexCoordOffset1;
	vec4 H_y1enr4 = vec4(H_lphbe8.x, H_lphbe8.y, H_nqfl681.x, H_nqfl681.y);
	o.member6 = H_y1enr4;
	float param3 = C_0d0174533 * g_flTexCoordRotate2;
	vec2 H_86eb9b1 = vec2(g_flTexCoordScale2);
	float H_x6o6531 = cos(param3);
	float H_wftr481 = sin(param3);
	float H_39rb4g = H_x6o6531 * vAdjust.x;
	float H_0xbs4o = H_wftr481 * vAdjust.y;
	float H_9k40i11 = H_39rb4g - H_0xbs4o;
	float H_zlxreo = H_wftr481 * vAdjust.x;
	float H_4k5cuf = H_x6o6531 * vAdjust.y;
	float H_wl9kjg = H_4k5cuf + H_zlxreo;
	vec2 H_h0lzdt1 = vec2(H_9k40i11, H_wl9kjg);
	vec2 H_px1u011 = H_86eb9b1 * H_h0lzdt1;
	vec2 H_er09gt = C_vec2p0d5p + H_px1u011;
	vec2 H_r79114 = H_ts6vqy1 * g_vTexCoordScroll2;
	vec2 H_zaxuyv = H_er09gt + H_r79114;
	vec2 H_hdefer1 = H_zaxuyv + g_vTexCoordOffset2;
	vec4 H_b1m0271 = o.member7;
	H_b1m0271.xy = H_hdefer1.xy;
	o.member7 = H_b1m0271;
	float param4 = C_0d0174533 * g_flTexCoordRotate3;
	vec2 H_17rqgn1 = vec2(g_flTexCoordScale3);
	float H_mwr5m3 = cos(param4);
	float H_jsp6w51 = sin(param4);
	float H_sa307h1 = H_mwr5m3 * vAdjust.x;
	float H_qfqblu = H_jsp6w51 * vAdjust.y;
	float H_uhmpaq = H_sa307h1 - H_qfqblu;
	float H_p4cbvu = H_jsp6w51 * vAdjust.x;
	float H_rzozgh1 = H_mwr5m3 * vAdjust.y;
	float H_vl7nyp1 = H_p4cbvu + H_rzozgh1;
	vec2 H_pzs58z = vec2(H_uhmpaq, H_vl7nyp1);
	vec2 H_u9vewx = H_17rqgn1 * H_pzs58z;
	vec2 H_2x8nm4 = C_vec2p0d5p + H_u9vewx;
	vec2 H_sin1r3 = H_ts6vqy1 * g_vTexCoordScroll3;
	vec2 H_fl3u25 = H_2x8nm4 + H_sin1r3;
	vec2 H_kxpfla = H_fl3u25 + g_vTexCoordOffset3;
	vec4 H_8xdht8 = vec4(H_hdefer1.x, H_hdefer1.y, H_kxpfla.x, H_kxpfla.y);
	o.member7 = H_8xdht8;
	vec4 vRet = textureLodOffset(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0, C_ivec2p3ca0p);
	o.member2 = vRet;
	vec4 H_f972y51 = o.member3;
	H_f972y51.xyz = VS_INPUT_gl_vColorBlendValues.xyz;
	o.member3 = H_f972y51;
	vec3 H_9jgiys = VS_INPUT_gl_vAlphaBlendValues * C_vec3p0d5p;
	vec3 H_7rv8k2 = max(H_9jgiys, C_0d0001);
	vec4 H_aq70c71 = o.member4;
	H_aq70c71.xyz = H_7rv8k2.xyz;
	o.member4 = H_aq70c71;
	vec3 vLinearSegment = VS_INPUT_gl_vBlendColorTint / C_vec3p12d92p;
	vec3 H_e3ai8x = VS_INPUT_gl_vBlendColorTint / C_vec3p1d055p;
	vec3 H_rq9rhu1 = H_e3ai8x + C_bw96as;
	vec3 vExpSegment = pow(H_rq9rhu1, C_vec3p2d4p);
	bool H_imsmae = VS_INPUT_gl_vBlendColorTint.x > C_0d04045;
	float select = H_imsmae ? vExpSegment.x : vLinearSegment.x;
	bool H_d2bi461 = VS_INPUT_gl_vBlendColorTint.y > C_0d04045;
	float select1 = H_d2bi461 ? vExpSegment.y : vLinearSegment.y;
	bool H_ctsg351 = VS_INPUT_gl_vBlendColorTint.z > C_0d04045;
	float select2 = H_ctsg351 ? vExpSegment.z : vLinearSegment.z;
	vec3 H_g5tqsp = vec3(select, select1, select2);
	vec3 H_euxrm51 = H_g5tqsp * vRet.xyz;
	vec4 H_498olf1 = vRet;
	H_498olf1.xyz = H_euxrm51.xyz;
	o.member2 = H_498olf1;
	vec4 H_unzlmm1 = vec4(VS_INPUT_gl_vColorBlendValues.x, VS_INPUT_gl_vColorBlendValues.y, VS_INPUT_gl_vColorBlendValues.z, C_0d0);
	o.member3 = H_unzlmm1;
	vec4 H_cobels1 = vec4(H_7rv8k2.x, H_7rv8k2.y, H_7rv8k2.z, C_0d0);
	o.member4 = H_cobels1;
	PS_INPUT_gl_vPositionWs_flLinearDepth = o.member0;
	PS_INPUT_gl_vNormalWs_flSpecularAmount = o.member1;
	PS_INPUT_gl_vVertexColor = o.member2;
	PS_INPUT_gl_vColorBlendValues_BlendY = o.member3;
	PS_INPUT_gl_vAlphaBlendValues_BlendZ = o.member4;
	PS_INPUT_gl_vTangentUWs_flTangentVSign = o.member5;
	PS_INPUT_gl_vBaseTexCoord0_vBaseTexCoord1 = o.member6;
	PS_INPUT_gl_vBaseTexCoord2_vBaseTexCoord3 = o.member7;
	float H_2fljzx1 = C_0d0 - o.member8.y;
	float H_c3r12d = C_2d0 * o.member8.z;
	float H_48gvww = H_c3r12d - o.member8.w;
	vec4 H_6imyf81 = o.member8;
	H_6imyf81.yz = vec2(H_2fljzx1, H_48gvww);
	gl_Position = H_6imyf81;
}