조명을 전문적으로 구현하려면 씬에 어울리는 분위기와 타겟 플랫폼의 성능 및 기술적 한계 사이에서 적절한 균형을 찾아야 합니다. 이번 포스팅에서는 스티븐 카나반이 Unity 2021 LTS에서 유니버설 렌더 파이프라인(URP)을 사용할 때의 조명 팁을 소개합니다.
스티븐은 게임 개발 업계에 15년째 몸담은 베테랑이자 Accelerate Solutions – Games 팀의 시니어 디벨롭먼트 컨설턴트이며, Unity의 스크립터블 렌더 파이프라인(SRP) 전문가입니다. 또한 그는 최근 출간된 Unity 고급 사용자를 위한 유니버설 렌더 파이프라인 전자책에 주요 기고자로서 참여하기도 했습니다. 해당 전자책은 여기(한국어)에서 확인할 수 있습니다. 여기서 소개할 팁을 비롯하여 더 많은 내용을 알아보려면 가이드 전문을 확인해 보세요.
주요 설정부터 살펴보겠습니다. 먼저 URP의 전역 조명 설정 대부분은 유니버설 렌더 파이프라인 에셋이나 URP 에셋에서 확인할 수 있습니다.
설정을 확인하려면 프로젝트(Project) 창에서 Universal Render Pipeline Asset을 선택하고 인스펙터(Inspector)를 여세요. 특정 렌더러의 설정을 조정하려면 프로젝트 창에서 렌더러 에셋(예: URP Universal Renderer)을 선택한 다음 인스펙터에서 해당 렌더러의 설정을 조정하세요.
광원 레이어 이름을 변경하려는 경우에는 Edit 메뉴를 열어서 Project Settings > Graphics > URP Global Settings를 선택하면 됩니다. 씬 설정을 변경하려면 Lighting 창으로 이동하세요(Window > Rendering > Lighting).
URP 에셋은 조명에 영향을 미치는 여러 설정을 포함합니다. 이러한 설정은 Lighting과 Shadows 섹션에 해당하지만, 인스펙터의 Rendering, Quality, Post-processing 섹션에도 일부 설정이 있습니다.
Dynamic Range 프로퍼티는 Unity의 명도 저장 방식을 결정합니다. 톤 매핑과 포스트 프로세싱 효과에 이 명도 데이터를 활용하여 사실적인 효과를 구현할 수 있습니다.
HDR(High Dynamic Range)을 활성화하려면 인스펙터에서 URP 에셋을 열고 Quality 설정을 펼친 다음 HDR 프로퍼티를 활성화하세요. HDR이 비활성화 상태인 경우 URP는 LDR(Low Dynamic Range)을 기본으로 사용합니다. 대부분의 경우에는 최적의 품질을 유지할 수 있도록 HDR을 활성화해 두세요.
HDR을 비활성화하면 조명 결과 및 기타 효과가 0.0에서 1.0의 명도 범위로 제한됩니다. LDR을 통해 성능과 대역폭을 향상할 수도 있지만 그만큼 화질이 저하됩니다.
HDR을 활성화하면 URP가 1.0이 넘는 값을 지원하는 임시 텍스처를 렌더링합니다. 이렇게 높은 명도와 포스트 프로세싱 효과를 결합하면 더욱 사실적인 비주얼을 구현하거나 카메라 효과를 시뮬레이션할 수 있습니다. 렌더링 프로세스의 마지막 단계에서 URP는 포스트 프로세싱 과정 또는 최종 블릿 중에 HDR 콘텐츠를 LDR 포맷으로 변환합니다. 또한 URP에서는 포스트 프로세싱 중에 톤 매핑을 적용할 수 있습니다.
LDR로 전환해야 하는 이유는 일부 플랫폼에서 HDR 출력을 지원하지 않을 수 있기 때문입니다. 예를 들어 URP는 HDR 콘텐츠를 표시할 수 있는 플랫폼에서 HDR 출력을 지원하지 않습니다.
참고: PC 및 콘솔의 HDR 디스플레이에 대한 지원은 Unity 2022 LTS용 URP에서 제공될 예정입니다.
각 프로젝트의 아트 스타일과 성능 고려 사항에 따라 가장 적합한 Dynamic Range 옵션이 달라집니다. 사실적인 비주얼이 필요하거나 밝은 부분과 어두운 부분이 강렬하게 대조되어야 하는 프로젝트라면 HDR이 바람직합니다. 하지만 비교적 단순하거나 캐주얼한 아트를 위한 조명을 사용하며, 블룸처럼 높은 범위의 포스트 프로세싱 효과를 사용할 필요가 없는 프로젝트라면 LDR로도 충분합니다.
위의 RenderDoc 이미지에는 스페큘러 반사와 HDR 스카이박스로 인해 0.0–1.0 범위 이상의 값을 갖는 영역이 존재합니다. 이러한 영역은 마지막 이미지에서 블룸에 영향을 미쳐 씬의 비주얼을 더욱 사실적으로 보이게 만듭니다.
한편 HDR은 성능에 영향을 미칩니다. HDR에 필요한 시스템 리소스 수준은 사용하는 텍스처 포맷에 영향을 받으며, URP가 이미지를 표시 가능한 포맷으로 전환할 때 거쳐야 하는 추가적 단계에 따라서도 달라집니다.
일반적으로 플로트 텍스처는 크기가 크기 때문에 더 많은 메모리와 대역폭이 필요합니다. 크기가 큰 포맷일수록 픽셀당 더욱 많은 비트가 필요하므로 이를 처리하기 위해 필요한 메모리와 성능도 더 많아질 수밖에 없습니다. 이는 저사양 기기에서 과열을 일으킬 수 있으므로 문제가 됩니다. 이 문제를 해결하기 위해 URP는 LDR과 유사한 대역폭 리소스가 필요한 B10G11R11_UFloatPack32 API 포맷을 사용하려고 시도합니다(플랫폼이 이를 지원하고 preserveFramebufferAlpha가 비활성화된 경우).
화면 해상도 | 포맷 | 범위 | 픽셀당 비트 | 크기(MB) |
---|---|---|---|---|
1920x1080 | R16G16B16A16_SFloat | HDR | 64 | 15.82MB |
1920x1080 | B10G11R11_UFloatPack32 | HDR | 32 | 7.91MB |
1920x1080 | R8G8B8A8_UNorm | LDR | 32 | 7.91MB |
1920x1080 | R8G8B8A8_SRGB | LDR | 32 | 7.91MB |
참고: R16G16B16A16_SFloat는 32비트와 달리 알파 지원이 가능하며 청색 채널에서의 정밀도 손실로 인한 변색이 발생하지 않는 등의 장점이 있습니다. 따라서 Unity 2022.2 이상에서는 고정밀도 텍스처 사용 여부를 직접 설정할 수 있습니다.
URP 에셋의 Lighting 섹션에서는 주요 광원과 추가 광원의 설정을 모두 변경할 수 있습니다. 주요 광원은 씬에서 가장 중요한 방향 광원이며 추가 광원은 이를 제외한 나머지 방향, 스폿, 점 광원을 가리킵니다. 하나의 씬에 이러한 광원을 대량으로 배치할 수 있지만, 일반적으로는 한 화면에 표시 가능한 광원 수에 제한이 있으며 포워드 렌더러 경로에는 오브젝트당 제한도 있습니다.
주요 광원은 씬의 조명 설정(Window > Rendering > Lighting > Environment)에서 태양 소스로 지정하는 광원 또는 가장 밝은 실시간 방향 광원입니다. 하지만 실제로는 대부분 가장 밝은 방향 광원이 주요 광원이 되며, Render Mode는 Auto 혹은 Important로 설정되고 Mode는 Mixed 혹은 Real-time으로 설정됩니다.
Unity는 Render Mode 옵션을 Important나 Auto로 설정한 방향 광원의 밝기를 결정할 때 해당 광원 Color의 Grayscale 값에 그 광원의 Intensity와 그림자를 드리우는 조명의 조정값을 곱합니다(예: (Red x 0.3 + Green x 0.59 + Blue x 0.11) x Intensity 값 x 조정값).
씬에 Not Important 상태의 방향 광원만 존재할 경우 URP는 각 조명의 강도 값을 비교하여 주요 광원을 결정합니다. 하지만 Unity가 그림자를 드리우는 조명에 조정값을 적용하기 때문에, 밝은 광원 대신에 Cast Shadows가 활성화된 어두운 광원이 선택될 수도 있습니다.
Lighting 섹션에서는 주요 광원과 추가 광원의 그림자에 아틀라스 크기를 할당할 수 있습니다. URP 에셋의 Shadows 섹션 설정과 함께, 이 설정은 주요 광원에서 캐스케이드 그림자에 사용하는 아틀라스 URP에 영향을 미칩니다. Additional Lights 섹션에서는 Shadow Resolution 등급을 설정할 수 있습니다. URP는 해상도(Custom, High, Medium, Low)를 기반으로 하여 그림자가 있으며 눈에 보이는 광원 모두를 아틀라스에 배치하려고 합니다.
하지만 URP가 해당 그림자를 사용자가 원하는 해상도로 렌더링할 때 필요한 크기가 아틀라스보다 크다면, URP는 그림자를 축소하게 되며 때에 따라서는 그림자를 모두 제거할 수도 있습니다. 이러한 현상은 가능한 최소의 광원 해상도(하드 섀도우는 8x8, 소프트 섀도우는 16x16)를 위한 공간이 부족하거나, 모바일 기기에서 하드웨어 성능의 한계에 도달했을 때 발생합니다. 따라서 수많은 광원이 보이거나 혹은 소수의 광원이 아틀라스의 상당한 비율을 차지하는 경우(예: 아틀라스에 여섯 개의 슬라이스가 필요한 점 광원), 펑추얼 광원의 그림자 품질이 크게 달라질 수 있습니다.
몇 가지 방법으로 이러한 문제를 해결할 수 있습니다.
Additional Lights 섹션의 Per Object Limit 설정에서는 포워드 렌더러 경로를 사용하여 URP가 렌더링하는 오브젝트에 영향을 미칠 수 있는 광원의 수를 제한합니다. 따라서 만약 유니버설 렌더러가 포워드 경로를 사용하면 제한 설정이 모든 오브젝트에 영향을 미치게 됩니다. 하지만 디퍼드 경로를 사용할 경우, 포워드 렌더링 기술을 통해 머티리얼을 사용하는 오브젝트에만 이러한 제한이 적용됩니다(예: Complex Lit 또는 Transparent 머티리얼).
특정 오브젝트가 총 제한을 초과할 만큼 많은 광원의 조명을 받게 되면 Unity는 가장 중요도가 떨어지는 조명들을 배제합니다. 이때 Unity는 오브젝트 중심의 강도와 광원의 렌더 모드를 모두 고려하여 어떤 조명들을 배제할지 결정합니다. 그에 따라 시각적 결함이 나타났다가 사라질 수 있습니다.
제한을 늘리는 것도 방법이긴 하지만 최대 8개의 광원이 한계이며, 특히 저사양 기기에서는 성능 문제로 인해 보다 더 수를 제한하는 것이 바람직합니다. 대부분의 프로젝트에서는 문제가 되지 않겠지만, 문제가 발생한다면 다음과 같은 몇 가지 대안을 활용할 수 있습니다.
참고: Unity 2022.2 이상에서는 Forward+ 렌더러를 사용할 수 있습니다. 이 렌더러는 픽셀에 영향을 미칠 수 있는 광원의 개수를 늘려 주며 오브젝트당 제한도 없애 줍니다.
최근 URP는 주요 방향 광원에 광원 쿠키를 지원하게 되었습니다. 추가 광원에 대해서도 유사한 지원을 하고 있지만, 해당 추가 광원들은 하나의 아틀라스를 공유해야 합니다. 해당 아틀라스의 크기는 Additional Lights 섹션의 Cookie Atlas Resolution와 Cookie Atlas Format 설정을 통해 변경할 수 있습니다.
쿠키가 적용된 펑추얼 광원이 보이게 되면 URP는 해당 광원을 아틀라스에 추가합니다. 그리고 아틀라스에 공간이 부족하면 쿠키들의 크기를 줄입니다. 더 이상 보이지 않게 된 조명은 재구성해야 할 때까지(예: 아틀라스 전체의 스케일링 인자가 변할 경우) 아틀라스에 머무릅니다. 바꿔 말하면 URP가 아틀라스를 업데이트하는 경우가 드물다는 것입니다.
실질적으로 URP는 슬롯이 변경될 때만 업데이트를 수행합니다. 이러한 상황은 쿠키가 렌더 텍스처 를 사용하거나 에디터에서 쿠키 텍스처를 다시 임포트할 때 발생할 수 있습니다. 대부분의 기기에서는 쿠키를 사용하기 위해 많은 리소스를 필요로 하지 않습니다. 하지만 이미지 화질에 문제가 발생한다면 아틀라스 크기와 개별 광원 쿠키 이미지를 다시 확인해 볼 수 있습니다. 모든 광원이 다른 것처럼 쿠키 텍스처도 마찬가지입니다. 따라서 아틀라스의 공간을 확보해야 한다면 가장 중요도가 낮은 쿠키 텍스처의 크기부터 줄이세요.
물론 쿠키 아틀라스 포맷 에는 여러 가지 옵션이 있습니다. 각 프로젝트에 가장 적합한 옵션은 메모리 요구 사항과 소스 쿠키 텍스처에 따라 달라집니다.
대부분은 기본 옵션인 Color High로 충분하겠지만 다음과 같은 경우에는 다른 포맷을 고려해 보는 것이 좋습니다.
참고: 쿠키는 리소스 요구 수준을 높이므로 저사양 플랫폼에는 바람직하지 않은 편입니다. 프로젝트에서 쿠키를 사용하지 않는다면 그에 따른 추가 리소스도 필요하지 않게 됩니다.
URP는 반사 프로브 사용에 몇 가지 옵션을 제공합니다. Unity가 프로브에서 샘플링할 때 Reflection Probes에서 Probe Blending 혹은 Box Projection을 사용하도록 설정할 수 있습니다.
Probe Blending 옵션을 활성화하면 URP는 최대 두 개의 서로 다른 반사 프로브를 평가하여 각 프로브로부터 샘플링을 수행합니다(바운딩 박스와 블렌드 거리를 기준으로 해당 픽셀에 충분한 영향이 미칠 때). 각 프로브의 가중치 합이 임계값인 0.99f에 미치지 못하면 URP는 앰비언트 프로브도 사용합니다. 이를 통해 탁월한 반사 품질을 확보할 수 있지만, 셰이더를 위해 필요한 대역폭과 컴퓨팅 작업이 증가하게 됩니다. 따라서 이는 저사양 기기에 적합하지 않을 수 있습니다.
블렌딩과 함께 사용할 수 있는 박스 투영 기술은 URP의 반사 샘플링 방식을 변경합니다. Box Projection을 비활성화하면 URP는 반사 소스가 무한히 멀리 있는 것처럼 간주합니다. 이렇게 하면 픽셀의 노멀을 기준으로 한 카메라 뷰의 반사 벡터만을 계산하면 되므로 리소스 부담이 줄어듭니다. 이때 오브젝트의 위치와 관계없이 반사가 시각적으로 동일하게 보일 수 있는데, 작은 밀폐 공간인 씬에서는 상당히 두드러져 보일 수 있습니다.
URP 에셋에서 Box Projection을 활성화하면 URP가 반사 프로브를 처리하는 방식이 바뀝니다. 구체적으로 말하자면 URP는 반사를 유한한 것으로 취급하고 반사 벡터를 조정하여 상자의 영역에 매핑합니다. 이를 통해 공간과 더욱 어울리는 반사를 구현할 수 있습니다. 동일한 반사 프로브를 사용하는 오브젝트들의 위치로 매핑되는 반사가 개선되기 때문입니다.
이때는 블렌디드 프로브만큼 많은 리소스가 추가로 필요하지는 않습니다. 하지만 박스 투영은 셰이더의 복잡도를 증가시키며 성능에 영향을 미칩니다. 따라서 실내 씬 혹은 길거리처럼 밀폐된 공간에서만 사용하는 것이 좋습니다. 또한 박스 투영은 거울처럼 반사 능력이 뛰어난 표면을 더욱 사실적으로 구현합니다.
빌트인 렌더 파이프라인에서는 메시 렌더러별로 반사 프로브를 설정할 수 있습니다. 하지만 URP 2021.2 버전에는 이 옵션이 존재하지 않습니다. URP에서 포워드나 디퍼드를 사용하여 구현하면 해당 값에 액세스할 수 없게 되며, 이를 변경할 경우 반사 프로브 블렌딩에 오류가 발생하기 때문입니다. 기존 프로젝트를 2021 LTS로 업그레이드할 경우 사전에 Blend Probes 옵션을 기본값으로 설정해 두세요.
URP 에셋 프로퍼티를 통해 Mixed Lighting과 Light Layers를 활성화할 수 있습니다. 이 옵션들은 기본적으로 보이지 않으며, 인스펙터 우측 상단의 점 세 개 버튼(⋮)을 클릭하고 Show Additional Properties를 클릭하면 나타납니다. 또는 Core Render Pipeline 설정에서 조정할 수도 있습니다(Preferences > Core Render Pipeline).
혼합 조명은 동적 광원이 베이크된 광원과 상호 작용할 수 있게 하는 옵션이며 기본적으로 활성화되어 있습니다. 이를 씬에서 사용하려면 Baked Global Illumination을 활성화하고 Lighting 창에서 Subtractive 혹은 Shadowmask Mode를 선택하세요(Windows > Rendering > Lighting > Scene). 혼합 조명을 비활성화하면 빌드 시 프로젝트에서 혼합 광원을 포함하는 셰이더 배리언트가 제거됩니다.
URP에 새로 도입된 광원 레이어를 통해 특정 렌더 레이어에 광원을 설정할 수 있습니다. 이는 특정 지오메트리에만 영향을 미치는 광원을 설정할 때 유용한 기능입니다. 각 광원은 섀도우 패스에 지오메트리를 포함하거나 제외하는 커스텀 그림자 레이어를 가질 수 있습니다.
Max Distance는 게임의 모든 그림자에 영향을 미치는 전역 설정입니다. 이는 카메라로부터의 최대 거리로, Unity가 실시간 그림자를 렌더링하기 위해 사용합니다. URP는 방향 광원에 대한 그림자를 섀도우 맵에 렌더링합니다. Max Distance 옵션은 카메라의 절두체 범위를 비롯해 카메라로부터 어느 거리까지 섀도우 맵이 닿는지를 결정합니다. 추가 그림자는 위치 그림자이므로, 이 거리를 기준으로 카메라로부터 너무 멀리 떨어진 추가 그림자는 섀도우 패스에서 제외됩니다. Unity는 Max Distance 값보다 더 멀리 위치한 픽셀에 그림자를 부여하지 않습니다.
Cascade Count 설정을 활용하면 주요 방향 광원에 대한 캐스케이드의 개수를 설정할 수 있습니다. Unity는 절두체를 캐스케이드로 분할하여 카메라에 가까운 그림자를 더욱 정교하게 만듭니다. 반면 URP는 해당 캐스케이드를 _MainLightShadowmapTexture로 패킹합니다. 그러므로 Cascade Count를 1로 설정하면 URP는 전체 텍스처를 사용합니다. 그 외의 경우에는 각 캐스케이드가 아틀라스의 1/4을 차지합니다(그림자 해상도 크기의 절반).
Working Unit 옵션을 사용하면 URP가 캐스케이드 분할에 어떤 유닛을 사용할지 정할 수 있습니다. Metric을 선택하면 URP는 미터법을 사용해서 각 분할에 나타나는 숫자를 측정합니다. 반면 Percent를 선택하면 각 분할에 Max Distance 값에 대한 백분율을 표시합니다. 분할을 직접 조정하려면 Split 필드의 값을 수정하면 됩니다. 아니면 Last Border 프로퍼티 아래에 있는 인포그래픽에서 색으로 구분된 분할 영역을 드래그해도 됩니다.
Last Border 프로퍼티는 주요 광원 혹은 그림자를 드리우는 펑추얼 광원으로부터 그림자를 받는 모든 픽셀에 영향을 미칩니다. Last Border 값 은 픽셀이 최대 거리에 가까워질 때 URP가 그림자를 페이드 아웃(리니어 페이드)하는 거리를 가리킵니다.
Depth Bias와 Normal Bias 설정은 프로젝트의 기본 바이어스를 제어합니다. Bias 설정을 Custom으로 변경하면 직접 바이어스를 설정하거나 각 광원을 조정할 수 있습니다(아래 스크린샷 참고).
Conservative Enclosing Sphere 옵션은 그림자 절두체 컬링을 향상하기 위한 용도입니다. 이 옵션을 활성화하면 컬링이 캐스케이드와 더욱 어울리게 조정되며, 섀도우 캐스케이드 모서리에 과도한 그림자 컬링이 발생하지 않습니다. 하지만 이 설정으로 인해 URP가 캐스케이드를 선택하기 위해 사용하는 바운딩 구체들의 크기와 위치가 바뀌게 됩니다. 따라서 기존 프로젝트에서 이를 활성화할 때는 캐스케이드 거리를 조정하는 것이 좋습니다.
게다가 섀도우 패스에 Depth Bias와 Normal Bias를 사용하여 패스 결과를 변경하고, 섀도우 애크니와 같은 자주 발생하는 그림자 관련 문제를 해결할 수도 있습니다. 자세한 내용은 그림자 문제 해결 기술 자료를 참조하세요. 기본적으로 Depth Bias는 섀도우 패스에서 광원 밖으로 지오메트리를 밀어내지만, Normal Bias는 노멀이 광원을 등지고 있는 곳에서 섀도우 캐스터를 축소합니다.
그 결과 URP는 셀프 섀도잉을 줄이기 위해 섀도우 캐스터를 광원에서 밀어내지만, 원래의 경계 안에 머무르기 때문에 셀프 섀도잉 버그가 줄어들게 됩니다. Unity는 절두체 및 해상도 크기에 URP 에셋 또는 광원에 설정된 바이어스를 곱한 값을 기반으로 URP가 캐스터를 움직이는 총량을 계산합니다.
대부분의 경우에는 기본값으로도 충분합니다. 만약 결함이 존재한다면 적절한 값을 찾아내는 데 초점을 맞추고, 가능한 경우 각 광원을 개별적으로 조정해 보세요.
Soft Shadow 옵션은 URP에서의 소프트 섀도우 지원에 대한 전역 오버라이드입니다. 옵션을 활성화하면 URP가 모든 광원에 대한 하드 섀도우와 소프트 섀도우를 지원하며, 이는 셰이더의 성능에 영향을 미칠 수 있습니다. 따라서 저사양 플랫폼에서는 이 기능을 사용하지 않는 품질 레벨을 추가하는 것이 바람직합니다.
URP가 그림자를 지원하는 셰이더를 통해 픽셀을 렌더링할 때마다 Unity는 그림자 텍스처에서 샘플링을 여러 번 수행해야 합니다(모바일 및 무선 기기에서는 네 번, 기타 플랫폼에서는 아홉 번). 그럼에도 소프트 섀도우는 상당한 대역폭을 요구합니다.
여러 번 샘플링을 하면 캐시 미스나 메모리 인출이 더욱 많이 발생하므로 각 픽셀이 부분적으로 더 많은 리소스를 요구하게 될 수 있습니다. 심지어 오버드로우는 이러한 대역폭 문제를 더욱 심화시킵니다. 그래서 Unity 2022.2부터는 광원별로 소프트 섀도우의 품질(샘플 개수)을 제어할 수 있는 옵션이 추가되었습니다.
Unity는 유니버설 렌더러를 사용하여 URP의 씬 렌더링 방식을 설정합니다. 유니버설 렌더러의 Rendering 섹션은 해당 에셋이 사용하는 렌더링 경로를 포함하며, 이 경로는 Forward 혹은 Deferred로 설정할 수 있습니다.
기본 설정은 Forward 렌더링 경로입니다. 이렇게 설정하면 하드웨어와 URP 에셋에 의해 설정된 제한 내에서 각 오브젝트에 대한 유효 조명 정보 전체를 바탕으로 해당 오브젝트를 렌더링합니다. 이때 제한을 넘는 렌더링 지원이 필요하다면 Deferred 경로를 고려해 볼 수 있습니다.
Deferred 렌더링 경로는 불투명 지오메트리를 G-버퍼에 렌더링합니다. 유니티는 Deferred Shading 패스에서 G-버퍼를 사용하여 눈에 보이는 개별 광원을 렌더링합니다. 따라서 Lit이나 Simple Lit을 사용하는 불투명 머티리얼을 가진 오브젝트에 훨씬 많은 광원이 영향을 미치게 됩니다. Complex Lit과 Baked Lit 같은 일부 셰이더는 Forward 경로만을 사용합니다. 따라서 URP는 디퍼드 조명 패스 이후에 이러한 셰이더를 렌더링합니다. URP는 모든 투명 머티리얼을 Forward 경로를 통해 렌더링한다는 점을 알아 두세요.
또 다른 옵션(기본적으로 활성화되어 있음)은 투명 오브젝트가 그림자를 받게 만드는 것입니다. 빌트인 렌더 파이프라인과는 달리 URP는 투명 머티리얼이 그림자를 받도록 지원하는데, 다만 투명 오브젝트가 그림자를 드리우도록 지원하지는 않습니다.
스크린 공간 앰비언트 오클루전(SSAO)용 렌더러 기능이 URP 패키지에 포함되어 있으며, 에셋의 Renderer Feature 섹션에서 찾아볼 수 있습니다. 이 기능을 사용하면 씬에 더욱 사실적인 그림자를 구현할 수 있습니다.
조명 창(Window > Rendering > Lighting)에는 베이크된 조명, 환경 관련 값(스카이박스, 안개, 태양), 반사 관련 설정이 포함됩니다. 빌트인 렌더 파이프라인과 URP의 조명 설정은 크게 다르지 않지만 두 가지 예외 사항을 주의해야 합니다. 하나는 URP에서는 Lens Flare (SRP) 컴포넌트가 렌즈 플레어를 처리한다는 것이며, 다른 하나는 URP가 현재 헤일로를 지원하지 않는다는 것입니다.
각 씬은 공유 설정이 포함된 조명 설정 파일을 가리킬 수 있습니다. 서로 다른 씬의 고유 설정을 유지하려면 여러 설정을 만들어야 합니다. 해당 설정들은 Scene, Environment, Real-time lightmaps, Baked lightmaps의 네 가지 섹션으로 나뉩니다.
URP와 빌트인 렌더 파이프라인의 조명 창에 유의미한 차이가 없으므로, 해당 내용은 이 글에서 다루지 않습니다. 유니티를 처음 접하신다면 조명 관련 기술 자료를 읽어 보고, Unity Learn의 입문자용 튜토리얼에서 관련 내용을 학습하세요.
URP는 프로젝트에 사용할 수 있는 세 가지 조명 모델을 제공합니다.
셋은 서로 상이한 모델입니다. 비록 흔한 경우는 아니지만 세 모델을 혼합해서 사용하면 간혹 독특한 비주얼을 구현할 수 있습니다. 또한 Baked Lit 지오메트리를 Lit 또는 Simple 셰이더와 혼합해서 사용하면 성능을 끌어올릴 수 있기는 하지만, 하나의 모델을 유지하는 것이 일반적으로는 가장 좋습니다.
URP의 물리 기반 조명은 쿡 토런스(Cook-Torrance)의 BRDF를 기반으로 합니다. 블린-퐁 모델보다는 많은 리소스를 요구하지만, 머티리얼을 물리적으로 정확하게 렌더링하여 사실적인 표현뿐 아니라 카툰 스타일까지 모든 형태의 비주얼을 강화해 줍니다.
Complex Lit 셰이더는 Lit 셰이더의 상위 세트로, 머티리얼 위에 얇은 투명 레이어를 시뮬레이션하는 클리어 코트 기능을 추가로 제공합니다. 하지만 클리어 코트 기능을 사용하면 URP가 조명을 두 번 평가해야 하기 때문에 Complex Lit 셰이더에 비해 두 배의 리소스가 필요합니다.
한편 Simple Lit 셰이더의 블린-퐁 모델은 오랫동안 활용되었으나 단순하고 물리적으로도 정확하지 않은 모델입니다. 많은 고전 게임이 주로 하드웨어 한계로 인해 이 모델을 사용했습니다. 레트로 비디오 게임처럼 실제 물리와 상관없는 아트 스타일을 사용한다면 블린-퐁 모델은 좋은 선택지가 됩니다.
마지막으로 Baked Lit 셰이더는 라이트맵 또는 라이트 프로브만을 사용하여 오브젝트를 비춥니다. 물리적으로 정확하지는 않지만 적은 리소스로 오브젝트를 렌더링하는 방법입니다. 다만 라이트맵이나 라이트 프로브만을 평가하기 때문에 반사와 동적 광원은 고려하지 못한다는 것이 유일한 단점입니다.
Simple Lit은 다음 상황에서 사용해 볼 수 있습니다.
Lit 또는 Complex Lit은 다음 상황에서 사용해 볼 수 있습니다.
Baked Lit은 다음 상황에서 사용해 볼 수 있습니다.
URP를 더욱 자세히 알아보려면 지금 무료 가이드(한국어)를 확인해 보세요. 빌트인 렌더 파이프라인에서 유니버설 렌더 파이프라인으로 프로젝트를 마이그레이션하려는 숙련된 유니티 개발자와 테크니컬 아티스트에게 적합한 가이드입니다. URP를 상세하게 살펴보고자 하는 신규 유니티 개발자들에게도 적합합니다.