포워드 및 디퍼드 렌더링
고해상도 렌더 파이프라인(HDRP)을 사용하면 포워드나 디퍼드 렌더링을 사용하여 릿 머티리얼을 렌더링할 수 있습니다. Unity 프로젝트를 설정하여 이러한 모드 중 하나만 사용하거나 둘 다 사용하고 런타임 시 카메라별로 전환하도록 할 수도 있습니다.
포워드 및 디퍼드 렌더링 사용
Unity 프로젝트에서 포워드나 디퍼드 렌더링을 사용하기 전에 먼저 HDRP 에셋이 지원하는지 확인해야 합니다. 확인하려면 다음 단계를 따르십시오.
- 프로젝트 창에서 HDRP 에셋을 선택하여 인스펙터에서 확인합니다.
- Rendering 섹션에서 Lit Shader Mode 드롭다운을 사용하여 HDRP가 지원하는 렌더링 모드를 선택합니다.
세 가지 렌더링 모드 중에서 선택할 수 있습니다.
Lit Shader Mode | 설명 |
---|---|
Forward | HDRP는 각 개별 게임 오브젝트를 렌더링할 때 싱글 패스에서 조명을 계산합니다. |
Deferred | HDRP는 화면에 표시되는 모든 게임 오브젝트의 머티리얼 프로퍼티를 GBuffer로 렌더링합니다. 그런 다음 HDRP는 프레임에서 모든 픽셀에 조명을 처리합니다. |
Both | 프레임 설정을 사용하여 카메라별로 Forward와 Deffered 렌더링 모드 사이를 변경합니다. 이를 선택하는 경우 프로젝트의 빌드 시간이 늘어납니다. |
Both를 선택한 경우 기본적으로 사용하도록 모든 카메라에 렌더링 모드를 설정할 수 있고 런타임 시 이 기본 렌더링 모드를 특정 카메라에 오버라이드도 할 수 있습니다. 예를 들어 평면 반사 프로브에 포워드 모드를 사용한 다음 디퍼드 모드를 사용하여 메인 카메라를 렌더링할 수 있습니다.
기본 렌더링 모드를 설정하려면 다음 단계를 따르십시오.
- 프로젝트 창에서 HDRP 에셋을 선택하여 인스펙터에서 확인합니다.
- Default Frame Settings For Camera > Rendering으로 이동하여 Lit Shader Mode 드롭다운에서 기본으로 적용하고자 하는 렌더링 모드를 선택합니다.
특정 카메라에 대한 렌더링 모드를 편집하려면 다음 단계를 따르십시오.
- 계층 창에서 카메라를 선택하여 인스펙터에서 확인한 다음 Custom Frame Settings 체크박스를 활성화합니다.
- Rendering 섹션에서 Lit Shader Mode 프로퍼티의 왼쪽에 있는 오버라이드 체크박스를 활성화합니다. 이렇게 하면 이 카메라에 대한 Lit Shader Mode를 변경할 수 있고 HDRP가 새로운 값을 사용하도록 할 수 있습니다.
- 이 카메라가 Lit Shader Mode 드롭다운에서 사용할 렌더링 모드를 선택합니다.
릿 셰이더 모드 선택
Forward 또는 Deferred 모드 중 어느 것을 사용할지 결정하려면 프로젝트에서 원하는 품질 및 성능 수준을 고려하십시오. HDRP의 디퍼드 렌더링은 다양한 머티리얼과 여러 로컬 광원이 있는 씬을 비롯하여 대부분의 시나리오에서 더 빠릅니다. 씬에 단일 방향 광원이 있는 등의 시나리오는 Forward 렌더링 모드에서 더 빠를 수 있습니다. 프로젝트에서 성능이 크게 중요하지 않다면 Forward 렌더링 모드를 사용하여 렌더링 품질을 향상하십시오.
HDRP는 다음 타입의 셰이더에 대해 포워드 렌더링을 실행합니다.
- 패브릭
- 머리카락
- AxF
- 스택릿
- 언릿
- 투명 표면 타입의 릿 셰이더
HDRP 에셋에서 Lit Shader Mode를 Deferred로 설정하면 HDRP가 디퍼드 렌더링을 사용하여 불투명 릿 머티리얼을 사용하는 모든 머티리얼을 렌더링합니다.
포워드 및 디퍼드 렌더링은 둘 다 동일한 기능을 구현하지만, 품질이 서로 다를 수 있습니다. 즉 HDRP는 어느 Lit Shader Mode를 선택하든 모든 기능에 대해 동작합니다. 예를 들어 스크린 공간 반사, 스크린 공간 앰비언트 오클루전, 데칼, 컨택트 그림자는 Deferred 또는 Forward Lit Shader Mode에서 사용할 수 있습니다. 기능 패리티가 HDRP의 핵심이지만, 이러한 효과의 품질과 정확성은 기술적 제약으로 인해 Lit Shader Mode 간에 다를 수 있습니다.
HDRP에서 포워드 및 디퍼드 렌더링 간의 차이
시각적 차이
- 노멀 그림자 바이어스: Forward 모드에서 HDRP는 그림자 바이어스에 대한 머티리얼의 지오메트리 노멀(버텍스 노멀)을 사용하고 Deferred 모드는 픽셀 노멀을 사용합니다. 즉 Forward 모드는 Deferred 모드보다 그림자 결함을 더 적게 생성합니다.
- 이미시브 컬러: Deferred 모드에서 앰비언트 오클루전은 기술적 제약으로 인해 이미시브 컬러에 영향을 줍니다. Forward 모드에서는 그렇지 않습니다.
- 앰비언트 오클루전: Deferred 모드에서 HDRP는 간접 산란광(라이트맵 및 라이트 프로브)에 대한 앰비언트 오클루전뿐만 아니라 스크린 공간 앰비언트 오클루전 효과도 적용하므로 어둡기가 잘못 구현됩니다. Forward 모드에서 HDRP는 앰비언트 오클루전과 스크린 공간 앰비언트 오클루전을 최소한으로 적용하므로 올바른 어둡기가 구현됩니다.
- 머티리얼 품질: Deferred 모드에서 HDRP는 노멀, 탄젠트 등과 같은 머티리얼 프로퍼티를 GBuffer에 압축하며, 이로 인해 압축 결함이 발생합니다. Forward 모드에서는 압축이 없으므로 압축 결함이 존재하지 않습니다.
기술적 차이
- Forward 모드를 사용하는 머티리얼의 경우 HDRP는 항상 뎁스 및 노멀 버퍼를 출력하는 뎁스 프리패스를 렌더링합니다. 이는 Decals를 사용하지 않는 경우 Deferred 모드에서 선택 사항입니다.
- Forward 모드에서 HDRP는 데칼 Dbuffer 패스 후에 노멀 버퍼를 업데이트합니다. HDRP는 스크린 공간 반사와 기타 효과에 대한 노멀 버퍼를 사용합니다.
빌드 시간
HDRP 프로젝트의 빌드 시간은 포워드 렌더링이나 디퍼드 렌더링을 사용하는 경우 시간이 단축될 수 있습니다. Both의 Lit Shader Mode를 선택할 경우의 단점은 Unity가 각 머티리얼에 대해 두 개 세트의 셰이더(포워드에 대해 하나, 디퍼드에 대해 하나)를 빌드하므로 플레이어 빌드 시간이 크게 늘어난다는 점입니다. 프로젝트의 모든 요소에 대해 특정 렌더링 모드를 사용하는 경우 Both 대신에 해당 렌더링 모드를 사용해야 빌드 시간을 단축할 수 있습니다. 또한 HDRP가 셰이더에 할당하는 메모리 크기도 감소합니다.