CS/그래픽스

[홍정모의 그래픽스 새싹코스 Part1] 수퍼 샘플링

겜도리도리 2023. 12. 13. 23:16
반응형

앞서

이 포스팅은 홍정모의 그래픽스 Part1을 수강하고 작성한 내용입니다.

강의의 세부 코드는 첨부하지 않고, 결과와 이론 위주로 포스팅했습니다.

 

개요

 

위와 같은 화질 낮은 이미지가 있다. 구의 이미지가 계단식으로 많이 깨지는 것을 볼 수 있다.

슈퍼샘플링을 사용하면 이런 계단 현상을 완화할 수 있다.

다만, 슈퍼샘플링에는 더 많은 Ray 연산이 들어가기 때문에 당연하게도 렌더링 속도가 느려진다.

따라서 실시간 그래픽스파이프라인에서는 슈퍼샘플링보다는 블러를 사용해 계단 현상을 해결하는 경우도 있다고 한다.

 

원리

 

원래라면 관찰자에서 픽셀로 하나의 Ray만 쏴서 컬러를 결정하지만, 슈퍼샘플링에서는 여러 Ray를 쏴주고, 이 Ray에서 충돌한 색깔의 평균값으로 픽셀의 색깔을 결정하게 된다.

Ray를 쏘는 방법은 위 이미지처럼 다양한 방법이 있는데, 강의에서는 제일 기본적이면서 무난한 uniform distribution을 사용한다. 균등하게 나눈 좌상 / 우상 / 좌하 / 우하 방향으로 하나씩 Ray를 쏴 해당 픽셀의 색깔을 결정하는 방법이다.

 

강의에서는 4개의 지점에서 색을 가져오는 과정을 3번 반복했는데, 이렇게 된다면 한 픽셀의 색깔을 정해줄 때 Ray를 4^3 = 64번 쏴주어 결정해 주게 된다.

즉, n개의 지점에서 색을 가져와는 과정을 m번 반복하면 픽셀 당 쏴주는 Ray의 개수는 n^m이 된다.

결과

 

재귀 호출 한 번 실행 시

 

픽셀 당 쏴준 레이는 4^1 = 4번

 

재귀 호출 3번 실행 시

 

픽셀 당 쏴준 레이는 4^3 = 64번

 

재귀 호출 7번 실행 시

 

픽셀 당 쏴준 레이는 4^7 = 16384번

 

1번 3번은 어느 정도 차이가 보이는데, 원래 해상도가 낮은 이미지라 그런지 재귀호출을 3번 하든 7번 하든 큰 차이는 안 보이는 것 같다.

출처

https://en.wikipedia.org/wiki/Supersampling

반응형