본문 바로가기

Dev15

[Nori] Assignment 5: Path Tracing, Microfacet Models, and Multiple Importance Sampling #2 --- 2021/6/25 수정 : 코드 관련 부분 삭제 지난번 포스팅에 이어 Assignment 5를 진행한다. 이번 포스팅에서는 간단한 Path Tracing을 구현한다. 2. path_mats Brute force path tracer (nori) Path Tracing은 렌더링 방정식을 제안한 Kajiya가 이를 푸는 방법으로 제시한 방법이다. Assignment 4(#1, #2)에서 광원 중 하나를 고르고, 그 위의 점을 sampling하고, 등의 복잡한 과정을 거칠 필요가 없이 단지 렌더링 방정식을 풀기만 하면, 오히려 Assignment 4에서는 볼 수 없던 전역 조명, caustics 등의 현상을 저절로 렌더링할 수 있다. 먼저 PathSimpleIntegrator를 만들기 전에, Emitt.. 2019. 7. 4.
렌더링 방정식 (Rendering Equation) (BSDF 포스팅에서 이어짐) Rendering Equation은 요즘 쓰이는 거의 모든 렌더러가 기본으로 하는 이론이다. 렌더링을 한다는 것은 곧 이 방정식을 푼다는 것과 같고, 여러 가지 렌더링 알고리즘들은 대부분 이 방정식을 얼마나 빠르고 효율적으로 풀 수 있는지에 그 초점을 둔다. Scene 안의 어떤 물체의 표면에 있는 점 x, 그리고 x를 보고있는 카메라를 생각해보자. 광원에서 출발한 빛은 Scene안에서 반사되고 투과되면서 우연히 점 x로 향할 것이다. 어떤 빛은 어떤 경로를 통해서 x로 오고, 다른 빛은 다른 경로를 통할 것이고, 그 경로의 경우의 수는 무수히 많을 것이다. 하지만 결국 x를 보고 있는 카메라는 x로 들어오는 빛을 보는게 아니라, x에서 카메라 방향으로 반사된 빛만을 볼 것.. 2019. 7. 3.
재질을 표현하는 방법 : BRDF, BTDF, BSDF 우리 주위의 물체들은 다양한 재질과 그에 따른 특성을 가지고 있다. 이를테면 우리는 투명한 물이나 유리 너머에 뭐가 있는지 볼 수 있지만 조금씩 다르게 보이고, 거울 너머를 볼 수 없지만 거울에 비치는 물체를 볼 수 있다. 금속은 내가 보는 방향에 따라 색이 밝아지기도 하고 상대적으로 어두워지기도 하지만, 천으로 만든 옷은 어떤 방향으로 봐도 색깔이 크게 달라지지 않는다. 재질마다 다르게 보이는 이유는 각 재질이 각기 다른 방식으로 빛을 반사하고, 다른 비율의 빛을 흡수하고, 그 나머지를 다른 방식으로 투과시키기 때문이다. 간단한 예시를 보자. Specular는 정반사다. 들어오는 모든 입사광을 특정 반사각으로 반사시킨다. 거울이 이에 해당된다. Diffuse는 Specular와 대비되는 난반사다. 입사.. 2019. 6. 27.
몬테카를로 적분 (Monte Carlo Integration, MC Integration) 이번 포스팅의 주제는 Nori assignment 3에서 쓱 지나쳤던 몬테카를로 적분이다. 며칠 전부터 TU Wien에서 올라온 Rendering/Ray Tracing 강의를 보고 있는데, 여기 교수님이 말씀하시기를, 이 이론은 정말 정말로 중요하고, 잘 기억은 안 나지만 중요한 수학 이론 10개를 꼽으라면 항상 손가락 안에 든다고 하셨다. 나도 확실하게 잘 알던 내용도 아니라서, 내가 이해한 나름대로 정리하려고 한다. 살짝 TMI 같지만 이 이론은 맨해튼 프로젝트를 진행할 때 복잡한 적분식을 풀려고 고안되었다고 한다. 여기서 말하는 적분식은 어떤 종류를 말하는 걸까? 적분식을 닫힌 형태(closed-form)로 풀 수 없을 때 쓴다고 하는데, 적당히 풀기 어려운 식으로 이해했다. 그래픽스를 공부하는 입.. 2019. 6. 27.