깊이 저장 · REVERSED-Z

겹친 두 판이 같은 깊이가 될 때

판의 거리·간격과 저장 포맷을 바꾸고 일반 깊이와 반전 깊이의 구분 능력을 비교하세요.

일반 깊이 동률계산 중
반전 깊이 동률계산 중
중앙 표본의 저장 깊이 차이계산 중

원인과 해결

문제와 원인

서로 다른 두 거리가 저장 후 같은 값이 되면 앞뒤를 구분할 수 없습니다. 각 칸은 기울어진 판의 한 표본이며, 초기 깊이 검사를 통과한 표면끼리 동률이면 먼저 그린 표면이 남습니다.

해결

일반 깊이는 f/(f−n) − fn/((f−n)z), 반전 깊이는 fn/((f−n)z) − n/(f−n)로 직접 계산합니다. 반전에서는 초기 깊이 0과 GREATER 비교, 일반에서는 초기 깊이 1과 LESS 비교를 함께 사용합니다. 양자화한 깊이가 초기값과 같으면 첫 표면도 통과하지 못합니다. 통과한 표면이 없는 표본은 회색으로 표시합니다. 부동소수점은 먼 곳을 0 근처에 놓을 때 촘촘한 간격을 활용합니다.

비용과 범위

Near를 올리면 가까운 물체가 잘립니다. 정수 포맷에서는 반전만으로 눈금 간격이 개선되지 않습니다. 중복 면은 정밀도를 높여도 순서가 생기지 않으며, 좌표 변환에서 잃은 차이는 깊이 저장 변경으로 복원되지 않습니다. 이 장면은 Number 계산 후 Math.fround 또는 균등 정수로 저장하는 CPU 표본 모델입니다. 실제 GPU 포맷 지원·프레임 시간은 측정하지 않습니다.

NVIDIA 깊이 정밀도 · Godot 반전 경로의 변경 범위 · Khronos clip 범위 명세