Version: 2019.4
언어: 한국어
동적 조명
전문가 가이드

Unity에서 렌더링 파이프라인 및 조명 설정

이 가이드는 Unity 블로그 게시물 Spotlight Team 베스트 프랙티스: 조명 파이프라인 설정 - Pierre Yves Donzallaz의 업데이트 버전입니다.

정의

먼저 이 기사에서 자주 등장하는 몇 가지 중요한 그래픽스 렌더링 용어의 정의를 살펴보겠습니다.

  • 렌더 파이프라인은 세 가지 주요 단계로 씬의 오브젝트가 표시되는 방식을 결정합니다.
    • 첫 번째 단계는 컬링입니다. 이 단계에서는 렌더링해야 할 오브젝트, 특히 카메라에 표시되는 오브젝트(절두체 컬링)와 다른 오브젝트에 의해 가려지지 않은 오브젝트(오클루전 컬링)를 나열합니다.
    • 두 번째 단계는 렌더링입니다. 이 단계에서는 올바른 조명과 일부 해당 프로퍼티를 사용하여 이러한 오브젝트를 픽셀 기반 버퍼에 그립니다.
    • 마지막으로 이러한 버퍼에 대해 포스트 프로세싱 작업(예: 컬러 그레이딩, 블룸 및 뎁스오브필드(피사계심도) 적용)을 수행하여 디스플레이 기기에 보낼 최종 출력 프레임을 생성할 수 있습니다.

이러한 작업은 프레임 속도에 따라 초당 여러 번 반복됩니다.

  • 셰이더는 그래픽처리장치(GPU)에서 실행되는 프로그램이나 프로그램 컬렉션을 가리키는 일반적인 이름입니다. 예를 들어, 컬링 단계를 마치면 버텍스 셰이더를 사용하여 ’오브젝트 공간’의 가시 오브젝트에 대한 버텍스 좌표를 ’클립 공간’이라고 부르는 다른 공간으로 변환합니다. 그러면 GPU는 이러한 새 좌표를 사용하여 씬을 래스터화, 즉 씬의 벡터 표현을 실제 픽셀로 전환합니다. 후반 단계에서 이러한 픽셀은 픽셀(또는 프래그먼트) 셰이더에 의해 컬러가 지정됩니다. 픽셀 컬러는 대개 해당 표면과 주변 조명의 머티리얼 프로퍼티에 따라 다릅니다. 현대 하드웨어에서 이용 가능한 또 다른 일반적인 셰이더 타입은 컴퓨트 셰이더입니다. 이 타입의 셰이더를 통해 프로그래머들은 모든 종류의 수학 연산(예: 광원 컬링, 파티클 물리 또는 체적 시뮬레이션)에 GPU의 강력한 병렬 처리 기능을 활용할 수 있습니다.
  • 직접 조명은 자체 발광 광원(예: 전구)에서 나오는 조명을 가리키며, 표면에서 반사되는 광원은 여기에 해당되지 않습니다. 광원 크기와 리시버까지의 거리에 따라 이러한 타입의 조명은 대개 또렷하고 분명한 그림자를 생성합니다.
    • 직접 조명은 무한히 멀리 떨어진 광원(예: 컴퓨터로 시뮬레이션한 태양)에서 방출되는 광원인 방향 광원과 다릅니다. 방향 광원의 주요 특징으로는 평행 광선으로 전체 씬을 감쌀 수 있다는 점과 거리 감쇠(광원 감쇠)가 일어나지 않는다는 점을 들 수 있습니다. 즉, 광원과의 거리가 증가해도 받는 조명의 양이 줄어들지 않습니다.
    • 현실에서 햇빛은 다른 여느 광원과 마찬가지로 역제곱 법칙에 따라 거리가 증가하면 광량이 감소합니다. 간단히 말하면, 리시버와 광원 사이의 거리가 증가하면 받는 광량이 매우 빠르게 줄어듭니다. 예를 들어 수성의 조도는 지구보다 약 7배 더 높고, 화성은 지구가 받는 광량의 절반가량을 받습니다. 반면에 명왕성은 그 비율이 고작 0.06%에 불과합니다. 그럼에도 불구하고 고도 범위가 제한된 대부분의 실시간 사용 사례에서 햇빛 감쇠는 그다지 중요하지 않습니다. 따라서 방향 광원은 거대한 행성 중심의 오픈 월드를 포함하여 대부분의 Unity 씬에서 햇빛을 시뮬레이션하는 데 가장 적합합니다.
  • 간접 조명은 표면에 반사되는 광원에 의해 발생하며, 대기 또는 반투명 머티리얼 등과 같은 매체를 통해 전달되고 분산됩니다. 이러한 조건에서 오클루더는 일반적으로 부드럽거나 감지하기 어려운 그림자를 드리웁니다.
  • 전역 조명(GI)은 직접 조명과 간접 조명을 모두 모델링하여 사실적인 조명 결과를 제공하는 기술 그룹입니다. GI 방법에는 베이크된/동적 라이트맵, 복사 조도 볼륨, 광원 전파 볼륨, 베이크된/동적 라이트 프로브, 복셀(voxel) 기반 GI, 거리 필드 기반 GI 등 여러 가지가 있습니다. 특히 Unity는 베이크된/동적 라이트맵과 라이트 프로브를 지원합니다.
  • 라이트매퍼는 광선을 투사하고 광원 바운스를 계산하고 해당 조명 결과를 텍스처에 적용하여 라이트맵 및 라이트 프로브용 데이터를 생성하는 기본 시스템입니다. 다양한 라이트매퍼는 제각기 다른 모습의 조명을 만들어내는데, 이는 각 라이트매퍼가 서로 다른 기술을 사용하여 조명 데이터를 생성하기 때문입니다.

개요

다음 플로우차트는 콘텐츠 크리에이터의 시각에서 Unity의 전체 조명 파이프라인에 대한 높은 수준의 통찰을 제공합니다.

먼저 렌더 파이프라인을 선택해야 합니다. 그런 다음 그에 따라 간접 조명이 생성되는 방식을 결정하고 전역 조명 시스템을 선택할 수 있습니다. 모든 전역 조명 설정을 프로젝트에 맞게 적절하게 조정하고 나면 광원, 발광 표면, 반사 프로브, 라이트 프로브, 라이트 프로브 프록시 볼륨(LPPV)을 계속 추가할 수 있습니다. 이러한 모든 조명 오브젝트의 사용법과 기능은 이 문서에서 다루지 않습니다. 프로젝트에서 이러한 조명 오브젝트를 올바르게 활용하는 방법은 매뉴얼의 조명 섹션을 참조하시기 바랍니다.

렌더 파이프라인

2018년 초까지 Unity에서는 하나의 렌더 파이프라인, 즉 빌트인 렌더 파이프라인만 이용할 수 있었습니다. 이 렌더 파이프라인은 포워드 및 디퍼드 렌더링 경로를 제공합니다.

  • (멀티 패스) 포워드 렌더링 경로를 사용하면 각 오브젝트에 영향을 미치는 광원의 수에 따라 여러 패스에서 씬의 모든 오브젝트가 하나씩 연속으로 렌더링됩니다. 따라서 오브젝트가 여러 개의 광원을 받으면 렌더링의 성능 소모가 크게 증가합니다. 이 타입의 렌더러는 대개 광범위한 종류의 셰이더를 제공하고 투명도를 쉽게 처리할 수 있습니다.
  • 디퍼드 렌더링 경로를 사용하면 모든 (불투명) 지오메트리가 머티리얼에 대한 정보(컬러, 스페큘러, 평활도 등)를 보관하는 버퍼에 먼저 렌더링됩니다. 후반 패스에서, 즉, ‘디퍼드’ 방식으로 각 픽셀에 셰이드가 순차적으로 적용됩니다. 렌더링 시간은 주로 각 픽셀에 영향을 주는 광원 수에 따라 다릅니다. 투명 오브젝트, 그리고 복잡한 셰이더가 포함된 특정 오브젝트는 추가 포워드 렌더링 패스를 필요로 합니다. 디퍼드 렌더링은 많은 동적 광원이 포함된 씬(예: 인공 조명을 비춘 인테리어) 또는 야외 및 실내 조명 조합이 포함된 프로젝트를 처리할 때 사용하면 좋습니다.

2018년 1월 Unity는 사용자들이 C# 스크립팅을 통해 렌더링 루프를 커스터마이즈할 수 있도록 해주는 스크립터블 렌더 파이프라인(SRP)을 공개했습니다. 이는 게임 엔진 분야에서 작은 혁명을 일으켰습니다. 덕분에 사용자들은 C++ 같은 저수준 프로그래밍 언어를 사용하지 않고도 오브젝트 컬링, 드로잉, 프레임 포스트 프로세싱을 맞춤화할 수 있습니다.

Unity는 현재 다음의 두 가지 사전 빌드된 SRP를 제공합니다.

  • 고해상도 렌더 파이프라인(HDRP)은 하이브리드 디퍼드/포워드 타일/클러스터 렌더러입니다. HDRP는 고급 렌더링 및 셰이딩 기능을 제공하며, 높은 시각적 정확도를 요구하는 PC 및 고급 콘솔 프로젝트에 적합합니다.

타일은 프레임의 작은 2차원 사각형 픽셀 섹션이고, 클러스터는 카메라 절두체 내의 3차원 볼륨입니다. 이 두 가지 타일 및 클러스터 렌더링 기술은 모두 모든 단일 타일 및 클러스터에 영향을 주는 광원 리스트를 사용하며, 각 조명은 해당하는 알려진 광원 리스트를 사용하여 단일 패스로 계산됩니다. 불투명 오브젝트는 타일 시스템을 사용하여 셰이드를 적용할 가능성이 높고, 투명 오브젝트는 클러스터 시스템을 사용합니다. 주요 이점은 아주 느린 멀티 패스 광원 누적을 사용하는 빌트인 렌더 파이프라인(디퍼드)보다 조명을 더 빠르게 처리하고 대역폭 소모를 크게 감소시킨다는 점입니다.

  • 유니버설 렌더 파이프라인(URP)은 빠른 싱글 패스 포워드 렌더러로, 컴퓨트 셰이더 기술에 대한 지원이 없는 저사양 기기(예: 구형 스마트폰, 태블릿, XR 기기)를 위해 개발되었습니다. 하지만 URP는 콘솔, PC 등과 같은 중간 사양의 기기에 고품질 그래픽스를 제공할 수 있으며, 때로는 빌트인 렌더 파이프라인보다 성능 소모가 적습니다. 오브젝트별로 광원이 컬링되고 단일 패스에서 조명을 계산할 수 있으므로 빌트인 렌더 파이프라인보다 드로우 콜 수가 더 적습니다. 마지막으로 URP는 2D 렌더러도 제공하며, 디퍼드 렌더러는 곧 지원할 예정입니다.

이제 다음의 의사결정 차트를 사용하여 몇 가지 핵심 기준에 따라 가장 적합한 렌더 파이프라인을 빠르게 찾을 수 있습니다.

설정

최신 버전의 HDRP 및 URP는 Unity 패키지 관리자(Window > Package Manager)를 통해 다운로드할 수 있습니다. 이러한 SRP를 가장 손쉽게 사용하려면 Unity Hub에서 새 프로젝트를 만든 후 해당 템플릿 중 하나를 사용하십시오.

HDRP용 프로젝트를 설정하려면 필수 패키지를 설치해야 합니다. 그런 다음 HD 렌더 파이프라인 마법사(Window > Render Pipeline > HD Render Pipeline Wizard)를 사용하여 프로젝트를 간편하게 설정할 수 있습니다.

확장성

렌더링에 대해 잘 알고 C#에 익숙하며 프로젝트에 맞게 렌더러를 완전히 조정해야 하는 경우 SRP 콘셉트로 실험하며 고유한 커스텀 스크립터블 렌더 파이프라인을 만들 수 있습니다. 유니버설 렌더 파이프라인은 셰이더 라이브러리가 작고 렌더링 패스를 쉽게 삽입, 제거 및 교체할 수 있어서 확장이 매우 간편합니다.

호환성

Unity에서는 빌트인 렌더 파이프라인에서 HDRP 또는 URP로 프로젝트의 머티리얼을 쉽게 포팅할 수 있습니다. Edit > Render Pipeline > Upgrade…에서 머티리얼 컨버터를 한 번만 클릭하면 모든 작업이 끝납니다. 단, 이 작업은 되돌릴 수 없습니다. 반드시 프로젝트를 미리 백업해 두십시오!

반면에 커스텀 셰이더는 수동으로 포팅해야 합니다. 따라서 프로덕션 동안 빌트인 렌더 파이프라인에서 HDRP 또는 URP로 전환하는 작업은 재작성할 커스텀 셰이더 수에 따라 시간이 매우 많이 소요될 수 있습니다.

그리고 HDRP는 빌트인 렌더 파이프라인보다 광원 감쇠 및 분산 등의 부문에서 물리적으로 더 정확하기 때문에 HDRP로 전환한 후에 프로젝트의 모습이 다소 달라질 수 있습니다.

또한 HDRP와 URP는 동일한 렌더링 기능을 공유하지 않기 때문에 상호 호환되지 않습니다. HDRP에서 URP로 또는 그 반대 방향으로 프로젝트를 포팅할 수 있지만, 한 번의 클릭으로 작업이 끝나는 게 아니라 조명, 머티리얼 및 셰이더를 수동으로 다시 작업해야 합니다!

전역 조명 시스템

씬에 간접 조명을 포함하려면 Unity의 두 가지 전역 조명 시스템 중 하나를 사용하거나 자체 베이크 솔루션을 사용하여 전역 조명 시스템을 생성해야 합니다. Window > Rendering > Lighting Settings에 있고 Unity에서 사용할 수 있는 두 가지 시스템은 다음과 같습니다.

  1. 실시간 전역 조명: 이 시스템은 타사 조명 미들웨어인 인라이튼에 완전히 기반합니다. Unity의 사전 계산 시 인라이튼은 두 가지의 긴 단계, 즉 클러스터링과 광원 전송 단계를 거칩니다. 첫 번째 단계에서는 클러스터라고 불리는 표면 패치 컬렉션으로 씬을 단순화하고, 두 번째 단계에서는 이러한 클러스터 간의 가시성을 계산합니다. 이러한 미리 계산된 데이터는 런타임 시 상호작용을 통해 간접 조명을 생성하는 데 사용됩니다. 인라이튼의 장점은 미리 계산된 데이터가 클러스터 간의 관계에 기반하므로 조명을 실시간으로 편집할 수 있다는 점입니다. 하지만 다른 기존 라이트매핑 기술과 마찬가지로 씬의 정적 지오메트리를 수정하면 새로운 사전 계산이 트리거됩니다. 인라이튼은 Unity에서 제거되는 중이며, 현재 새로운 솔루션을 연구 중입니다.
    • HDRP는 Unity 2019.3 이상에서는 신규 프로젝트에 대해 실시간 전역 조명을 지원하지 않습니다. 하지만 Unity 2019.3 이하에서 생성된 프로젝트는 여전히 2019.3 또는 2019 LTS로 업그레이드할 수 있습니다.
    • URP는 인라이튼을 사용하는 실시간 전역 조명을 지원한 적이 없었습니다.
    • 빌트인 렌더 파이프라인은 Unity 2020 LTS(2020년 말 또는 2021년 초)까지 인라이튼을 사용하는 실시간 전역 조명을 지원합니다. 즉 이 버전에 대한 핵심적인 버그 수정은 2022년 말 또는 2023년 초까지 계속 제공됩니다.

요약하자면 Unity 2019.3 이상에서 새 프로젝트를 시작하고 URP 또는 HDRP를 사용하는 경우 인라이튼을 사용할 수 없습니다. 빌트인 렌더 파이프라인을 선택하는 경우 2020년 말 또는 2021년 초까지 인라이튼을 계속 사용할 수 있습니다.

  1. 베이크된 전역 조명: 조명이 라이트맵이라고 불리는 텍스처와 라이트 프로브로 베이크됩니다. 베이크된 GI 시스템은 다음 라이트매퍼 중 하나를 사용할 수 있습니다.

프로그레시브 라이트매퍼는 카메라에 보이는 오브젝트에 대한 조명 사전 계산을 우선적으로 처리할 수 있으며 조명에 대한 반복 작업의 속도를 크게 높일 수 있습니다. 단, 전체 씬의 전반적인 베이킹 시간이 증가합니다. 프로그레시브 라이트매퍼는 CPU를 사용하며 경로 추적을 통해 간접 조명을 계산합니다. 새로운 GPU 프로그레시브 라이트매퍼가 현재 프리뷰 단계이며, 씬의 베이킹 시간을 크게 줄여줄 것으로 기대합니다.

인라이튼과 프로그레시브 라이트매퍼는 모두 다른 방식으로 베이크된 조명을 생성하기 때문에 조명 결과가 서로 완전히 일치하지 않을 수 있습니다.

아래 다이어그램에서 각 전역 조명 시스템의 장단점을 살펴본 후 프로젝트에 가장 적합한 전역 조명 시스템을 선택하십시오.

정적 vs 동적

어느 전역 조명 시스템을 사용하든 Unity는 조명의 베이킹/사전 계산 중에 ‘Contribute GI’라고 표시된 오브젝트만 처리합니다. 동적(즉, 비정적) 오브젝트는 간접 조명을 받기 위해 씬 곳곳에 배치한 라이트 프로브를 사용해야 합니다.

조명의 베이킹/사전 계산은 비교적 느린 프로세스이므로 뚜렷한 조명 배리에이션을 가진 크고 복잡한 에셋(예: 오목면, 자체 그림자)에만 ‘Contribute GI’ 태그를 지정해야 합니다. 균일한 조명을 받는 작은 컨벡스 메시는 그렇게 표시하면 안 되며, 조명의 단순 근사치를 저장하는 라이트 프로브에서 간접 조명을 받아야 합니다. 더 큰 동적 오브젝트는 LPPV를 사용하면 더욱 뛰어난 국지적 간접 조명을 받을 수 있습니다. 씬에서 ’Contribute GI’로 태그가 지정된 오브젝트의 수를 제한하면 베이킹 시간을 대폭 줄이고 적절한 조명 품질을 유지할 수 있습니다. 이러한 최적화 프로세스와 프로브 조명의 중요성은 이 튜토리얼에서 자세히 알아볼 수 있습니다.

경고

Unity는 베이크된 GI 시스템과 실시간 GI 시스템을 동시에 활성화하여 모든 조명 기능에 액세스하도록 허용합니다. 하지만 두 시스템을 동시에 활성화하면 런타임 시 베이킹 시간과 메모리 사용량이 크게 증가한다는 경고를 받게 됩니다. 이러한 시스템이 동일한 데이터 집합을 사용하지 않기 때문입니다. 게다가 런타임 시 간접 조명의 인터랙티브 업데이트를 수행하면 CPU에 추가 부하를 주게 되어 베이크된 GI 시스템과 실시간 GI 시스템이 제공한 간접 조명을 육안으로 확인하면 서로 일치하지 않을 수 있습니다. 이는 각 GI 시스템이 서로 다른 기술을 사용하여 간접 조명을 시뮬레이션하고, 때로는 아주 다른 해상도에서 동작하기 때문입니다.

이 두 GI 시스템은 고사양 플랫폼, 또는 성능 소모가 예측 가능한 엄격히 통제된 씬이 포함된 프로젝트에만 동시에 사용해야 합니다. 또한 이 두 GI 시스템을 모두 관리하려면 복잡도가 늘어나기 때문에 모든 조명 설정을 완전히 이해하고 있는 전문가만 사용하는 것이 좋습니다. 따라서 두 GI 시스템 중 하나를 선택하는 것이 대부분의 프로젝트에 바람직합니다. 두 시스템을 모두 사용하는 것은 별로 권장하지 않습니다!

광원 모드

Light 컴포넌트의 Mode 프로퍼티는 다소 혼란스러울 수 있습니다.

광원 인스펙터에서는 다음의 세 가지 광원 모드를 이용할 수 있습니다.

  1. Baked: 이 광원의 직접 및 간접 조명은 라이트맵으로 베이크되며, 다소 시간이 걸리는 프로세스입니다. 이러한 광원을 처리할 때는 런타임 성능 소모가 없지만, 라이트맵 결과를 씬에 적용할 때는 약간의 성능 소모가 발생합니다.
  2. Realtime: 이 광원의 직접 조명 및 그림자는 실시간으로 동작하므로 라이트맵에 베이크되지 않습니다. 씬의 복잡도, 그림자를 드리우는 광원 수, 중복되는 광원 수 등에 따라 런타임 성능 소모가 매우 클 수 있습니다. 더욱이 실시간 전역 조명을 활성화한 경우에는 런타임 시 간접 조명을 업데이트하기 위해 추가 성능 소모가 발생합니다.
  3. Mixed: 베이크된 간접 조명, 실시간 직접 조명을 비롯하여 베이크된 기능과 실시간 기능을 혼합하여 제공하는 하이브리드 모드입니다. 씬에 있는 모든 혼합 조명의 동작과 각 혼합 조명이 성능에 미치는 영향은 해당 씬의 조명 모드에 따라 다릅니다.

광원 모드는 베이크된 전역 조명 시스템이 활성화된 경우에만 유효하다는 점에 유의해야 합니다. GI 시스템을 사용하지 않거나 실시간 GI 시스템만 사용하는 경우에는 모든 베이크된 광원과 혼합 광원이 Mode 프로퍼티가 Realtime으로 설정된 것처럼 동작합니다.

다음 다이어그램은 의사결정 차트와 비교 표를 결합한 것으로, 씬에 새로운 광원이 추가될 때마다 적절한 광원 모드를 선택하는 데 도움이 됩니다.

조명 모드

이전 다이어그램에서 볼 수 있듯이, 씬의 모든 혼합 광원에는 라이팅 창에서 선택한 조명 모드에 따라 특정한 베이크된 기능과 실시간 기능이 포함되어 있습니다.

다음 세 가지 모드 중에서 선택할 수 있습니다.

  1. 서브트랙티브
  2. 베이크된 간접
  3. 섀도우 마스크

섀도우 마스크 조명 모드에는 다음의 두 가지 품질 설정이 있습니다.

  1. 섀도우 마스크
  2. 디스턴스 섀도우 마스크

HDRP의 섀도우 마스크 조명 모드를 사용하면 섀도우 마스크 기능이 그래픽스 설정에서 할당된 HDRP 에셋에서 활성화됩니다. 그런 다음에는 프레임 설정을 통해 특정 카메라에 대해 활성화해야 합니다.

렌더 파이프라인 비교 표

다음 표는 Unity 2019.3의 각 렌더 파이프라인에서 지원하는 기능에 대한 일반적인 개요를 제공합니다.

조명 시나리오

지금까지 렌더 파이프라인과 주요 조명 기능에 대해 소개해드렸습니다. 이제는 몇 가지 프로젝트 사례와 각 프로젝트에 사용할 수 있는 조명 설정을 살펴보겠습니다. 모든 프로젝트는 제각기 고유하므로 해당 요구사항에 따라 약간 다른 옵션을 사용할 수 있습니다.

1. 프로토타입 또는 빠른 사전 시각화

프로토타입을 빌드하기 위해 에셋 스토어를 많이 사용하는 경우 에셋 스토어에 있는 대부분의 에셋이 HDRP 및 URP와 완전히 호환되지 않을 수 있기 때문에 빌트인 렌더 파이프라인을 선택하는 것이 좋습니다. 하지만 에셋 호환성은 시간이 지나면서 개선될 예정입니다. 모든 에셋을 처음부터 빌드하고 프로젝트 요구사항을 분명하게 파악하고 있다면 두 가지 SRP(URP 또는 HDRP) 중에서 한 가지를 선택하거나 커스텀 렌더 파이프라인을 만들 수 있습니다.

(사전) 프로덕션의 초기 단계에 있고 조명에 대한 빠른 턴어라운드와 최대 유연성이 필요한 경우 사전 계산이 필요 없는 완전 실시간 방식을 선택하여 베이크된 GI 시스템과 실시간 GI 시스템을 모두 비활성화할 수 있습니다. 적절한 간접 조명의 부재 문제를 완화하기 위해 스크린 공간 앰비언트 오클루전을 활성화할 수 있습니다. 그러면 성능 부하가 작은 실시간 컨택트 섀도우를 제공하여 씬에 오브젝트를 쉽게 배치할 수 있습니다.

2. 3D 모바일 전략 게임

모바일 디바이스를 대상으로 하는 경우 URP를 사용하면 전략 게임에 적합한 성능을 효과적으로 확보할 수 있습니다. 게임에 맞게 렌더링 파이프라인을 커스터마이즈해야 하는 경우 그래픽스 프로그래머가 간단하게 URP를 확장할 수 있습니다. URP를 선택하고 베이크된 전역 조명을 사용하는 경우 현재 섀도우 마스크 혼합 조명 모드가 지원되지 않는다는 점에 유의하십시오.

또는 예를 들어 에셋 스토어의 에셋을 많이 사용하기 때문에 빌트인 렌더 파이프라인을 그대로 사용하기로 결정한 경우에는 모든 혼합 조명 모드가 지원됩니다. 이 경우 섀도우 마스크 조명 모드의 방식을 통해 베이크된 그림자를 제공하는 동시에 동적 오브젝트가 실시간 그림자를 드리우도록 만들 수 있습니다. 섀도우 마스크의 성능 소모가 너무 커서 프로젝트에 사용할 수 없으면 성능 소모가 가장 적은 서브트랙티브 모드로 폴백할 수 있습니다. 마지막으로 현재 레벨에 광원 수가 매우 적고 구형 하드웨어를 대상으로 하는 경우에는 포워드 렌더링 경로가 최고의 옵션일 수 있습니다.

3. AAA 일자형 슈팅 게임(고정된 시간)

일자형 FPS 게임을 위해 PC와 콘솔에서 AAA급 품질의 비주얼을 구현하고자 하는 경우 HDRP를 렌더 파이프라인으로 선택하는 것이 좋습니다. 다시 말하지만, 그래픽스 프로그래머의 도움을 받아 커스텀 SRP를 개발할 수도 있습니다.

현재 레벨에 실시간 그림자를 드리우는 광원(예: 파괴 가능한 광원 소품과 움직이는 광원)이 많은 경우에는 베이크된 GI 시스템을 베이크된 간접 모드와 함께 사용하면 혼합 방향 광원에서 뛰어난 간접 조명을 얻고 정적 광원 소품에서 베이크된 광원을 얻을 수 있습니다. 현재 레벨에서 그림자를 드리우는 고정 광원의 비율이 큰 경우 섀도우 마스크 모드의 방식을 추천합니다. 이는 HDRP가 제공하는 우수한 하이브리드 섀도우 마스크 모드를 사용하여 실시간 그림자와 베이크된 그림자 간의 블렌드를 더욱 세세하게 제어할 수 있기 때문입니다.

Nintendo Switch도 지원할 계획이라면 URP를 사용하는 것이 좋습니다. 그러면 시장에서 제공되는 대부분의 게임 플랫폼을 지원하게 되며, HDRP에서 URP로 또는 그 반대로 프로젝트를 포팅하는 지루한 프로세스를 거칠 필요가 없습니다.

4. 배틀 로얄(낮-밤 사이클)

PC 및 콘솔용 배틀 로얄 게임을 출시하려는 경우에는 대규모 환경과 완전한 동적 조명이 필요하기 때문에 HDRP를 선택하거나, 확장을 통해 렌더링 파이프라인을 프로젝트에 맞춤 설정해야 합니다. AAA 비주얼 정확도를 목표로 하지 않고 모바일 디바이스나 저사양 시스템을 대상으로 한다면 URP를 고려할 수도 있습니다.

낮-밤 사이클을 구현하려는 경우 HDRP 및 URP는 실시간 전역 조명 시스템(인라이튼)을 지원하지 않습니다. 따라서 간접 베이크, 그리고 하루 종일 태양과 간접 빛 강도를 조절하는 커스텀 스크립트를 통해 낮-밤 사이클을 처리해야 합니다.

이러한 특정한 시나리오에서 빌트인 렌더 파이프라인을 사용하는 경우 실시간 GI 시스템과 베이크된 GI 시스템을 동시에 활성화하는 것은 적절하지 않습니다. 그러면 거대한 레벨의 성능 및 씬 관리에 막대한 성능이 소모될 수 있습니다. 이 두 GI 시스템을 동시에 사용하지 말아야 하는 또 다른 이유는 대규모 멀티플레이어 게임의 경우 예측 불가능한 요소가 많기 때문입니다. 따라서 고도로 스크립트화된 리니어 레벨보다 인스턴스에 대한 성능 예측이 더 어렵습니다.

끝맺는 말

스크립터블 렌더 파이프라인을 도입한 덕분에 지난 몇 년에 걸쳐 Unity의 렌더링 환경이 크게 바뀌었습니다. 따라서 이러한 조명 파이프라인의 모든 변경 사항과 그로 인한 영향을 모두 파악하기가 어려울 수 있습니다.

이 가이드와 여기에 수록된 많은 예시가 각 렌더 파이프라인을 이해하는 데 도움이 되길 바랍니다. 또한 모든 사용자가 올바른 렌더링 및 조명 설정으로 Unity 프로젝트를 자신 있게 시작할 수 있기를 바랍니다!

Unity의 조명과 렌더링 파이프라인에 관한 정보는 다음 페이지에서 자세히 알아볼 수 있습니다.

동적 조명
전문가 가이드