Depth Peeling
개요
- 투명한 물체를 정렬 없이 (=Order-independent transparency, OIT) 그리는 방식 중 하나
- 물체를 투명 복잡도 Layer에 따라 여러번 그리지만 서로 겹치는 물체들에 대해서도 정확한 결과를 보여줌
- 투명 복잡도가 N일 때 N개의 Geometry Pass 필요 ** 보통은 N을 4~6으로 설정하면 된다고 함
개념
- N Layer 1st Pass
- Depth를 비교하면서 일반적인 렌더링을 수행한다.
- N Layer 2nd Pass
- 1에서 쓰여진 Depth보다 뒤에 있는 Depth를 그린다. (ex: D3DCMP_GREATER)
- 당연히 가까운 Depth가 지워진다. (=Peel away)
- 여기서 쓰여진 DepthBuffer는 1의 DepthTest에 이용한다.
- N+1 Layer
- ...
- Layer를 Back-to-Front 순서로 합친다.
Multiple Depth Test
- HW, Graphic API가 Multiple Depth Test를 지원하는 것이 필요
- 하단의 Pseudo 코드 참고
- Depth unit 0 : Greater로 비교를 하면서 벗겨내는 용도
- Depth unit 1 : 일반적인 DepthBuffering
참고
http://www.eng.utah.edu/~cs5610/lectures/OrderIndependentTransparency.pdf https://pdfs.semanticscholar.org/99b8/940b5a6dab8527198e966c0eb7e2a02ee28c.pdf