본문 바로가기

Shader/TheBookofShaders12

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값을 가지게 되고 # p.. 2021. 8. 19.
gl_FragCoord gl_FragCoord vec2 st = gl_FragCoord.xy/u_resolution; # vec2 - x좌표 , y좌표 # gl_FragCoord.xy 현재 가지고 있는 xy좌표를 가지고 와라 # u_resolution 전체 해상도 중간 값 구하는 방법 예를 들어 중앙 값을 계산할때 전체 해상도가 1000일경우 가운대의 값은 500,500의 좌표를 가지니 계산 방식은 (500/1000, 500/1000) 이 된다. 밑에 식으로 풀면 void main() { vec2 st = vec2(500.0/1000.0,500.0/1000.0); gl_FragColor = vec4(st.x,st.y,0.0,1.0); } 최종적으로 void main() { vec2 st = vec2(.5); gl_FragCol.. 2021. 8. 19.
Uniform Uniform Uniform = Cpu에서 Gpu 로 정보를 넘겨주는 변수 uniform vec2 u_resolution; # vec2 인 이유는 가로 /세로 를 표현하기 때문 # u_resolution 은 화면이 가지고 있는 전체 해상도 쓰는사람이 정한 이름이라 변경해도 됨 uniform vec2 u_mouse; # 마우스 위치 좌표 x,y uniform float u_time; # 시간 ex ) ShaderToy.com uniform vec3 iResolution; // viewport resolution (in pixels) uniform vec4 iMouse; // mouse pixel coords. xy: current, zw: click uniform float iTime; // shader .. 2021. 8. 19.
Hello World Hello World https://thebookofshaders.com/02/ gl_FragColor 전역변수 vec4 (f,f,f,f) 형변환에 엄격하므로 float f = 1 ; 이아니라 float f = 1.0; 으로 해야한다. Normalize (정규화) 2021. 8. 19.