#version 300 es #define gl_Vertex _glesVertex in highp vec4 _glesVertex; #define gl_Normal _glesNormal in mediump vec3 _glesNormal; #define gl_MultiTexCoord0 _glesMultiTexCoord0 in highp vec4 _glesMultiTexCoord0; struct v2f { highp vec4 pos; lowp vec4 color; highp vec2 uv; }; uniform mediump vec4 unity_LightColor[8]; uniform highp vec4 unity_LightPosition[8]; uniform mediump vec4 unity_LightAtten[8]; uniform highp mat4 glstate_matrix_mvp; uniform highp mat4 glstate_matrix_modelview0; uniform highp mat4 glstate_matrix_invtrans_modelview0; uniform highp vec4 glstate_lightmodel_ambient; uniform mediump vec4 _Color; highp vec3 ShadeLights( in highp vec3 vertex, in highp vec3 normal ) { highp vec3 viewpos = (glstate_matrix_modelview0 * vec4( vertex, 1.0)).xyz; highp vec3 viewN = (mat3( glstate_matrix_invtrans_modelview0) * normal); highp vec3 lightColor = glstate_lightmodel_ambient.xyz; highp int i = 0; for ( ; (i < 4); (i++)) { highp vec3 toLight = (unity_LightPosition[i].xyz - (viewpos.xyz * unity_LightPosition[i].w)); highp float lengthSq = dot( toLight, toLight); highp float atten = (1.0 / (1.0 + (lengthSq * unity_LightAtten[i].z))); highp float diff = max( 0.0, dot( viewN, normalize(toLight))); lightColor += (unity_LightColor[i].xyz * (diff * atten)); } return (lightColor * vec3( _Color)); } v2f vert( in highp vec3 v, in highp vec3 n, in highp vec2 uv ) { v2f o; o.pos = (glstate_matrix_mvp * vec4(v, 1.0)); o.color = vec4( (ShadeLights(v, n) * 2.0), 1.0); o.uv = uv; return o; } out lowp vec4 xlv_COLOR0; out highp vec2 xlv_TEXCOORD0; void main() { v2f xl_retval; xl_retval = vert( vec3(gl_Vertex), vec3(gl_Normal), vec2(gl_MultiTexCoord0)); gl_Position = vec4(xl_retval.pos); xlv_COLOR0 = vec4(xl_retval.color); xlv_TEXCOORD0 = vec2(xl_retval.uv); }