uniform vec4 _TreeBillboardCameraFront; uniform vec4 _TreeBillboardCameraPos; uniform vec3 _TreeBillboardCameraRight; uniform vec4 _TreeBillboardCameraUp; uniform vec4 _TreeBillboardDistances; void main () { vec2 tmpvar_1; vec4 pos_2; pos_2 = gl_Vertex; vec2 offset_3; offset_3 = gl_MultiTexCoord1.xy; vec3 treePos_4; treePos_4 = (gl_Vertex.xyz - _TreeBillboardCameraPos.xyz); float tmpvar_5; tmpvar_5 = dot (treePos_4, treePos_4); if ((tmpvar_5 > _TreeBillboardDistances.x)) { offset_3 = vec2(0.0, 0.0); }; pos_2.xyz = (gl_Vertex.xyz + (_TreeBillboardCameraRight * offset_3.x)); float tmpvar_6; tmpvar_6 = mix (offset_3.y, gl_MultiTexCoord0.y, _TreeBillboardCameraPos.w); float tmpvar_7; tmpvar_7 = abs(tmpvar_6); pos_2.xyz = (pos_2.xyz + mix (( (((_TreeBillboardCameraUp.xyz * max (0.0, tmpvar_6)) * 2.0) - (vec3(0.0, 1.0, 0.0) * tmpvar_7)) - ((_TreeBillboardCameraUp.xyz * tmpvar_7) * _TreeBillboardCameraFront.w) ), (_TreeBillboardCameraUp.xyz * tmpvar_6), _TreeBillboardCameraUp.www)); tmpvar_1.x = gl_MultiTexCoord0.x; tmpvar_1.y = float((gl_MultiTexCoord0.y > 0.0)); gl_Position = (gl_ModelViewProjectionMatrix * pos_2); vec4 tmpvar_8; tmpvar_8.zw = vec2(0.0, 0.0); tmpvar_8.xy = tmpvar_1; gl_TexCoord[0] = tmpvar_8; } // stats: 23 alu 0 tex 1 flow // inputs: 3 // #0: gl_MultiTexCoord1 (high float) 4x1 [-1] loc 9 // #1: gl_MultiTexCoord0 (high float) 4x1 [-1] loc 8 // #2: 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]