안동민 개발노트

본문 시작

실시간 조명 및 사전 계산 조명

베이크 조명과 실시간 조명의 유연성·품질·런타임 비용을 비교하고 프로젝트 변화량에 맞는 하이브리드 전략을 선택합니다.

조명 디버깅까지 익혔다면, 이제 조명 처리 방식 자체를 선택해야 합니다.

이번 절에서는 실시간 조명(Real-time Lighting)과 사전 계산 조명(Precomputed Lighting)을 비교합니다.

두 방식은 품질, 유연성, 성능 비용에서 성격이 다르기 때문에 프로젝트 목표에 맞춰 조합해야 합니다.

즉, 이 절의 핵심은 기능 설명이 아니라 언제 어떤 방식을 선택할지 판단 기준입니다.


사전 계산 조명 / 베이크된 조명

사전 계산 조명(Precomputed Lighting)은 게임이나 콘텐츠가 실행되기 전에 에디터에서 조명 정보를 미리 계산하여 오브젝트에 저장하는 방식입니다.

언리얼 엔진에서는 주로 라이트매스(Lightmass) 시스템을 통해 구현됩니다.

사전 계산 조명 동작 원리

  • 라이트 빌드: 에디터에서 Build Lighting 과정을 통해 조명(특히 Static 및 Stationary 조명)의 직접광 및 간접광 정보를 계산합니다.
  • 라이트맵(Lightmap): 계산된 조명 정보는 주로 Lightmap이라는 텍스처에 저장됩니다. 각 스태틱 메시(Static Mesh)는 자신만의 라이트맵 UV 채널을 사용하여 이 텍스처를 참조합니다.
  • 이동 물체의 간접광: 베이크 경로에서는 Volumetric Lightmap 같은 공간의 사전 계산 조명 데이터를 샘플링할 수 있습니다. 저해상도 메시를 자동으로 버텍스 베이크로 전환하는 기능으로 이해하지 않습니다.

사전 계산 조명 장점

뛰어난 성능 효율성: 사전 계산한 부분의 실시간 계산을 줄일 수 있습니다. 라이트맵 메모리·샘플링과 함께 사용하는 동적 조명 비용은 남습니다.

이는 특히 모바일이나 저사양 플랫폼에서 중요합니다.

고품질 간접광(Global Illumination): 라이트매스를 통해 복잡한 다중 반사 간접광(GI)을 매우 사실적이고 부드럽게 표현할 수 있습니다.

장면이 고정되어 있을 때 빌드 시간을 써서 런타임 간접광 계산을 줄이는 선택입니다.

부드러운 그림자: 충분한 라이트맵 해상도·UV 패딩·빌드 품질을 확보하면 부드러운 그림자를 얻을 수 있습니다. 베이크만으로 계단 현상이 없어지는 것은 아닙니다.

사전 계산 조명 단점

정적인 환경에만 적합: 빛의 위치, 색상, 강도나, 빛에 영향을 받는 오브젝트의 위치가 런타임에 변하면 베이크된 조명과 그림자가 업데이트되지 않아 어색해집니다.

긴 빌드 시간: 레벨의 크기와 복잡도, GI 품질 설정에 따라 라이트 빌드 시간이 매우 오래 걸릴 수 있습니다.

메모리 사용: 라이트맵 텍스처가 저장되어야 하므로 추가적인 메모리를 사용합니다.

라이트맵 UV 필요: 라이트맵에 베이크할 메시에는 겹치지 않는(Non-overlapping) 라이트맵 UV 채널이 필요합니다. 완전 동적 경로의 모든 Static Mesh 에셋에 요구되는 조건은 아닙니다. (3장 4절 3D 모델 최적화 참고)

사전 계산 조명에 쓰는 액터

  • Static (정적) 조명: 모든 빛과 그림자가 완전히 베이크됩니다.
  • Stationary (정지) 조명: 간접광은 베이크하고 직접광은 동적으로 계산합니다. 그림자는 기존 Shadow Maps 경로에서 정적·동적 방식을 조합하며, VSM에서는 직접 그림자도 동적으로 평가합니다.

실시간 조명 / 다이내믹 조명

실시간 조명(Real-time Lighting)은 게임이나 콘텐츠가 실행되는 동안 매 프레임마다 조명 정보를 계산하여 렌더링하는 방식입니다.

실시간 조명 동작 원리

  • 쉐이더 계산: 오브젝트의 재질 쉐이더가 각 프레임마다 광원의 위치, 특성, 그리고 카메라 시점에 따라 빛과 그림자를 실시간으로 계산합니다.
  • 그림자 맵 / 쉐도우 캐스케이드: 실시간 그림자는 주로 그림자 맵(Shadow Map)이나 캐스케이드 그림자 맵(Cascaded Shadow Maps, CSM)과 같은 기술을 사용하여 구현됩니다.

실시간 조명 장점

동적인 환경 지원: 빛의 위치, 색상, 강도가 실시간으로 변하거나, 오브젝트가 움직여도 조명과 그림자가 즉시 업데이트되어 매우 유연한 연출이 가능합니다. (예: 낮/밤 주기, 플레이어 손전등)

빌드 시간 불필요: 조명 빌드 과정이 없어 작업 흐름이 빠릅니다.

실시간 조명 단점

높은 성능 요구: 매 프레임마다 복잡한 조명 및 그림자 계산을 수행해야 하므로 CPU 및 GPU에 큰 부하를 줍니다.

많은 수의 실시간 조명은 프레임 속도를 크게 떨어뜨릴 수 있습니다.

간접광 표현의 어려움: 직접광은 쉽게 표현되지만, 빛의 다중 반사로 인한 사실적인 간접광(GI)은 구현하기 어렵거나, Lumen과 같은 고성능 실시간 GI 솔루션을 사용해야 합니다 (높은 사양 요구).

그림자 품질: 미리 계산된 그림자보다 품질이 떨어질 수 있습니다 (계단 현상, 필터링 문제 등).

이를 완화하기 위한 기술(CSM 등)도 성능 비용이 따릅니다.

실시간 조명에 쓰는 액터

  • Movable (이동 가능) 조명: 모든 빛과 그림자가 완전히 실시간으로 계산됩니다.

하이브리드 조명 시스템 및 최적화 전략

실시간 조명과 사전 계산 조명은 장면 변화 여부와 목표 성능에 따라 선택이 달라집니다.

베이크 경로에서는 사전 계산 조명과 동적 직접광을 조합할 수 있습니다. Lumen GI를 사용하는 완전 동적 경로는 정적 라이트맵 기여를 사용하지 않으므로, 먼저 프로젝트의 GI 경로를 결정합니다.

각 조명 모빌리티의 역할 분담

  • Static (정적)
    • 역할: 레벨의 기본 주변광과 정적인 오브젝트에 대한 간접광을 제공합니다.
    • 활용: 건축물의 벽, 바닥, 천장 등 움직이지 않는 구조물, 고정된 환경 소품.
    • 최적화: 베이크 경로에서 고정된 조명을 맡기되 라이트맵 메모리와 빌드 시간을 함께 관리합니다.
  • Stationary (정지)
    • 역할: 레벨의 주요 광원(태양 등)으로, 베이크된 간접광과 실시간 다이내믹 그림자를 제공합니다.
    • 활용: Directional Light, 레벨의 주요 포인트/스포트 라이트.
    • 최적화: 기존 Shadow Maps에서는 동일 지오메트리에 겹치는 Stationary의 정적 그림자 채널이 최대 4개 이하입니다. 전체 레벨의 광원 개수와 구분하고 Overlap 보기로 확인합니다.
  • Movable (이동 가능)
    • 역할: 플레이어의 손전등, 총구 화염, 폭발, 움직이는 차량 헤드라이트 등 런타임에 이동·회전해야 하는 광원에 사용합니다. 강도만 바꾼다면 Stationary도 가능하며, 완전 동적 프로젝트에서 Movable을 효과 전용으로 제한할 이유는 없습니다.
    • 최적화: 최소한의 Movable 조명만 사용하고, Attenuation Radius를 최대한 줄여 영향 범위를 제한합니다.

주요 최적화 팁 (재강조)

모빌리티 설정의 현명한 선택: GI 경로를 정한 뒤 위치·회전·색·강도 중 무엇이 바뀌는지에 맞춰 모빌리티를 선택하세요.

라이트 빌드: 베이크에 영향을 주는 Static 또는 Stationary 조명 설정을 변경했다면 Build Lighting을 수행하여 최신 조명 정보를 레벨에 적용하고, 빌드 품질을 적절히 조절합니다.

라이트맵 UV 최적화: 베이크할 메시가 적절한 라이트맵 UV 채널을 가지고 있는지, 겹치는 부분이 없는지 확인합니다. (3장 4절 3D 모델 최적화, 5장 4절 라이트맵 밀도 시각화 참고)

그림자 품질 vs 성능: 기존 CSM을 사용한다면 Directional Light의 Dynamic Shadow Distance와 Num Cascades를 조절하여 그림자 품질과 성능 사이의 균형을 찾습니다.

불필요한 오브젝트의 Cast Shadows를 비활성화합니다.

Attenuation Radius 제한: Point Light 및 Spot Light의 Attenuation Radius를 필요한 만큼만 설정하여 오버랩되는 동적 조명의 수를 줄입니다.

Lumen (UE5): 언리얼 엔진 5를 사용하고 실시간 GI가 필수적이라면 Lumen을 고려하지만, 이는 높은 성능 요구사항이 따르므로 목표 플랫폼을 고려하여 결정해야 합니다.

선택할 경로먼저 확인할 비용과 제약
베이크와 동적 직접광 조합라이트맵 UV·메모리, 재빌드 시간, 런타임에 바뀌지 않는 간접광
Lumen GI 중심목표 플랫폼 지원, 장면 추적·갱신 비용, 큰 변화가 캐시에 반영되는 시간

이 표는 성능 순위가 아닙니다. 같은 장면과 목표 기기에서 필요한 변화가 유지되는지 비교합니다.


실시간 조명과 사전 계산 조명은 언리얼 엔진 조명 시스템의 양대 산맥입니다.

이 두 가지 방식의 차이점을 명확히 이해하고, 여러분의 프로젝트 특성과 목표에 맞춰 어떤 조명 모빌리티를 선택하고 어떻게 조합할지 결정하는 것이 중요합니다.

효율적인 조명 설정은 시각적 품질을 극대화하면서도 게임의 안정적인 프레임 속도를 유지하는 데 결정적인 역할을 합니다.