Lección 6 de 10 · Fuerzas en un shader
Drift
Diamantes que se deslizan. Diagonal perezosa.
Drift es gravedad + viento al mismo tiempo pero a velocidades diferentes. X se mueve lento, Y se mueve ligeramente más rápido. El resultado es un desplazamiento diagonal perezoso, el material se desliza como aceite sobre vidrio.
Mancha de aceite en la banqueta.
Velocidades asimétricas
p.x += T * 0.06 y p.y += T * 0.09. Diferente velocidad por eje = diagonal. La asimetría es lo que hace que no se vea mecánico.Invierte las velocidades: intercambia
0.06 y 0.09. El drift cambia de dirección. Pon una negativa, drift hacia arriba-izquierda.El código
void main(){
vec2 p = (2.*gl_FragCoord.xy - R) / min(R.x, R.y);
vec3 col = vec3(0.02, 0.05, 0.1);
for(int i = 0; i < 5; i++){
float fi = float(i);
float sx = 0.06+fi*.012;
float sy = 0.09+fi*.018;
vec2 c = vec2(mod(fi*.7+T*sx,3.)-1.5, mod(fi*1.1+T*sy,3.)-1.5);
vec2 q = abs(p-c);
float sz = 0.13+fi*.025;
float d = q.x+q.y-sz;
vec2 qs = abs(p-c+vec2(.05,-.06));
col *= smoothstep(-.02,.12, qs.x+qs.y-sz);
col += vec3(.05+fi*.18,.75-fi*.1,.5+fi*.08) * smoothstep(.01,-.01,d) * (.55+fi*.12);
col += vec3(.03+fi*.08,.35-fi*.05,.25+fi*.04) * exp(-max(d,0.)*5.) * .25;
}
col = hueShift(col, 0.0);
gl_FragColor = vec4(col, 1.);
}