icon
5장 : 조명과 그림자 설정

그림자 옵션과 성능 최적화


이전 절에서 언리얼 엔진의 기본적인 광원 액터들을 살펴보고 레벨에 배치하는 방법을 익혔습니다. 이제 조명만큼이나 중요한 또 다른 핵심 요소, 바로 그림자(Shadows) 에 대해 집중적으로 다룰 시간입니다. 그림자는 레벨의 현실감을 극대화하고, 오브젝트의 형태와 깊이감을 명확히 보여주는 데 필수적입니다. 하지만 그림자는 렌더링에 상당한 성능 부하를 주는 요소이기도 합니다. '나 혼자 언리얼 기본' 교재의 목표는 여러분이 언리얼 엔진의 다양한 그림자 옵션을 이해하고, 시각적 품질과 성능 최적화 사이에서 현명한 균형점을 찾는 방법을 배우는 것입니다. 마치 사진작가가 그림자를 활용하여 작품에 깊이를 더하듯, 언리얼 엔진에서 그림자를 효과적으로 제어해 봅시다.


그림자의 기본 원리 및 중요성

그림자는 빛이 오브젝트에 의해 가려질 때 발생하는 현상으로, 3D 공간의 인지에 매우 중요한 역할을 합니다.

  • 깊이감 표현: 그림자는 오브젝트의 위치와 주변 환경과의 관계를 명확히 보여주어 씬의 깊이감을 향상시킵니다.
  • 형태 강조: 오브젝트의 복잡한 형태를 그림자를 통해 더욱 명확하게 드러냅니다.
  • 현실감 증가: 실제 세계와 마찬가지로 빛과 그림자가 존재함으로써 씬의 사실감을 극대화합니다.
  • 단서 제공: 그림자는 플레이어에게 중요한 오브젝트의 존재나 다가오는 위협에 대한 시각적 단서를 제공할 수 있습니다.

언리얼 엔진은 다양한 방식으로 그림자를 생성하고 렌더링하며, 각 방식은 성능과 품질에 서로 다른 영향을 미칩니다.


그림자 옵션의 이해

그림자의 렌더링 방식은 광원 액터의 Mobility (모빌리티) 설정에 따라 크게 달라집니다.

Static Light의 그림자

  • 특징: 빛과 그림자 정보가 에디터에서 미리 계산되어(베이크되어) 텍스처(라이트맵)에 저장됩니다. 런타임에는 이 저장된 정보를 사용하여 그림자를 표현하므로, 런타임 성능 부하가 거의 없습니다.
  • 장점
    • 가장 성능 효율적입니다.
    • 복잡한 간접광과 부드러운 그림자를 미리 계산하여 사실적인 결과를 얻기 쉽습니다.
  • 단점
    • 빛이 움직이거나 빛에 의해 영향을 받는 오브젝트가 움직이면 그림자가 어색해집니다.
    • 빌드 시간(Light Build)이 필요합니다. (이전 절 참고)
  • 주요 설정
    • Lightmass Settings (라이트매스 설정): Static 라이트에 대한 빌드 품질을 조절합니다. (디테일 패널 하단)
      • Indirect Lighting Intensity: 간접광의 강도.
      • Indirect Lighting Saturation: 간접광의 채도.
      • Indirect Lighting Bounces: 빛이 몇 번 반사될지. (값이 높을수록 사실적이지만 빌드 시간 증가)
  • 활용: 움직이지 않는 건축물 내부의 고정된 조명, 배경 오브젝트 등에 사용됩니다.

Stationary Light의 그림자

  • 특징: 간접광은 Static과 마찬가지로 미리 계산되지만, 그림자는 실시간으로 다이내믹하게 계산됩니다. 하나의 Stationary 라이트는 최대 4개의 겹치는 다이내믹 그림자를 지원합니다.
  • 장점
    • 베이크된 간접광의 이점(성능 효율성)과 실시간 그림자의 유연성을 모두 가집니다.
    • 주요 광원(태양)이 그림자를 드리우는 오브젝트들이 움직여도 그림자가 자연스럽게 업데이트됩니다.
  • 단점
    • Static보다는 성능 비용이 높습니다.
    • 여전히 빌드 시간(Light Build)이 필요합니다.
    • 동시에 영향을 주는 Stationary 라이트의 수에 제한이 있습니다.
  • 주요 설정 (Directional Light의 경우)
    • Cascaded Shadow Maps (CSM): 거리에 따른 그림자 해상도를 조절하는 캐스케이드 그림자 맵 설정입니다.
      • Dynamic Shadow Distance Movable Light / Stationary Light: 동적 그림자가 렌더링될 최대 거리를 조절합니다. 이 거리가 멀수록 성능 부하가 커집니다.
      • Num Cascades: 그림자 맵을 몇 개의 단계로 나눌지 설정합니다. (단계가 많을수록 멀리서도 그림자 품질이 좋지만 성능 부하 증가)
      • Distribution Exponent: 캐스케이드 간의 거리 분포를 조절합니다.
  • 활용: 야외 환경의 태양(Directional Light), 주요 실내 공간의 천장 조명 등 레벨의 주요 광원에 사용됩니다.

Movable Light의 그림자

  • 특징: 모든 빛과 그림자가 실시간으로 계산됩니다. 빌드 과정이 필요 없습니다.
  • 장점
    • 가장 유연하고 동적인 조명 및 그림자 연출이 가능합니다.
    • 오브젝트가 움직이거나 라이트 자체가 움직여도 그림자가 완벽하게 실시간으로 업데이트됩니다.
  • 단점
    • 가장 높은 성능을 요구합니다. 많은 Movable 조명은 프레임 속도를 크게 떨어뜨릴 수 있습니다.
    • 정교한 간접광 표현이 어렵거나, 추가적인 비용이 발생합니다.
  • 주요 설정
    • Movable 라이트는 Lightmass 설정이 없습니다.
    • Shadow Bias, Shadow Filter Sharpen: 그림자의 품질과 부드러움을 조절합니다.
  • 활용: 플레이어의 손전등, 차량 헤드라이트, 폭발 효과, 동적인 낮/밤 시스템의 태양/달 등 실시간 움직임이 필수적인 상황에 사용됩니다.

그림자 성능 최적화 전략

그림자는 성능 병목 현상의 주요 원인 중 하나이므로, 전략적인 최적화가 필수적입니다.

Cast Shadows 설정 제어

  • 불필요한 그림자 비활성화
    • 너무 작아서 그림자가 거의 보이지 않거나, 중요한 시각적 정보를 제공하지 않는 오브젝트들은 그림자를 드리우지 않도록 설정합니다.
    • 액터 선택 > 디테일 패널 > 렌더링(Rendering) 섹션 > Cast Shadows 옵션 비활성화
    • 이는 드로우 콜(Draw Call)을 줄이고 그림자 렌더링 부담을 감소시킵니다.
  • Shadow Casting Disabled Cast Shadow As If Movable: 특정 Static Mesh 액터가 Static Light로부터 그림자를 받지만, Movable Light처럼 다른 Static 액터에 실시간 그림자를 드리우게 할 때 사용합니다. (매우 특수한 경우)

라이트의 감쇠 반경 조절

  • Point LightSpot LightAttenuation Radius를 필요한 만큼만 작게 설정하세요. 빛의 영향 범위가 클수록 더 많은 오브젝트가 그림자 계산에 포함되어 성능 부하가 커집니다.
  • 시각적으로 의미 있는 범위 내에서 반경을 제한하여 불필요한 계산을 줄입니다.

캐스케이드 그림자 맵(CSM) 설정 최적화

Stationary 또는 Movable Directional Light에만 해당됩니다.

  • Dynamic Shadow Distance Movable Light / Stationary Light 조절
    • 동적 그림자가 렌더링될 최대 거리를 조절합니다. 이 거리가 멀수록 성능 부하가 커집니다.
    • 플레이어가 멀리서도 그림자를 봐야 할 필요가 없다면 이 값을 적절히 줄여 성능을 확보하세요.
  • Num Cascades (캐스케이드 수) 조절
    • 캐스케이드 수가 많을수록 그림자 품질은 향상되지만, 성능 비용이 증가합니다.
    • 일반적으로 3~4개의 캐스케이드가 적절한 품질을 제공합니다. 모바일에서는 2개 이하로 줄이기도 합니다.
  • Distribution Exponent (분포 지수) 조절
    • 이 값이 낮을수록 카메라 가까운 곳의 그림자 해상도가 높아지고, 멀리 갈수록 빠르게 낮아집니다.
    • 이 값이 높을수록 전체적으로 그림자 해상도가 고르게 분포됩니다.
    • 이 값을 조절하여 가까운 그림자의 품질을 유지하면서 먼 그림자의 성능을 최적화할 수 있습니다.

그림자 해상도 조절

  • 각 광원 액터의 디테일 패널에서 Shadow Resolution 또는 Shadow Map Resolution과 같은 옵션을 조절하여 그림자 맵의 해상도를 변경할 수 있습니다.
  • 주요 광원은 높은 해상도를, 보조 광원이나 작고 중요하지 않은 광원은 낮은 해상도를 사용합니다.

그림자 캐스팅 방법

  • Lightmass 빌드 시 그림자 품질 관련 설정이나, 광원의 Ray Traced Shadows (레이 트레이싱 그림자) 옵션 등은 매우 높은 성능을 요구하므로, 프로젝트의 목표 사양에 따라 신중하게 활성화해야 합니다.

라이트 빌드의 중요성

Static 및 Stationary 조명에 대한 그림자 및 간접광 정보를 레벨에 적용하기 위해서는 반드시 라이트 빌드(Light Build) 과정을 거쳐야 합니다.

툴바의 '빌드(Build)' 드롭다운 메뉴 클릭.

'라이트만 빌드(Build Lighting Only)' 선택. (단축키: Ctrl + Shift + ,)

빌드 품질 설정: '빌드(Build)' 메뉴 바로 아래에 있는 '라이트 품질(Light Quality)' 드롭다운에서 빌드 품질을 '프리뷰', '중간', '높음', '생산' 등으로 조절할 수 있습니다. 품질이 높을수록 빌드 시간이 길어집니다.

미리보기: 빌드 후 그림자가 레벨에 올바르게 적용되었는지 확인합니다.

: 라이트 빌드는 CPU 자원을 많이 사용하며 시간이 오래 걸릴 수 있습니다. 작은 변경에는 '프리뷰' 품질로 빠르게 확인하고, 최종 빌드 시에만 '생산' 품질을 사용하는 것이 효율적입니다.


그림자 옵션과 성능 최적화는 레벨의 시각적 품질과 게임의 프레임 속도를 동시에 관리하는 복잡하지만 중요한 과정입니다. 이 절에서 배운 내용들을 바탕으로 다양한 광원의 그림자 설정을 조절하고, 라이트 빌드를 실행하면서 시각적 변화와 성능 영향을 직접 체험해 보세요. 최적화는 지속적인 테스트와 조정이 필요한 작업이며, 여러분의 숙련도를 높이는 데 큰 도움이 될 것입니다.