much better implicit IK solver
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / standard_skinned.vs
1 #include "vertex_standard.glsl"
2
3 uniform mat4 uPv;
4 uniform mat4x3 uTransforms[32];
5
6 out vec4 aColour;
7 out vec2 aUv;
8 out vec3 aNorm;
9 out vec3 aCo;
10 out vec3 aWorldCo;
11
12 void main()
13 {
14 vec4 co_local = vec4( a_co, 1.0 );
15 vec3 co0 = uTransforms[ a_groups[0] ] * co_local;
16 vec3 co1 = uTransforms[ a_groups[1] ] * co_local;
17 vec3 co2 = uTransforms[ a_groups[2] ] * co_local;
18 vec3 n0 = mat3(uTransforms[ a_groups[0] ]) * a_norm;
19 vec3 n1 = mat3(uTransforms[ a_groups[1] ]) * a_norm;
20 vec3 n2 = mat3(uTransforms[ a_groups[2] ]) * a_norm;
21
22 vec3 world_pos = co0*a_weights[0] + co1*a_weights[1] + co2*a_weights[2];
23 vec3 world_normal = n0*a_weights[0] + n1*a_weights[1] + n2*a_weights[2];
24
25 gl_Position = uPv * vec4( world_pos, 1.0 );
26 aColour = a_colour;
27 aUv = a_uv;
28 aNorm = world_normal;
29 aCo = a_co;
30 aWorldCo = world_pos;
31 }