GLSL (OpenGL Shading Language)
- 데이터 타입 : float, int, bool, vec2(f,f), vec3(f,f,f), vec4(f,f,f,f) - rgba …
- GLSL은 타입에 엄격하다. (. 때문에 컴파일이 안되기도 함)
uniform cpu에서 gpu로 정보를 넘겨주는 변수
gl_FragCoord 픽셀의 위치 정보 (좌측 하단을 원점으로 시작)
smoothstep 두 값 사이의 보간 수행
ex) vec2 smoothstep(float edge0, float edge1, vec2 x)
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
// Plot a line on Y using a value between 0.0-1.0
float plot(vec2 st) {
// y와 x
return smoothstep(0.020, 0.0, abs(st.y - st.x));
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution;
float y = st.x;
vec3 color = vec3(y);
// Plot a line
float pct = plot(st);
color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0);
gl_FragColor = vec4(color,1.0);
}
내장함수
- pow(st.x,5.0) x의 5승
- step(0.5,st.x) 0.5를 기준으로 x 가 0.5 보다 작으면 0 크면 1
- sin(x) sin 주기
- con(x) cos 주기
- mod(x,1.5) 나머지 연산
- fract(x) 소숫점만 리턴
- ceil(x) 올림
- floor(x) 내림
- sign(x) 양수 1리턴 음수 -1 리턴
- abs(x) 절대값 리턴
- clamp(x,0.0,1.0) 리턴값을 지정된 범위로 지정
- min(0.0,x) 둘중 작은 변수 리턴
- max(0.0,x) 둘중 큰 변수 리턴
- gain(st.x, 1.5) smoothstep에서 기울기를 변화하는것
출처
https://thebookofshaders.com/
https://opentutorials.org/module/3659/21954
https://kblog.popekim.com/2011/11/01-part-1.html