본문 바로가기

분류 전체보기102

09. RayMarching - SD Operation 도형들의 여러가지 연산 방법들의 대해서 정의 한다. 필요할때 마다 찾아서 사용하면 좋을 듯 하다 1) 도형 1, 도형 2를 합쳐서 출력.float opUnion(float d1, float d2) { return min(d1, d2);} 2) 도형 1, 도형 2를 부드럽게 합쳐서 출력.float opSmoothUnion(float d1, float d2, float k) { float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); return mix( d2, d1, h ) - k*h*(1.0-h);} 3) 도형 1, 도형 2의 공통 부분만 출력float opIntersection(float d1, float d2) { return max(d1, d2);} 4) 도형.. 2024. 8. 12.
08. RayMarching - Shadow 그림자 이펙트 구현.  2 pass 알고리즘이라고도 불리는 그림자 이펙트는구현하기 위해서는 픽셀마다 ray marching 2번 수행해야 한다. 카메라 원점에서 Ray Marching을 해서 물체와 충돌되는 지점 (p1) 를 찾았다면, --> 1다시 p1 지점에서 p1 --> light position 방향으로 Ray Marching을 다시 진행한다. --> 2이때 p1 지점과 light position 간 거리도 구해 놓는다. --> 3 2 번 ray marching 에서 얻은 뎁스 값과 3번에서 구한 거리 값을 비교해 본다.뎁스 값이 더 작다면, 물체와 태양 사이 다른 오브젝트가 있는 것으로 이해할 수 있으며 그림자가 생성 된다.뎁스 값이 같으면 물체와 태양 사이 아무것도 없는 것이며, 그림자가 생성.. 2024. 8. 10.
07. RayMarching - Frenel effect 프레넬 효과는 ?Fresnel Effect는 빛의 물체와 수직에 가까울수록 투과하는 비율이 높아지고,수평과 가까울수록 반사되는 비율이 높아지는 현상이다.수평에 가까우면 반사 비율이 커서 좀 밝게 보입니다.  정반사 (스펙큘러)와 의미는 비슷하지만, 정반사의 경우 들어오는 빛의양과 나가는 빛의 양이 일정하다고 가정하는 반면,현실에서는 빛이 물체에 도달했을때, 같은양의 빛이라고 해도 시야각(View Angle)에 따라 일정량은 반사를 하고, 일정량은 굴절하는것을 의미한다. 즉, Fresnel법칙이란, 물체의 매질과 시야각에 따라 반사율과 굴절율이 정해진다라는 것입니다.  원 물체에 점 2개가 있습니다.첫번째 점의 노말은 N1, 두번째 점의 노말을 N2 입니다.N1 부분은 수평에 가깝고, 반사율이 커지고 굴절.. 2024. 8. 10.
06. RayMarching - 퐁 라이팅 모델 퐁 라이팅 모델을 구현한다. 라이트 소스를 2개를 적용 결과.빛의 방향 좌측 상단 (-10, 10, 0);vec3 lightDirection = normalize(vec3(-10,10,0) - p); col += phong(lightDirection, normal, rd, s.mat) * 0.6; 빛의 방향 우측 상단 (50, 10, 0); vec3 lightDirectionA = normalize(vec3(50,10,0) - p);  col += phong(lightDirectionA, normal, rd, s.mat) * 0.6; 2개의 광원의 방향에 따라서 반사하는 라이팅이 적용된 모습을 볼 수 있다. 퐁 라이팅 모델은 ambient + diffuse + specular + emissive 컬러 값.. 2024. 8. 8.