본문 바로가기
카테고리 없음

UNITY_REVERSED_Z

by 대마왕J 2023. 5. 3.

UNITY_REVERSED_Z - 리버스 Z 버퍼를 사용하는 플랫폼에서 정의합니다. 저장되는 Z 값의 범위는 10이 아니라 01입니다.

https://docs.unity3d.com/kr/2018.4/Manual/SL-BuiltinMacros.html

 

미리 정의된 셰이더 프리프로세서 매크로 - Unity 매뉴얼

Unity는 셰이더 프로그램을 컴파일할 때 일부 프리프로세서 매크로를 정의합니다.

docs.unity3d.com

일단 플렛폼에 따라서, Z 버퍼가 1~0 이 아니라 0~ 1 인 경우가 있다. 
https://docs.unity3d.com/Manual/SL-PlatformDifferences.html

DirectX 11, DirectX 12, Metal인 경우

위와 같은 Reverse를 쓰는데, 
The depth (Z) buffer 가 가까운 곳은 1.0 , 멀어질수록 0 으로 되는 방식이다. 
Clip space 범위는 [near,0] ( near plane 거리는 near plane 이고... far plane으로 멀어질수록 0으로 줄어든다 )

다른 플렛폼들 : 전통적인 방법을 사용한다

The depth (Z) buffer 가 가까운 곳은 0.0 멀어질수록 1.0으로 되는 방식이다
Clip space는 특정 플렛폼에 따른다

Direct3D-like 플렛폼에서는...

range가 [0,far] 이다 (0.0은 near plane이고 far plane으로 멀어질수록 1.0이 된다)

OpenGL-like 플렛폼에서는...

range가 [-near,far] 이다 (meaning minus the near plane distance at the near plane, increasing to the far plane distance at the far plane). (근거리 평면에서 근거리 평면 거리를 빼고 원거리 평면에서 원거리 평면 거리로 증가함을 의미합니다)

반응형

댓글