uniform vec4 _TerrainTreeLightColors[4]; uniform vec3 _TerrainTreeLightDirections[4]; attribute vec4 TANGENT; void main () { vec3 lightColor_1; float isBillboard_2; isBillboard_2 = (1.0 - abs(TANGENT.w)); vec4 tmpvar_3; tmpvar_3.w = 0.0; tmpvar_3.xyz = gl_Normal; vec3 tmpvar_4; tmpvar_4 = mix (gl_Normal, normalize((tmpvar_3 * gl_ModelViewMatrixInverseTranspose)).xyz, vec3(isBillboard_2)); lightColor_1 = gl_LightModel.ambient.xyz; lightColor_1 = (lightColor_1 + (_TerrainTreeLightColors[0] * max (0.0, ((dot (_TerrainTreeLightDirections[0], tmpvar_4) * 0.5) + 0.5) )).xyz); lightColor_1 = (lightColor_1 + (_TerrainTreeLightColors[1] * max (0.0, ((dot (_TerrainTreeLightDirections[1], tmpvar_4) * 0.5) + 0.5) )).xyz); lightColor_1 = (lightColor_1 + (_TerrainTreeLightColors[2] * max (0.0, ((dot (_TerrainTreeLightDirections[2], tmpvar_4) * 0.5) + 0.5) )).xyz); lightColor_1 = (lightColor_1 + (_TerrainTreeLightColors[3] * max (0.0, ((dot (_TerrainTreeLightDirections[3], tmpvar_4) * 0.5) + 0.5) )).xyz); gl_Position = (gl_ModelViewProjectionMatrix * (gl_Vertex + ( (TANGENT * gl_ModelViewMatrixInverseTranspose) * isBillboard_2))); vec4 tmpvar_5; tmpvar_5.zw = vec2(0.0, 0.0); tmpvar_5.xy = gl_MultiTexCoord0.xy; gl_TexCoord[0] = tmpvar_5; vec4 tmpvar_6; tmpvar_6.w = 0.0; tmpvar_6.xyz = (lightColor_1 * gl_Color.w); gl_TexCoord[1] = tmpvar_6; } // stats: 37 alu 0 tex 0 flow // inputs: 5 // #0: gl_MultiTexCoord0 (high float) 4x1 [-1] loc 8 // #1: gl_Color (high float) 4x1 [-1] loc 3 // #2: gl_Normal (high float) 3x1 [-1] loc 2 // #3: gl_Vertex (high float) 4x1 [-1] loc 0 // #4: TANGENT (high float) 4x1 [-1] // uniforms: 5 (total size: 0) // #0: gl_LightModel (high other) 0x0 [-1] // #1: gl_ModelViewMatrixInverseTranspose (high float) 4x4 [-1] // #2: gl_ModelViewProjectionMatrix (high float) 4x4 [-1] // #3: _TerrainTreeLightColors (high float) 4x1 [4] // #4: _TerrainTreeLightDirections (high float) 3x1 [4]