본문 바로가기
Shader/TheBookofShaders

atan

by BroJune 2021. 8. 19.

atan

https://en.wikipedia.org/wiki/HSL_and_HSV#Color_conversion_formulae

 

https://www.shadertoy.com/view/MsS3Wc

 

RGB를 HSL(색조,채도,밝기)로 변환 

 

color = hsl2rgb(vec3(st.x,1.0,st.y)

색조는 x축 변화 ,채도는 1, 밝기는 y축 변화



atan()

 

float length(vec2 x) 

원점과 지정해준 곳의 거리

한점만 지정하면 되다보니 distance보다 빠름

 

float distance(vec2 p0, vec2 p1)

무조건 원점과의 거리가 아니라 지정한 두점과의 거리

 

 

#ifdef GL_ES

precision mediump float;

#endif

 

#define TWO_PI 6.28318530718

#define PI 3.141592

 

uniform vec2 u_resolution;

uniform float u_time;

 

//  Function from Iñigo Quiles

//  https://www.shadertoy.com/view/MsS3Wc

vec3 hsb2rgb( in vec3 c ){

    vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),

                             6.0)-3.0)-1.0,

                     0.0,

                     1.0 );

    rgb = rgb*rgb*(3.0-2.0*rgb);

    return c.z * mix( vec3(1.0), rgb, c.y);

}

 

void main(){

    vec2 coord = gl_FragCoord.xy/u_resolution;

    coord = coord*2.-1.;

    

    

float angle = atan(coord.y,coord.x);

    angle += PI;

    angle /= 2.*PI;

    

    float dist = length(coord);

        

    vec3 color = hsb2rgb(vec3(angle, dist, 1.));

gl_FragColor = vec4(color, 1.);

    

}



 

#ifdef GL_ES

precision mediump float;

#endif

 

#define TWO_PI 6.28318530718

#define PI 3.141592

 

uniform vec2 u_resolution;

uniform float u_time;

 

//  Function from Iñigo Quiles

//  https://www.shadertoy.com/view/MsS3Wc

vec3 hsb2rgb( in vec3 c ){

    vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),

                             6.0)-3.0)-1.0,

                     0.0,

                     1.0 );

    rgb = rgb*rgb*(3.0-2.0*rgb);

    return c.z * mix( vec3(1.0), rgb, c.y);

}

 

void main(){

    vec2 coord = gl_FragCoord.xy/u_resolution;

    coord = coord*2.-1.;

    

    

float angle = atan(coord.y,coord.x);

    angle += PI + sin(u_time)*3.;

    angle /= 2.*PI;

    angle *= 10.;

    

    float dist = length(coord);

        

    vec3 color = hsb2rgb(vec3(angle, dist, 1.));

gl_FragColor = vec4(color, 1.);

    

}

 

'Shader > TheBookofShaders' 카테고리의 다른 글

Rectangle  (0) 2021.08.19
qualifier  (0) 2021.08.19
Color  (0) 2021.08.19
Step & Smoothstep  (0) 2021.08.19
gl_FragCoord  (0) 2021.08.19