add motion vectors to all shaders
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / scoretext.vs
1 #include "vertex_standard.glsl"
2 #include "motion_vectors_vs.glsl"
3
4 uniform mat4x3 uMdl;
5 uniform mat4 uPv;
6 uniform mat4 uPvmPrev;
7
8 uniform vec3 uInfo;
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 float w = (a_colour.g * 8.0)-5.5 + fract(uInfo.z+0.5);
19 float c = -cos(w*0.2);
20 float s = -sin(w*0.2);
21 float r = 0.2;
22
23 float w1 = clamp( w*4.0 - a_co.y*10.0, -1.0, 1.0 ) * (3.14159265*0.5);
24 float c1 = cos(w1);
25 float s1 = sin(w1);
26
27 float yoff = step(0.01,fract(uInfo.z))*-0.5;
28
29 mat4x3 mlocal;
30 mlocal[0] = vec3(c1, s1,0.0);
31 mlocal[1] = vec3(-s1,c1,0.0);
32 mlocal[2] = vec3(0.0,0.0,1.0);
33 mlocal[3] = vec3(c*r,uInfo.y*0.875 + s*r,uInfo.x*0.5);
34
35 vec3 local_pos = mlocal * vec4( a_co, 1.0 );
36 vec3 world_pos = uMdl * vec4( local_pos, 1.0 );
37
38 vec4 vproj0 = uPv * vec4( world_pos, 1.0 );
39 vec4 vproj1 = uPvmPrev * vec4( local_pos, 1.0 );
40
41 // Output
42 vs_motion_out( vproj0, vproj1 );
43
44 gl_Position = vproj0;
45 aColour = a_colour;
46 aUv = a_uv + vec2( floor(uInfo.z+0.5)*(1.0/64.0), yoff );
47 aNorm = mat3(uMdl) * mat3(mlocal) * a_norm;
48 aCo = a_co;
49 aWorldCo = world_pos;
50 }