uniform vec4 _TreeBillboardCameraFront; uniform vec4 _TreeBillboardCameraPos; uniform vec3 _TreeBillboardCameraRight; uniform vec4 _TreeBillboardCameraUp; uniform vec4 _TreeBillboardDistances; varying vec4 xlv_FOG; void main () { vec4 tmpvar_1; vec2 tmpvar_2; vec4 pos_3; pos_3 = gl_Vertex; vec2 offset_4; offset_4 = gl_MultiTexCoord1.xy; vec3 treePos_5; treePos_5 = (gl_Vertex.xyz - _TreeBillboardCameraPos.xyz); float tmpvar_6; tmpvar_6 = dot (treePos_5, treePos_5); if ((tmpvar_6 > _TreeBillboardDistances.x)) { offset_4 = vec2(0.0, 0.0); }; pos_3.xyz = (gl_Vertex.xyz + (_TreeBillboardCameraRight * offset_4.x)); float tmpvar_7; tmpvar_7 = mix (offset_4.y, gl_MultiTexCoord0.y, _TreeBillboardCameraPos.w); float tmpvar_8; tmpvar_8 = abs(tmpvar_7); pos_3.xyz = (pos_3.xyz + mix (( (((_TreeBillboardCameraUp.xyz * max (0.0, tmpvar_7)) * 2.0) - (vec3(0.0, 1.0, 0.0) * tmpvar_8)) - ((_TreeBillboardCameraUp.xyz * tmpvar_8) * _TreeBillboardCameraFront.w) ), (_TreeBillboardCameraUp.xyz * tmpvar_7), _TreeBillboardCameraUp.www)); tmpvar_1 = (gl_ModelViewProjectionMatrix * pos_3); tmpvar_2.x = gl_MultiTexCoord0.x; tmpvar_2.y = float((gl_MultiTexCoord0.y > 0.0)); gl_Position = tmpvar_1; vec4 tmpvar_9; tmpvar_9.yzw = vec3(0.0, 0.0, 0.0); tmpvar_9.x = tmpvar_1.z; xlv_FOG = tmpvar_9; gl_FrontColor = gl_Color; vec4 tmpvar_10; tmpvar_10.zw = vec2(0.0, 0.0); tmpvar_10.xy = tmpvar_2; gl_TexCoord[0] = tmpvar_10; } // stats: 24 alu 0 tex 1 flow // inputs: 4 // #0: gl_MultiTexCoord1 (high float) 4x1 [-1] loc 9 // #1: gl_MultiTexCoord0 (high float) 4x1 [-1] loc 8 // #2: gl_Color (high float) 4x1 [-1] loc 3 // #3: gl_Vertex (high float) 4x1 [-1] loc 0 // uniforms: 6 (total size: 0) // #0: gl_ModelViewProjectionMatrix (high float) 4x4 [-1] // #1: _TreeBillboardCameraFront (high float) 4x1 [-1] // #2: _TreeBillboardCameraPos (high float) 4x1 [-1] // #3: _TreeBillboardCameraRight (high float) 3x1 [-1] // #4: _TreeBillboardCameraUp (high float) 4x1 [-1] // #5: _TreeBillboardDistances (high float) 4x1 [-1]