이 페이지에서는 로젝트에서 그림자 렌더링 속도를 높이는 데 도움이 되는 최적화 기법을 설명합니다.
그림자 렌더링 시간에 영향을 미치는 요인은 다음과 같습니다.
그림자를 드리우는 가시 오브젝트의 수. 이 숫자는 Max Distance 프로퍼티에 따라 달라집니다.
그림자를 받는 가시 오브젝트의 수
그림자를 드리우는 광원의 수
Cascade Count 프로퍼티 값과 캐스케이드 분할의 크기
메인 광원과 추가 광원의 그림자 해상도
Soft Shadows 프로퍼티
다음 섹션에서는 이러한 요인들과 기타 설정을 사용하여 그림자 렌더링 성능을 최적화하는 방법을 설명합니다.
다음 기법 중 하나를 사용하여 메인 광원이 드리우는 그림자를 최적화합니다.
섀도우 캐스케이드 기능을 사용하면 섀도우 맵 해상도를 높이지 않고도 그림자의 시각적 정확도를 높일 수 있습니다.
Cascade Count 값을 선택할 때는 그림자 캐스케이드가 성능에 미치는 영향을 고려하십시오.
Soft Shadows 프로퍼티를 사용하면 낮은 그림자 해상도 값으로 높은 시각적 정확도를 얻을 수 있습니다.
Soft Shadows 프로퍼티는 모바일 플랫폼, 테더링되지 않은__ XR__XR은 VR(가상 현실), AR(증강 현실)과 MR(혼합 현실) 애플리케이션을 모두 포함하는 포괄적인 용어입니다. 이러한 형태의 인터랙티브 애플리케이션을 지원하는 기기를 XR 기기라고 합니다. 자세한 정보
See in Glossary 플랫폼 등, 타일 기반 렌더링을 사용하는 플랫폼의 성능에 큰 영향을 미칠 수 있습니다. 타겟 플랫폼이 타일 기반 렌더링을 사용하는 경우, 애플리케이션을 프로파일링하여 이 설정이 성능에 미치는 영향을 확인하십시오.
원하는 예술적 스타일에 맞게 낮은 그림자 해상도와 Soft Shadows 옵션을 적절히 조합해 사용할 수 있습니다. 그림자 해상도가 높으면 그림자가 더욱 세밀해지지만 더욱 날카롭게 변하기도 하는데, 이는 특정 비주얼 스타일에는 적합하지 않을 수 있습니다.
예를 들어 다음 그림에서 왼쪽 이미지의 그림자 해상도는 4096 픽셀이고, 오른쪽 이미지의 그림자 해상도는 1024 픽셀이며 Soft Shadows 옵션이 활성화되어 있습니다.

그림자 해상도가 낮으면 그림자가 부드러워지며, 이는 일부 씬에 적합할 수 있습니다. 왼쪽: 해상도 4096 픽셀, 오른쪽: 해상도 1024 픽셀.
메인 광원 그림자의 해상도와 최대 거리를 최적화하는 자세한 방법은 URP의 그림자 해상도 설정을 참조하십시오.
다음 기법 중 하나를 사용하여 추가 광원이 드리우는 그림자를 최적화합니다.
Unity는 씬을 여섯 방향으로 캡처하여 점 광원 대한 섀도우 맵을 생성합니다. 이 작업이 성능에 미치는 영향은 6개 스폿 광원의 그림자를 렌더링하는 것과 비슷합니다. 모바일 플랫폼에서 이는 프레임당 사용 가능한 리소스의 상당 부분을 소모합니다.
모바일 플랫폼에서 그림자를 드리우는 점 광원의 수를 줄이거나 그러한 광원을 완전히 제거하십시오.
자세한 내용은 다음 페이지를 참조하십시오.
성능을 개선하려면 스크립팅을 사용하여 카메라까지의 거리 또는 기타 조건에 따라 그림자를 드리우는 실시간 광원을 끌 수 있습니다. 이렇게 하려면 Light.enabled 프로퍼티를 사용하십시오.
광원이 튀는 현상을 방지하려면 광원의 intensity 프로퍼티를 페이드인하거나 페이드아웃할 수 있습니다.
이 기법의 예시는 유니버설 3D 샘플 프로젝트의 Garden 씬에 있는 야외 램프의 점 광원에 연결된 DynamicLightController.cs 스크립트를 참조하십시오.
대부분의 오브젝트가 정적인 영역에서는 광원 쿠키가 있는 점 광원 또는 스폿 광원을 실시간 그림자를 드리우는 광원 대신 사용할 수 있습니다.
광원 쿠키를 설정하려면 Light 컴포넌트의 Cookie 프로퍼티를 사용하십시오.
자세한 내용은 쿠키 소개를 참조하십시오.
Light Explorer 창에서는 씬에 존재하는 모든 광원, 반사 및 라이트 프로브, 발광 머티리얼이 있는 오브젝트의 개요를 한눈에 살펴볼 수 있습니다. 이 툴을 사용하여 씬에서 특정 프로퍼티가 있는 광원을 빠르게 찾을 수 있습니다.
이 섹션에서는 메인 광원 또는 추가 광원에만 국한되지 않는 일반적인 최적화 기법을 다룹니다.
실시간 그림자를 드리우는 오브젝트의 개수는 그림자 렌더링 성능에 상당한 영향을 미칩니다.
오브젝트가 베이크된 그림자와 실시간 그림자 모두를 완전히 드리우지 못하게 하려면 다음을 수행하십시오.
게임 오브젝트에서 Mesh Renderer > Lighting으로 이동합니다.
Cast Shadows 프로퍼티를 Off로 설정합니다.
게임 오브젝트가 베이크된 그림자만 드리우도록 설정하려면 섀도우 마스크 조명 모드를 사용하십시오.
섀도우 마스크 조명 모드를 사용하면 런타임 시점에 베이크된 그림자와 실시간 그림자를 결합하여 그림자 렌더링 성능을 향상할 수 있습니다.
섀도우 마스크 조명 모드에 대한 일반적 정보는 조명 모드: 섀도우 마스크 페이지를 참조하십시오.
Unity는 다음 조건을 사용하여 광원 또는 게임 오브젝트가 섀도우 마스크 마스크에 기여하는지 파악합니다.
광원의 조명 모드는 Mixed여야 합니다.
광원이 그림자를 드리우도록 설정되어야 합니다(광원의 Shadow Type 프로퍼티가 No Shadows여서는 안 됨).
게임 오브젝트는 반드시 정적이어야 합니다.
씬 뷰에서 기존 섀도우 마스크 마스크를 보려면 다음 단계를 따르십시오.
섀도우 마스크는 4개의 채널(r,g,b,a)을 사용하므로 최대 4개의 광원이 섀도우 마스크 마스크에서 오버랩될 수 있습니다. 영역에 오버랩되는 혼합 광원이 4개 이상 있을 경우, Unity는 추가 광원들을 Mixed 모드에서 Baked 모드로 전환합니다.
특정 영역에 영향을 미치는 광원의 개수를 확인하려면 Rendering Debugger의 Lighting Complexity 뷰를 사용하십시오.
시각적 정확도와 성능을 최적으로 조합하려면 섀도우 마스크 모드를 라이트 프로브와 함께 사용하십시오.
중급형 또는 보급형 모바일 플랫폼에서는 성능을 위해 Shadowmask 모드를 사용하는 것이 적합할 수 있습니다.
고성능 모바일 플랫폼이나 PC 및 콘솔 플랫폼에서는 Distance Shadowmask 모드를 사용하여 시각적 정확도를 높일 수 있습니다.
자세한 내용은 조명 모드: 섀도우 마스크 페이지를 참조하십시오.
섀도우 마스크 조명 모드를 사용하는 경우, 특정 게임 오브젝트가 실시간 그림자를 드리우지 않으면서 베이크된 그림자에 기여하도록 설정할 수 있습니다. 방법은 다음과 같습니다.
Project Settings > Quality로 이동해 Shadowmask Mode 프로퍼티를 Shadowmask로 설정합니다.
이 모드에서 Unity는 Contribute Global Illumination 프로퍼티가 활성화된 모든 게임 오브젝트에 베이크된 그림자를 사용합니다.
게임 오브젝트의 Mesh Renderer 컴포넌트에서 Cast Shadows 프로퍼티를 On으로 설정합니다.
Mesh Renderer 컴포넌트에서 Contribute Global Illumination를 활성화합니다.
조명을 생성하여 변경 사항을 적용합니다.
이제 Unity가 카메라까지의 거리에 관계없이 런타임 시점에 이 게임 오브젝트를 베이크된 그림자로 렌더링합니다.
복잡한 메시가 있는 오브젝트에서 간단한 그림자를 드리우려면 다음 과정을 따르십시오.
폴리곤이 적은 단순화된 메시 버전을 생성합니다.
단순화된 메시에 머티리얼을 할당합니다. Unity가 단순화된 메시를 렌더링하지 않으므로 해당 머티리얼은 중요하지 않습니다.
원본 메시에서 Cast Shadows 프로퍼티를 Off로 설정합니다.
단순화된 메시를 원래 메시와 동일한 위치에 배치합니다.
단순화된 메시에서 Cast Shadows 프로퍼티를 Shadows Only로 설정합니다.
이 설정을 사용하면 Unity가 원본 메시를 렌더링하지만, 단순화된 메시를 사용하여 그림자를 렌더링합니다.
다음 Unity 툴을 사용하여 조명 및 그림자 렌더링을 프로파일링할 수 있습니다.
더욱 자세한 프로파일링이 필요하다면 타겟 플랫폼에 대해 사용할 수 있는 플랫폼별 프로파일러와 디버깅 툴을 사용하십시오. 자세한 내용은 프로파일링 툴을 참조하십시오.