Step & Smoothstep
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