수학/이득우의 게임 수학

원근 투영 (7) 깊이 버퍼의 시각화 (2)

monstro 2026. 6. 17. 13:23
728x90
반응형

- 개요

뷰 공간에서의 깊이 값 z`를 구하는 계산식

 

이전의 문제를 해결하기 위해 원근 보정 매핑 방식을 이용하여 뷰 공간깊이 값을 활용할 수 있다

뷰 공간에서의 깊이 값 z`는 위와 같이 계산할 수 있다

 

위 식을 활용한 깊이 값의 색 계산식

 

위의 식을 활용하여 계산한 픽셀의 깊이 값흑백이미지로 변경하기 위해 [0, 1]의 범위로 교체해야 한다

이때 뷰 공간에서의 절두체가 가지는 깊이의 범위는 원평면에서 근평면을 뺀 f - n이므로

뷰 공간에서의 깊이 값의 색은 위와 같이 계산할 수 있다

 

- 예제

DrawTriangle3D 함수의 로직 (1)

 

DrawTriangle3D 함수의 로직에 위와 같이 코드를 추가한다

지역변수 nf를 사용하여 카메라의 근평면원평면 값을 저장한다

 

DrawTriangle3D 함수의 로직 (2)

 

이어서 위의 코드를 추가한다

useLinearVisualization 변수를 확인하여 선형화된 방식의 깊이 버퍼를 보여줄지 판단하고

보여주어야 한다면 위의 식을 토대로 근평면원평면의 값을 사용하여 깊이 값의 색을 계산한다

 

- 최종 실행 결

깊이 버퍼의 색을 표현하기 이전

 

깊이 버퍼의 색을 표현한 이후

728x90
반응형