/* Attributes */ attribute vec3 inVertexPosition; attribute vec3 inVertexNormal; attribute vec4 inVertexColor; attribute vec2 inTexCoord0; attribute vec2 inTexCoord1; /* Uniforms */ uniform mat4 uWVPMatrix; uniform mat4 uWVMatrix; uniform mat4 uNMatrix; uniform mat4 uTMatrix0; uniform vec4 uGlobalAmbient; uniform vec4 uMaterialAmbient; uniform vec4 uMaterialDiffuse; uniform vec4 uMaterialEmissive; uniform vec4 uMaterialSpecular; uniform float uMaterialShininess; uniform float uThickness; /* Varyings */ varying vec2 vTextureCoord0; varying vec2 vTextureCoord1; varying vec4 vVertexColor; varying vec4 vSpecularColor; varying float vFogCoord; void main() { gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0); gl_PointSize = uThickness; vec4 TextureCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 1.0, 1.0); vTextureCoord0 = vec4(uTMatrix0 * TextureCoord0).xy; vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz; vec3 P = normalize(Position); vec3 N = normalize(vec4(uNMatrix * vec4(inVertexNormal, 0.0)).xyz); vec3 R = reflect(P, N); float V = 2.0 * sqrt(R.x*R.x + R.y*R.y + (R.z+1.0)*(R.z+1.0)); vTextureCoord1 = vec2(R.x/V + 0.5, R.y/V + 0.5); vVertexColor = inVertexColor.bgra; vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0); vFogCoord = length(Position); }