직교 투영을 사용하여 2D 엔진의 전후방 렌더러를 작업 중입니다. 오버 드로우를 피하기 위해 깊이 버퍼를 사용하고 싶습니다. 16 비트 심도 버퍼, Z = 100의 Z = 0, zNear는 1, zFar는 1000 인 카메라가 있습니다. 렌더링 된 각 스프라이트는 Z 좌표를 점점 멀어지는 값으로 설정하여 심도 테스트에서 렌더링을 건너 뛸 수 있습니다. 밑에있는 모든 것.
그러나 Z 위치가 Z 버퍼 값으로 끝나는 방식이 비선형 적이라는 것을 알고 있습니다. 16 비트 깊이 버퍼의 전체 해상도, 즉 65536 고유 값을 사용하고 싶습니다. 따라서 렌더링 된 모든 스프라이트에 대해 다음 고유 깊이 버퍼 값과 상관시키기 위해 Z 위치를 다음 위치로 증가시키고 싶습니다.
즉, 각 스프라이트에 대해 고유 한 깊이 버퍼 값을 갖도록 스프라이트의 증분 인덱스 (0, 1, 2, 3 ...)를 적절한 Z 위치로 끌어 내고 싶습니다. 나는 이것 뒤에 수학을 확신하지 못한다. 이를위한 계산은 무엇입니까?
참고 WebGL (기본적으로 OpenGL ES 2)에서 작업하고 있으며 광범위한 하드웨어를 지원해야하므로 gl_FragDepth와 같은 확장 기능이 더 쉬울 수 있지만 호환성을 위해 사용할 수는 없습니다.