1 attribute vec4 a_position; 2 attribute vec3 a_normal; 3 4 uniform mat4 u_camera; 5 uniform mat4 u_projector; 6 uniform mat4 u_model; 7 uniform mat4 u_modelNormal; 8 uniform vec3 u_projectorPos; 9 uniform vec3 u_color; 10 11 varying vec3 v_color; 12 varying vec4 v_texcoords; 13 varying vec3 v_normal; 14 varying vec3 v_position; 15 16 void main() { 17 vec4 worldPos = u_model * a_position; 18 vec3 worldNormal = (u_modelNormal * vec4(a_normal, 1)).xyz; 19 20 v_position = worldPos.xyz; 21 v_normal = worldNormal.xyz; 22 v_color = u_color; 23 v_texcoords = u_projector * worldPos; 24 gl_Position = u_camera * worldPos; 25 }