framebuffer formalitites
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / standard_skinned.vs
1 #include "vertex_standard.glsl"
2 #include "motion_vectors_vs.glsl"
3
4 uniform mat4 uPv;
5
6 // TODO: Send a previous transform matrix stack
7 //
8 uniform mat4x3 uTransforms[32];
9
10 out vec4 aColour;
11 out vec2 aUv;
12 out vec3 aNorm;
13 out vec3 aCo;
14 out vec3 aWorldCo;
15
16 void main()
17 {
18 vec4 co_local = vec4( a_co, 1.0 );
19 vec3 co0 = uTransforms[ a_groups[0] ] * co_local;
20 vec3 co1 = uTransforms[ a_groups[1] ] * co_local;
21 vec3 co2 = uTransforms[ a_groups[2] ] * co_local;
22 vec3 n0 = mat3(uTransforms[ a_groups[0] ]) * a_norm;
23 vec3 n1 = mat3(uTransforms[ a_groups[1] ]) * a_norm;
24 vec3 n2 = mat3(uTransforms[ a_groups[2] ]) * a_norm;
25
26 vec3 world_pos = co0*a_weights[0] + co1*a_weights[1] + co2*a_weights[2];
27 vec3 world_normal = n0*a_weights[0] + n1*a_weights[1] + n2*a_weights[2];
28
29 gl_Position = uPv * vec4( world_pos, 1.0 );
30 aColour = a_colour;
31 aUv = a_uv;
32 aNorm = world_normal;
33 aCo = a_co;
34 aWorldCo = world_pos;
35
36 // TODO:
37 aMotionVec0 = vec3(1.0);
38 aMotionVec1 = vec3(1.0);
39 }