11. Reprojection Cache(1)
• 무거운 셰이더 연산 부담
• 아예 픽셀 셰이딩 계산을 PASS할 수 있다면 => 퍼포먼스 향상
• 기본 아이디어는 바로 전 프레임의 렌더링 결과를 활용하여 새롭게
나타난 부분만 셰이더 연산
12. Reprojection Cache(2)
• 어떻게 이전 프레임에서 결과를 가져오나
– 현제 픽셀의 전 프레임에서의 월드 좌표를 구한다. => 정적인 오브젝트라면 동
일
– 월드 좌표를 이전 프레임의 뷰좌표계로 변환한다.
– 프로젝션하여 이전 프레임 버퍼의 uv 좌표를 구한다. => 픽셀 값과 이전 프레임
의 깊이 값을 구할 수 있다.
– 뷰좌표로 구해진 z 값과 이전 프레임의 깊이 버퍼의 z값을 비교 => 거의 같다면
픽셀 값을 가져온다.
13. Reprojection Cache(3)
• Hit 테스트하는 두가지 방법
– 1패스로 하는 방법
• 셰이더의 복잡도가 높아짐 (셰이더 코드에 Hittest 코드가 삽입되어야 함)
– 2패스에 의한 방법
• 1pass Hit 테스트 후 Hit하면 이전 프레임 픽셀을 채우고 스텐실값도 set
• 2pass 기존 방식과 동일하게 다시 렌더링 (but 이전 픽셀값을 사용하는 픽셀은 스텐실
테스트에서 pass)
• 기존 시스템 큰 변경 없이 적용 가능
14. Reprojection Cache(4)
• Specular 같은 뷰 의존적인 셰이딩 연산 오류
– 이전 프레임 값은 현재 계산한 값과 다름
– 해결법
• 뷰독립적인 셰이더 연산에만 사용
• HitTest에 의도적으로 노이즈 삽입 (엄격하게 항상 같은 컬러는 아니지만 밀도에 따라
시각적 손실을 최소화할 수 있음)
15. Temporal Coherence
• Reprojection Cache와 알고리즘/컨셉은 유사하나 목표가 다름
• 이전 프레임의 결과를 현재 프레임에 누적해서 사용
• 품질 향상을 위함 (적은 셈플로 품질을 높임 <= 퍼포먼스 향상)
• 기어스오브워2 케이스
– 이전 프레임의 AO 결과를 활용
– 적은 샘플링으로 시각적 품질 향상
17. 참고문서
• High-Speed, Off-Screen Particles, Iain Cantlay
• Geometry-Aware Framebuffer Level of Detail, Lei Yang at el
• Rendering Techniques in Gears of War 2, Niklas Smedberg and Daniel Wright
• A Gentle Introduction to Bilateral Filtering and its Applications, S. Paris at el
• Mixed Resolution Rendering, Jeremy Shopf
• The Real-Time Reprojection Cache, Diego Nehab at el
• Automated Reprojection-Based Pixel Shader Optimization, Diego Nehab at el