Deferred Shading
개요
- Screen-space shading의 일종
- 2번의 렌더링이 필요하고 1번째 Pass에서는 Shading이 일어나지 않기 때문에 Deferred(=지연) rendering
- 1번째 : G-Buffer에 모든 오브젝트의 Diffuse, Normal, Depth 등 계산에 필요한 정보만 기록
- 2번째 : 모든 광원을 돌면서 G-Buffer에 기록된 정보를 이용해 Frame-Buffer를 그림
장점
- 오브젝트와 광원의 계산 복잡도가 분리된다. (M * N → M + N)
- SSAO 등 Screen-space postprocessing과 잘 어울린다.
단점
- 투명한 오브젝트 처리가 안 된다.
- 투명한 오브젝트는 따로 그린다.
- Depth peeling 등 Order-independent transparency 기법을 사용한다.
- 다양한 Material을 사용하기 힘들다.
- 하드웨어 Anti-aliasing이 불가능하다.
- Edge-detection을 수행한 이후 Blur한다.
- MLAA, FXAA, SRAA, DLAA, post MSAA, Temporal AA 등의 기법을 수행한다.
- DX10부터는 API 향상으로 HW AA가 좀 더 편해졌다.
참고
https://en.wikipedia.org/wiki/Deferred_shading