struct v2f { highp vec2 uv; highp vec3 nl; }; uniform sampler2D _MainTex; uniform highp vec4 _TerrainTreeLightColors[4]; lowp vec4 xlat_main (in v2f i) { lowp vec4 col = texture2D( _MainTex, i.uv); mediump vec3 light = vec3(0.0); int loopCount = int(col.a*10.0); for (int j = 0; j < loopCount; ++j) { light += col.xyz * i.nl[j] * _TerrainTreeLightColors[j].xyz; } return vec4(light, 1.0); } varying highp vec2 xlv_uv; varying highp vec3 xlv_nl; void main() { v2f i; i.uv = xlv_uv; i.nl = xlv_nl; gl_FragData[0] = xlat_main(i); }