Rasterization(1) - Ray Tracing 보다 Rasterization이 빠른 이유
이번 포스팅에서는 Rasterization를 왜 쓰는 지에
대해 다뤄보겠습니다.
Ray Tracing이 무거운 이유
픽셀 방향으로 광선을 쏘고 가상 공간에 있는
물체와 충돌하면 충돌한 지점에서 색을 결정한 뒤
색을 가지고 픽셀의 색을 결정하는 것입니다.
모든 픽셀의 색을 정해야하기 때문에
모든 픽셀에 광선을 쏘게 됩니다.
안티 앨리어싱 같은 기술 같은 기능들을 사용한다면
더 많은 광선이 필요합니다.
또한, 하나의 Ray에서 여러 개의 물체가 충돌하는 지
충돌 안 하는지에 대해 계산하게 됩니다.
그렇기 때문에 물체가 많아질수록 아주 많은 연산이
필요하게 됩니다.
Rasterization은 3차원 공간에서 폴리곤을 많기 쓰게 됩니다.
Rasterization의 장점은 이 폴리곤들을 하나하나 따로
계산하는 데에 있으며, 가상의 3차원 공간에 삼각형이 있다고
가정해보겠습니다. 삼각형은 정점 3개를 이용해서 정의할 수 있습니다.
Rasterization에서는 폴리곤을 렌더링 하고자 하는 스크린 평면 위로
투영을 시킵니다.즉, 픽셀의 평면 위로 하나씩 옮겨주는 것을 말합니다.
3개의 정점이 어디있는지 알고 있으면 3개의 정점을 이어서
스크린 평면 위로 삼각형을 그릴 수 있습니다.
결국 2차원 평면위인데 모든 픽셀을 계산해야한다면
Ray를 모든 픽셀에 쏘는 것과 같은 시간이 걸리게 될 것입니다.
Ray Tracing Rasterization
for 픽셀 for 물체
for 물체 for 픽셀
같은 시간이 걸리는 것을 해결하기 위해
물체에 대한 모든 픽셀을 구하는 것이 아닌
일정 부분만 구하자고 나운 개념이 바운딩 박스입니다.
물건을 포장할 때 박스가 물건보다 커야합니다.
이처럼 3개의 정점을 모두 담을 수 있는 임의의
사각형을 생성해서 그 부분만 for문을 돌면 됩니다.