uniform mat4 mvp; uniform mat3 m3a, m3b, m3c; uniform vec4 v3a, v3b, v3c; void main() { gl_Position = mvp * gl_Vertex; vec3 ta = -(v3a.xyz - gl_Vertex.xyz); vec3 ra = m3a * ta; vec3 tb = -((mvp * v3b).xyz - gl_Vertex.xyz); vec3 rb = m3b * tb; vec3 rc = m3c * (-(v3c.xyz - gl_Vertex.xyz)); gl_FrontColor = vec4(ra+rb+rc,1.0); }