원본 : https://lettier.github.io/3d-game-shaders-for-beginners/deferred-rendering.html
##
디퍼드 렌더링(Deferred Shading)은 스크린 공간 조명 기술이다.
장면의 기하학적 구조를 탐색하면서 조명을 계산하는 대신,
장면의 기하학적 프래그먼트가 제거되거나 버려진 후에 조명 계산을 수행하는 방식이다.
이 방법은 장면의 복잡성에 따라 성능 향상을 가져다줄 수 있다.
디퍼드 렌더링은 이러한 계산을 두 단계로 나눠서 처리한다.
첫 번째 단계 - 기하학적 정보 수집
디퍼드 렌더링에서는 먼저 3D 장면에 있는 모든 물체의 기하학적 정보를 수집한다.
이 정보에는 위치나 깊이, 노멀, 재질, 위치, 모양, 색깔, 표면 질감 등이 포함된다.
이 단계에서는 빛과 그림자의 효과는 계산하지 않는다 대신, 이 모든 정보를 G-버퍼라고 하는 임시 저장소에 저장한다.
일부 변환을 제외하고, 이 단계는 주로 읽기만 수행되므로 성능 비용이 적다.
이 단계가 끝나면, 화면 모양의 2D 텍스처만을 다루게 된다.
두 번째 단계 - 조명과 그림자 처리
그 다음 단계에서는 첫 번째 단계에서 수집한 정보를 사용해 조명과 그림자를 계산한다.
여기서는 빛의 방향, 강도, 색깔 등이 고려되어 최종적으로 화면에 어떻게 보일지를 결정하게 된다.
주변광, 확산광, 반사광의 색상을 계산하며, 그림자와 노멀 맵핑도 이 단계에서 수행된다.
--
디퍼드 렌더링의 목적은 조명 계산 횟수를 줄이는 것이다.
전통적인 포워드 렌더링에서는 조명 계산이 프래그먼트와 조명의 수에 따라 증가하지만,
디퍼드 렌더링에서는 픽셀과 조명의 수에 따라 증가한다.
간단한 장면에서는 디퍼드 렌더링이 큰 성능 향상을 제공하지 않을 수 있지만,
많은 조명이 있는 복잡한 장면에서는 더 나은 옵션이 된다.
하지만 디퍼드 렌더링에는 몇 가지 단점도 있는데
예를 들어, 반투명한 객체를 통해 볼 수 있는 기하학적 데이터는 첫 번째 단계에서 제거되어 투명도 처리가 어려워진다.
또한, G-버퍼로 인한 메모리 소비가 증가하고, 안티앨리어싱을 처리하기 위한 추가적인 작업이 필요할 수 있다.
'그래픽 이론' 카테고리의 다른 글
G-Buffer가 뭐지? 어떻게 생긴걸까? 한번 알아보자 (0) | 2023.11.14 |
---|---|
빛의 원리 (0) | 2023.06.05 |
레일리 산란 / 미 산란 [ Rayleigh scattering / Mie scattering ] (0) | 2023.05.26 |
OCIO ACES의 대한 이해도 높이기 (1) | 2023.05.19 |
Gamma ( 감마 보정, 감마 색 공간 ) vs Linear ( 선형 색 공간 ) (0) | 2023.05.19 |