본문 바로가기
Unity

[Unity] 포워드, 디퍼드 렌더링

by 소리쿤 2022. 8. 1.

요 녀석에 대해 알아보자

Forward가 기본, Deferred가 라이팅을 처리하는 데에 어떠한 방식을 추가한 것이다.

당연히 Deferred가 높은 Tier의 디바이스를 요구한다.

 

유니티는 디바이스의 티어 별로 렌더링 패스를 설정할 수 있다. 유니티는 구동될 때 디바이스의 티어를 자동으로 탐지한다.


포워드 렌더링

한 번에 하나의 버퍼에 하나의 지오메트리를 넣고, 라이팅을 거쳐 렌더링하는 기본적인 기법

 

각 Mesh에 대하여 각 광원에 관한 것을 모두 그려야 한다.

m개의 광원과 n개의 Mesh가 포함된 씬을 표현하기 위해서는 m*n번의 드로우 콜이 필요하다. 

이 호출수가 크기 때문에 FPS를 확보하면서 그릴 수 있는 Object 수에 한계가 있다.

 

 


디퍼드 렌더링

한 번에 하나의 버퍼에 렌더링을 하는 것이 아니라, 여러 버퍼에 동시에 렌더링을 하는 방식이다.

 

깊이와 노말 정보에 대한 Geometry Buffer(G-Buffer)를 통해 불투명 오브젝트들을 렌더링하고

렌더 타겟에 저장 후, 라이팅하여 최종적으로 표현될 색상을 계산하는 2 공정을 거침

 

불투명 오브젝트를 모두 렌더링하게 되면 컬링이 끝나게 되어 불필요한 렌더링을 할 필요가 없어진다.

하지만 G-Buffer가 씬의 각 픽셀에 대한 '단일 데이터' 만을 저장하기 때문에 디퍼드는 알파값을 적용할 수 없다.

 

멀티 렌더 타겟이 가능한 디바이스에서만 적용이 가능하며, 높은 메모리 대역폭을 요구한다.

 

디퍼드 렌더링은 일반적으로 디바이스가 좋고, 오브젝트가 많으며, 동적 라이팅이 많은 경우에 사용하는 방식이다.

 

1. Geometry Pass
2. Lighting Pass


Unity의 Light Mode는 다음과 같다.

 

Baked는 미리 오브젝트를 라이트에 대하여 구울 수 있는 모드이다.

https://mariageunit.blogspot.com/2019/07/unity-13-light-bake.html

 

[Unity] 14. 정당하게 월급루팡 합시다. Light Bake 중이거든요.

Using Unity; Using C#; Using Programming; 이전 시간에 Static 에 대해 소개하면서 Light Bake를 잠깐 언급했습니다. 하지만 Light Bake를 몰라서, 디자이너가 아니라서, 포기하시는 분들이 ...

mariageunit.blogspot.com

굽는 법은 다음을 참고하면 될 듯함

 


참고)

 

https://agh2o.tistory.com/13?category=707164 

 

[Eunbi's Farm - DirectX11] 디퍼드 렌더링

* 포워드 라이팅 : 각 Mesh에 대하여 각 광원에 관한 것을 모두 그려야 한다. N개의 광원과 M개의 Mesh가 포함된 씬을 표현하기 위해서는 NxM번의 드로우 콜이 필요하다. 이 호출수가 크기 때문에 FPS

agh2o.tistory.com

https://www.slideshare.net/cagetu/kgc2012-deferred-forward

 

[Kgc2012] deferred forward 이창희

KGC12 발표자료입니다. http://cagetu.egloos.com으로

www.slideshare.net