http://glsl.heroku.com/e#19224.0 공부해봄

image
#ifdef GL_ES
precision mediump float;
#endif

uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;

float rand(vec2 v){
    return fract(sin(dot(v.xy,vec2(33.9898,78.233))) * 43758.56);
}
void main( void ) {

    vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / resolution.y ;

    float c = 0.0;
    for(int i = 0; i <20; i++){
        float f = float(i);
        p +=  // 뒤에 나올 컬러값을 pixel값에 더해 해상도를 높인다. 이부분을 주석처리 해보면 어떤 역할을 하는지 알 수 있다.
        c += max(0.5 - length(vec2(rand(vec2(f, 2.0)), rand(vec2(-1.0, f))) * 2.0 - 1.0 - p), 0.0); 
        // c에 랜덤한 벡터와 원점 사이의 위치값을 반환한다. - 원 그리기
        // max를 이용해 0보다 높은 값만 더한다.
    }

    gl_FragColor = vec4(vec3(smoothstep(0.1, 0.6, c), smoothstep(0.4, 1.0, c), smoothstep(0.8, 1.0, c)), 1.0 ); // 적색 그라데이션
//  gl_FragColor = vec4(vec3(c, c, c), 1.0 ); // 흑백

}