/clases/clase2/ init checkpoint 0 checkpoint 1 checkpoint 2 bonus
xxxxxxxxxx
1
// Author: Sol Sarratea @solquemal
2
// Title: Clase 2 - Descripción de figuras
3
precision mediump float;
4
5
uniform float u_time;
6
uniform vec2 u_resolution;
7
8
// Declaramos funciones para usar dentro de la función principal
9
vec2 uvN(){
10
    /* Devuelve las posiciones del canvas en rango [0.,1.]x[0.,1.] */
11
    vec2 pos = gl_FragCoord.xy/u_resolution; 
12
    pos.x *= u_resolution.y/u_resolution.x;  
13
    return pos;
14
}
15
vec2 uv(){
16
    /* Devuelve las posiciones del canvas en rango [-1.,1.]x[-1.,1.] */
17
    vec2 pos = gl_FragCoord.xy/u_resolution; 
18
    pos.x *= u_resolution.y/u_resolution.x;
19
    pos = pos *2.-1.;
20
    return pos;
21
}
22
vec2 polares(){
23
     /* Devuelve las posiciones del canvas representadas como coordenadas polares */
24
    vec2 pos = gl_FragCoord.xy/u_resolution; 
25
    pos.x *= u_resolution.y/u_resolution.x;
26
    float radio = length(pos);
27
    float angulo = atan(pos.y,pos.x);
28
    return vec2(radio, angulo);
29
}
30
void main() {
31
    vec2 pos = uv(); 
32
    vec3 color;
33
    
34
    float dx = distance(pos.x,0.); 
35
    float eje1 = step(0.5,dx); // "Discretiza" el valor de dx. Vale 0 si dx< 0.5 y vale 1 sino.
36
    //eje1 = smoothstep(0.3,0.6,dx); // "Suavemente Discretiza" el valor dx. 
37
    //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)
38
    eje1 = 1.-step(0.01,dx);
39
    color.r = eje1;
40
    
41
    //De la misma manera definimos el eje2
42
    float dy = distance(pos.y,0.);
43
    float eje2 = 1.-step(0.01,dy);
44
    color.b = eje2;
45
46
    gl_FragColor = vec4(color,1.);
47
}
48
49