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.
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.