render-stencil-textured.vert 1017 Bytes
// Shader for basic, per-vertex lighting with texture (vertex):

attribute mediump vec3  aPosition;
attribute highp   vec3  aNormal;
attribute highp   vec2  aTexCoord;

varying   mediump vec2  vTexCoord;
uniform   mediump mat4  uMvpMatrix;
uniform   mediump vec3  uSize;
uniform   mediump vec3  uObjectDimensions;
varying   mediump vec3  vIllumination;
uniform   mediump mat4  uModelView;
uniform   mediump mat4  uViewMatrix;
uniform   mediump mat3  uNormalMatrix;
uniform   mediump vec3  uLightPosition;

void main()
{
  mediump vec4 vertexPosition = vec4( aPosition * uObjectDimensions, 1.0 );
  vertexPosition = uMvpMatrix * vertexPosition;

  vec4 mvVertexPosition = uModelView * vertexPosition;

  vec3 vectorToLight = normalize( mat3( uViewMatrix ) * uLightPosition - mvVertexPosition.xyz );

  vec3 normal = uNormalMatrix * aNormal;
  float lightDiffuse = max( dot( vectorToLight, normal ), 0.0 );
  vIllumination = vec3( lightDiffuse * 0.5 + 0.5 );

  vTexCoord = aTexCoord;
  gl_Position = vertexPosition;
}