uniform sampler2D _TranslucencyMap; uniform vec3 _TranslucencyColor; uniform vec4 _TerrainTreeLightColors[4]; uniform vec4 _SpecColor; uniform sampler2D _MainTex; uniform float _Cutoff; uniform sampler2D _BumpSpecMap; void main () { vec2 tmpvar_1; tmpvar_1 = gl_TexCoord[0].xy; vec3 tmpvar_2; tmpvar_2 = gl_TexCoord[1].xyz; vec3 tmpvar_3; tmpvar_3 = gl_TexCoord[2].xyz; vec3 tmpvar_4; vec3 tmpvar_5; tmpvar_4 = gl_TexCoord[3].xyz; tmpvar_5 = gl_TexCoord[4].xyz; vec4 c; int j; vec3 backContribs; vec3 light; float gloss; float specular; vec3 albedo; j = 0; vec4 tmpvar_6; tmpvar_6 = texture2D (_MainTex, tmpvar_1); float x; x = (tmpvar_6.w - _Cutoff); if ((x < 0.0)) { discard; }; vec3 tmpvar_7; tmpvar_7 = (tmpvar_6.xyz * tmpvar_2); albedo = tmpvar_7; specular = (texture2D (_BumpSpecMap, tmpvar_1).x * 128.0); vec4 tmpvar_8; tmpvar_8 = texture2D (_TranslucencyMap, tmpvar_1); gloss = tmpvar_8.w; light = (gl_LightModel.ambient.xyz * tmpvar_7); backContribs = (tmpvar_3 * tmpvar_8.z); while (true) { if ((j >= 3)) { break; }; light = (light + (((albedo * ((backContribs[j] * _TranslucencyColor) + tmpvar_4[j])) + (_SpecColor.xyz * (pow (tmpvar_5[j], specular) * gloss))) * _TerrainTreeLightColors[j].xyz)); j = (j + 1); }; c.xyz = (light * 2.0); c.w = 1.0; gl_FragData[0] = c; }