레이 트레이싱 구현기 3-1 Visibility와 Shading 문제란?

Plato·2023년 6월 5일
0

서론

시리즈의 이전 글을 통해 레이 트레이싱을 구현하기 위해 필요한 수학적 배경 지식을 습득하고 카메라를 구현해봤다. 이제 렌더링을 크게 visibility와 shading으로 나누어서 각 파트가 어떤 기능을 수행해야할지 알아보자.

본론

Visibility

필자의 앞에 커다란 벽이 있고 벽 뒤에 어떤 물체가 존재한다고 가정해보자. 필자의 눈에는 벽만 보이고 벽 뒤에 있는 물체는 보이지 않을 것이다. 이처럼 물체를 렌더링할 때, 물체가 다른 물체에 의해 가려져서 보이지 않는 것을 고려할 수 있어야한다. 역방향 레이 트레이싱 기법을 사용하면 다음과 같이 단순하게 visibility 문제를 해결할 수 있다. 픽셀을 지나는 광선과 교차하는 대상 중에서 카메라와 제일 가까운 대상이 가려져있지 않은 물체이고 해당 픽셀의 색에 직접적으로 영향을 줄 수 있는 대상이다. 여기에서 "직접적으로"라는 단어를 붙인 이유는, 다른 물체가 제일 가까운 대상에 반사되어, 픽셀의 색에 영향을 줄 수 있기 때문이다.

Shading

이제 특정 픽셀에 어느 대상을 렌더링할지 알아냈으니, 픽셀의 색을 결정할 수 있어야한다. 이를 쉐이딩이라 부른다. 픽셀을 지나는 광선과 교차하는 대상의 종류와 법선 벡터, 광원의 위치와 세기에 따라서 픽셀의 색이 달라질 것이다 (이 시리즈에서는 크기가 없는 광원만 다룰 것이기에 광원의 크기는 중요하지 않다).

마무리

아주 짧게 visibility 문제와 shading 문제가 무엇인지 알아봤다. 나머지 글을 통해서, 광선과 다양한 삼차원 대상과의 교점을 찾아서 visibility 문제를 해결하는 방법과 픽셀의 색을 결정하는 방법에 대해 자세히 다룰 것이다.

0개의 댓글