1 layout (location=0) in vec4 a_co;
2 layout (location=1) in vec4 a_norm;
3 layout (location=2) in vec4 a_colour;
5 #include "motion_vectors_vs.glsl"
10 uniform mat4 uPvmPrev;
12 uniform vec4 uTransform;
19 vec2 rand_hash22( vec2 p )
21 vec3 p3 = fract(vec3(p.xyx) * 213.8976123);
22 p3 += dot(p3, p3.yzx+19.19);
23 return fract(vec2((p3.x + p3.y)*p3.z, (p3.x+p3.z)*p3.y));
29 float t = max(0.0,uTime.y);
32 vec3 grid = vec3(floor(lco.x),lco.y,floor(lco.z));//fract(p);
34 return mix(p,grid * (1.0/20.0), t)*vec3(1.0+t,1.0-t,1.0+t);
39 vec3 mco = a_co.xyz * uTransform.w + uTransform.xyz;
42 vec3 center = vec3(0.5);
43 vec3 lco = mapP(mco-center);
46 vec3 world_pos0 = uMdl * vec4( mco, 1.0 );
47 vec4 vproj0 = uPv * vec4( world_pos0, 1.0 );
48 vec4 vproj1 = uPvmPrev * vec4( mco, 1.0 );
50 float t = max(0.0,uTime.y);
51 float scaler = smoothstep(0.6,0.58,length(lco.xz*vec2(0.7,1.0)));
53 vs_motion_out( vproj0, vproj1 );
56 gl_PointSize = (8.0*uTransform.w*scaler) / (gl_Position.z + 0.01);
57 aWorldCo = world_pos0;
58 aColour = a_colour*scaler*(0.3+a_co.y)+pow(1.0-a_co.y,16.0);
60 aNorm = uNormMtx * a_norm.xyz;