#version 300 es in vec4 a_position; uniform mat4 u_matrix; uniform vec3 u_lightPos; uniform float u_pointSize; out vec4 fragNormal; out vec3 v_surfaceToLight; void main() { // convert the position from pixels to 0.0 to 1.0 vec4 pos = a_position * u_matrix; gl_Position = pos; gl_PointSize = u_pointSize; fragNormal = normalize(pos); vec3 surfaceWorldPosition = (u_matrix * pos).xyz; v_surfaceToLight = u_lightPos - surfaceWorldPosition; }