본문 바로가기

Shader CG34

Liquid Glass 타원을 만드는 코드a : x축 반지름, b : y축 반지름n > 2 면 사각형에 가까워지고, n float sdSuperellipse(float2 p, float r, float n) { p = abs(p / r); float m = pow(p.x, n) + pow(p.y, n); return (pow(m, 1.0 / n) - 1.0) * r;}리턴값의 의미- 리턴값이 0이면 경계, 리턴값이 음수면 원안쪽, 양수면 원 바깥쪽. float w1 = exp(-dg1 * dg1 * 8.0);float w2 = exp(-dg2 * dg2 * 8.0);float totalWeight = w1 + w2 + 1e-6;dg1 원내부는 음수, 원 밖은 양수, 경계는 0이다.-1을 한쪽에 곱해주면 .. 2025. 6. 16.
FireWorks 불꽃놀이 파티클폭발하는 파티클 단계를 만들어 본다.먼저 가운데 밝은점 만들어 보자.uv 값의 범위는 x : -.5 ~ .5, y : -.5 ~ .5 로 설정되어 있다.uv 값의 크기를 구하면 uv와 원점과의 거리가 나오며, 그 거리를 역수를 취해서 컬러값에 넣어주면 다음과 같이 나온다.vec2 uv = (fragCoord - .5 * iResolution.xy) / iResolution.y;col = length(uv) * vec3(1); length(uv) 값을 d 값으로 설정하고, 소수를 d 값으로 나눈 값을 컬러값으로 사용하면d 값 작으면 컬러값이 커지게 되고, d 값이 커지면 컬러값이 작아져 다음과 같이 나온다.col = .1 / length(uv) * vec3(1); 이제 해쉬함수를 생성한다.해.. 2024. 9. 29.
Star 별자리 애니메이션 를 만들어본다.별자리 렌더링을 하기 위해서 다음 과정을 진행한다.  1> 화면의 구간을 여러개로 나누고 나눈 구간마다 공이 돌아다니는 씬을 만들어 본다. 화면의 중심을 원점으로 옮기고 uv 값에 특정 수를 곱해주고 fract를 시켜주면특정 수 만큼 패턴이 반복이된다.예를 들어 5를 곱하게 되면 uv 값은 0~5의 범위를 가지게 된다.fract를 시켜주면 0.0 ~ 1.0의 구간이 5개가 생기므로 반복된 색상의 패턴이 나오게 된다..5를 빼주어서 반복된 패턴의 중심도 좌측하단에서 원점으로 바꾸어 준다. vec2 uv = (fragCoord - 0.5*iResolution.xy)/iResolution.y;vec2 repeat = vec2(10);vec2 st = fract(uv * repe.. 2024. 9. 10.
12. RayMarching - rain and lights struct ray { vec3 o; vec3 d;};// 직선과 점이 수직으로 만났을때 지점vec3 clossestPoint(ray r, vec3 p) { return r.o + max(0., dot(p - r.o, r.d)) * r.d;}// 직선과 점과 최단 거리float DistRay(ray r, vec3 p) { return length(p - clossestPoint(r, p));}// 카메라 좌표계 구하기.ray GetRay(vec2 uv, vec3 camPos, vec3 lookat, float zoom) { ray a; a.o = camPos; vec3 f = normalize(lookat - camPos); vec3 r = cross(vec3(0,1,0), f); vec.. 2024. 8. 18.