본문 바로가기
그래픽 이론

3D Game Shaders For Beginners - Deferred Rendering [번역]

by witn331ss 2023. 11. 14.

원본 : https://lettier.github.io/3d-game-shaders-for-beginners/deferred-rendering.html

 

Deferred Rendering | 3D Game Shaders For Beginners

Interested in adding textures, lighting, shadows, normal maps, glowing objects, ambient occlusion, reflections, refractions, and more to your 3D game? Great! 3D Game Shaders For Beginners is a collection of shading techniques that will take your game visua

lettier.github.io

 

##

 

 

 

디퍼드 렌더링(Deferred Shading)은 스크린 공간 조명 기술이다.

장면의 기하학적 구조를 탐색하면서 조명을 계산하는 대신,

장면의 기하학적 프래그먼트가 제거되거나 버려진 후에 조명 계산을 수행하는 방식이다.

 

이 방법은 장면의 복잡성에 따라 성능 향상을 가져다줄 수 있다.

 

 

디퍼드 렌더링은 이러한 계산을 두 단계로 나눠서 처리한다.

 

첫 번째 단계 - 기하학적 정보 수집

 

디퍼드 렌더링에서는 먼저 3D 장면에 있는 모든 물체의 기하학적 정보를 수집한다.

이 정보에는 위치나 깊이, 노멀, 재질, 위치, 모양, 색깔, 표면 질감 등이 포함된다.

 

이 단계에서는 빛과 그림자의 효과는 계산하지 않는다 대신, 이 모든 정보를 G-버퍼라고 하는 임시 저장소에 저장한다.

 

일부 변환을 제외하고, 이 단계는 주로 읽기만 수행되므로 성능 비용이 적다.

이 단계가 끝나면, 화면 모양의 2D 텍스처만을 다루게 된다.

 

 

 

 

 



두 번째 단계 - 조명과 그림자 처리

 

그 다음 단계에서는 첫 번째 단계에서 수집한 정보를 사용해 조명과 그림자를 계산한다.

여기서는 빛의 방향, 강도, 색깔 등이 고려되어 최종적으로 화면에 어떻게 보일지를 결정하게 된다.

 

주변광, 확산광, 반사광의 색상을 계산하며, 그림자와 노멀 맵핑도 이 단계에서 수행된다.

 

 

--

 

디퍼드 렌더링의 목적은 조명 계산 횟수를 줄이는 것이다. 

 

전통적인 포워드 렌더링에서는 조명 계산이 프래그먼트와 조명의 수에 따라 증가하지만,

디퍼드 렌더링에서는 픽셀과 조명의 수에 따라 증가한다.

 

간단한 장면에서는 디퍼드 렌더링이 큰 성능 향상을 제공하지 않을 수 있지만,

많은 조명이 있는 복잡한 장면에서는 더 나은 옵션이 된다.

하지만 디퍼드 렌더링에는 몇 가지 단점도 있는데

 

예를 들어, 반투명한 객체를 통해 볼 수 있는 기하학적 데이터는 첫 번째 단계에서 제거되어 투명도 처리가 어려워진다.

또한, G-버퍼로 인한 메모리 소비가 증가하고, 안티앨리어싱을 처리하기 위한 추가적인 작업이 필요할 수 있다.