본문 바로가기

분류 전체보기98

atan 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.28318.. 2021. 8. 19.
Color Color 밑에 처럼 [0] = r = x = s 인것처럼 어느것을 사용해도 똑같다. Swizzle rgb 순서가 무조건 고정 될 필요는 없다. 예를 들어)rrr,ggg,bbb,rbg,gbr을 사용해도 아무 상관없다. mix float pct = abs(sin(u_time)); # 시간 변화에 따른 0~1사이 색변화 pct.r 값만 골라서 믹스 pct.g 값만 골라서 믹스한 값 pct.b 2021. 8. 19.
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.