Depth Peeling

개요

  • 투명한 물체를 정렬 없이 (=Order-independent transparency, OIT) 그리는 방식 중 하나
  • 물체를 투명 복잡도 Layer에 따라 여러번 그리지만 서로 겹치는 물체들에 대해서도 정확한 결과를 보여줌
  • 투명 복잡도가 N일 때 N개의 Geometry Pass 필요 ** 보통은 N을 4~6으로 설정하면 된다고 함

개념

  1. N Layer 1st Pass
    • Depth를 비교하면서 일반적인 렌더링을 수행한다.
  2. N Layer 2nd Pass
    • 1에서 쓰여진 Depth보다 뒤에 있는 Depth를 그린다. (ex: D3DCMP_GREATER)
    • 당연히 가까운 Depth가 지워진다. (=Peel away)
    • 여기서 쓰여진 DepthBuffer는 1의 DepthTest에 이용한다.
  3. N+1 Layer
    • ...
  4. 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

results matching ""

    No results matching ""