Shader/TheBookofShaders

Step & Smoothstep

BroJune 2021. 8. 19. 01:28

Step & Smoothstep

https://thebookofshaders.com/05/

 

- Step 

x 가 0.5 이상이면 y가 1을 갖는다.

 





- Smoothstep
0~1 사이에서 보간이 일어난다.





vec2 st = gl_FragCoord.xy/u_resolution; 

# 0~1 사이의 값으로 Normalize한다.
float y = st.x;

 vec3 color = vec3(st.x);

# y = st.x  color값을 표현하니 0에 가까울수록 검은색 1에 가까울수록 

하얀색을 표현하게 된다.

float pct = plot(st,y);

color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0);

# pct가 만약 0이면 앞에 (1.0 - 0)*color값을 가지게 되고
# pct가 1이되면 (1.0-1.0)*color값은 0이되고 뒤에 1*vec3(0.0,1.0,0.0);값을 

가지게 된다. 

 

float plot(vec2 st,float pct) {  

     return smoothstep( pct-0.02, pct, st.y) -

           smoothstep( pct, pct+0.02, st.y);

}

# smoothstep( pct-0.02, pct, st.y)는 식에서 보면 

# float pct = plot(st,y) 를 가지며 pct 는 y를 변수로 가지며 

# y = st.x를 가지므로 pct = st.x

 

 - smoothstep( st.x-0.02, st.x, st.y) 

 

 

 - smoothstep(st.x, st.x+0.02, st.y)



 

 - smoothstep( pct-0.02, pct, st.y) - smoothstep( pct, pct+0.02, st.y);

 

 

 

 

float y = pow(st.x,5.0); 

# x의 5승

 

 

float y = step(0.5,st.x);

# 0.5 미만이면 0 아니면 1

 

float y = smoothstep(0.1,0.9,st.x);

# 0.1미만이면 0 0.9보다 크면 1 0.1~0.9사이는 부드러운 보간이 일어난다.

 - gain 함수

 

https://www.iquilezles.org/www/articles/functions/functions.htm

 

Inigo Quilez

Articles on computer graphics, math and art

iquilezles.org