xxxxxxxxxx
// Author: Sol Sarratea @solquemal
// Title: Clase 2 - Descripción de figuras
precision mediump float;
uniform float u_time;
uniform vec2 u_resolution;
// Declaramos funciones para usar dentro de la función principal
vec2 uvN(){
/* Devuelve las posiciones del canvas en rango [0.,1.]x[0.,1.] */
vec2 pos = gl_FragCoord.xy/u_resolution;
pos.x *= u_resolution.y/u_resolution.x;
return pos;
}
vec2 uv(){
/* Devuelve las posiciones del canvas en rango [-1.,1.]x[-1.,1.] */
vec2 pos = gl_FragCoord.xy/u_resolution;
pos.x *= u_resolution.y/u_resolution.x;
pos = pos *2.-1.;
return pos;
}
vec2 polares(){
/* Devuelve las posiciones del canvas representadas como coordenadas polares */
vec2 pos = gl_FragCoord.xy/u_resolution;
pos.x *= u_resolution.y/u_resolution.x;
float radio = length(pos);
float angulo = atan(pos.y,pos.x);
return vec2(radio, angulo);
}
void main() {
vec2 pos = uv();
vec3 color;
float dx = distance(pos.x,0.);
float eje1 = step(0.5,dx); // "Discretiza" el valor de dx. Vale 0 si dx< 0.5 y vale 1 sino.
//eje1 = smoothstep(0.3,0.6,dx); // "Suavemente Discretiza" el valor dx.
//Vale 0 si dx< 0.3. Vale 1 si dx>0.6. Y es suave entre 0.3 y 0.6 (interpola linealmente entre 0 y 1)
eje1 = 1.-step(0.01,dx);
color.r = eje1;
//De la misma manera definimos el eje2
float dy = distance(pos.y,0.);
float eje2 = 1.-step(0.01,dy);
color.b = eje2;
gl_FragColor = vec4(color,1.);
}