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]
