attribute vec4 in_vertex; attribute vec3 in_normal; attribute vec4 in_tangent; attribute vec2 in_uv; uniform mat3 invView; varying vec3 forward, right; varying vec3 npos; varying vec3 normal, binormal, tangent; varying vec2 uv; void main() { normal = normalize(gl_NormalMatrix * in_normal); tangent = normalize(gl_NormalMatrix * in_tangent.xyz); binormal = normalize(gl_NormalMatrix * cross(normal, in_tangent.xyz * in_tangent.w)); forward = normalize(invView * vec3(1.0,0.0,0.0)); right = normalize(invView * vec3(0.0,0.0,1.0)); vec4 pos = gl_ModelViewMatrix * in_vertex; npos = -pos.xyz; uv = in_uv; gl_Position = gl_ProjectionMatrix * pos; }