실시간 라이팅 vs 베이크 라이트맵: 메모리와 GPU 연산 비용 비교

실시간 라이팅과 베이크 라이트맵의 VRAM, 텍스처 대역폭, 그림자 렌더링 비용을 비교한다. 씬 규모와 시간 변화 요구사항에 맞춰 모바일부터 PC·콘솔까지 실용적인 라이팅 예산을 정하는 방법을 정리한다.

✓ 복사 완료!
챕터라이팅 & 그림자
난이도중급
상태● 검토 완료
대상 엔진
UnityUnreal Engine
최종 업데이트
실시간 라이팅 vs 베이크 라이트맵: 메모리와 GPU 연산 비용 비교

핵심 요약

실시간 라이팅은 프레임마다 조명과 그림자를 계산하므로 GPU 연산량과 렌더 타깃 대역폭이 늘어난다. 베이크 라이트맵은 조명 결과를 텍스처에 저장해 런타임 연산을 줄이는 대신, VRAM·디스크 용량·텍스처 샘플링 비용을 사용한다.

정적인 환경이라면 라이트맵과 Light Probe를 기본으로 두고 게임플레이에 필요한 태양광 변화·문 열림·손전등 같은 요소만 실시간 조명으로 남기는 하이브리드 구성이 대체로 가장 예측 가능하다.

실시간 라이팅과 베이크 라이트맵은 무엇을 교환하는가?

항목실시간 라이팅베이크 라이트맵
주된 비용픽셀 셰이딩, 그림자 맵 렌더링, 조명 볼륨 계산텍스처 메모리, 스트리밍, 텍스처 샘플링
시간대 변화자연스럽게 지원다시 베이크해야 함
동적 오브젝트직접 조명과 실시간 그림자 처리에 적합Light Probe, Volumetric Lightmap 등 보조 데이터 필요
정적 환경 품질광원 수와 그림자 예산에 제약간접광, 색 번짐, 부드러운 그림자를 비교적 저렴하게 표현
메모리 특성조명 수보다 화면 점유율과 그림자 해상도의 영향이 큼라이트맵 해상도와 압축 포맷에 비례해 증가

실시간 라이팅은 광원이 많다는 사실만으로 느려지지 않는다. 실제 비용은 광원이 덮는 화면 픽셀 수, 그림자 여부, 그림자 맵 해상도, 머티리얼의 셰이더 복잡도에 의해 결정된다. 반대로 베이크 라이트맵은 카메라에 보이지 않는 구역까지 고해상도로 굽는다면 VRAM과 빌드 용량을 낭비한다.

실시간 조명은 매 프레임 그림자 맵과 픽셀 조명을 계산하고 베이크 조명은 라이트맵을 샘플링하는 비교

라이트맵 메모리는 어떻게 계산하는가?

라이트맵의 원본 메모리는 텍스처 면적, 바이트 수, 맵 수로 계산할 수 있다.

M=W×H×B×NM = W \times H \times B \times N
  • W,HW, H: 라이트맵 가로·세로 픽셀 수
  • BB: 픽셀당 바이트 수
  • NN: 라이트맵 장수

예를 들어 2048×2048 라이트맵 4장을 RGBA32로 저장하면 다음과 같다.

2048×2048×4×4=67,108,864 bytes≈64 MiB2048 \times 2048 \times 4 \times 4 = 67,108,864\text{ bytes} \approx 64\text{ MiB}

밉맵을 포함하면 전체 텍스처 메모리는 원본의 약 1.33배가 된다.

Mmip≈43MM_{mip} \approx \frac{4}{3}M

따라서 위 예시는 약 85 MiB가 된다. 실제 사용량은 플랫폼별 압축 포맷, HDR 인코딩, 방향성 라이트맵, 섀도 마스크, 라이트맵 스트리밍 정책에 따라 달라진다.

저장 방식 예시픽셀당 대략적 크기2048×2048 한 장특징
RGBA324 bytes16 MiB품질 확인에는 편하지만 런타임 메모리 부담이 큼
BC7/ASTC 계열 8 bpp약 1 byte약 4 MiB색상 텍스처에 흔히 쓰는 압축 수준
HDR 라이트맵포맷별 상이포맷별 상이밝기 범위와 압축 아티팩트를 함께 검증해야 함

압축 텍스처는 VRAM을 줄이지만 품질 문제가 사라지는 것은 아니다. 얇은 벽 주변의 누수, 저해상도 차트의 블록 노이즈, 과도한 압축으로 인한 색 번짐은 라이트맵 해상도와 UV 패킹부터 점검해야 한다.

실시간 조명은 왜 GPU 비용이 커지는가?

실시간 조명의 기본 비용은 조명 영향을 받는 픽셀 수에 비례한다. 단순화하면 픽셀 조명 비용은 다음처럼 생각할 수 있다.

Clight∝P×L×IC_{light} \propto P \times L \times I
  • PP: 조명이 실제로 덮는 화면 픽셀 수
  • LL: 해당 픽셀에 적용되는 조명 수
  • II: BRDF, 노멀맵, 쿠키, IBL 등 조명 계산 복잡도

Forward 렌더링에서는 한 머티리얼 패스가 여러 광원을 직접 처리하거나 광원 수에 따라 패스가 늘어날 수 있다. Deferred 렌더링은 G-buffer를 만든 뒤 화면 공간에서 조명을 합성하므로 광원이 많은 장면에 유리할 수 있지만 G-buffer의 메모리 대역폭과 투명 오브젝트의 별도 처리 비용이 생긴다. Tiled Deferred나 Clustered Forward는 화면 또는 뷰 프러스텀을 구획화해 광원 후보를 줄이는 방식이다.

그림자를 켜면 비용 구조가 한 단계 더 커진다. 그림자 광원은 보통 메인 카메라 렌더링과 별개로 그림자 맵을 다시 렌더링한다. 방향광 Cascaded Shadow Maps는 캐스케이드 수만큼 가시 물체를 반복 렌더링할 수 있고 점광원은 큐브맵 그림자 때문에 최대 6개 방향을 고려해야 한다.

실시간 기능주된 병목먼저 확인할 값
그림자 방향광그림자 맵 드로우콜, 캐스케이드 렌더링캐스케이드 수, 거리, 해상도
그림자 점광원다방향 그림자 렌더링반경, 그림자 해상도, 동시 개수
많은 비그림자 광원픽셀 조명과 광원 목록화면 점유율, 픽셀당 광원 수
Deferred 렌더링G-buffer 대역폭렌더 타깃 포맷, 해상도, MSAA
투명 VFX오버드로우와 별도 조명 패스화면 점유율, 파티클 레이어 수

어떤 장면에 라이트맵이 더 유리한가?

다음 조건이 많을수록 베이크 라이트맵의 효율이 좋다.

  • 건물, 지형, 소품처럼 위치와 형태가 고정된 환경이 많다.
  • 간접광과 색 번짐이 품질에 중요하다.
  • 모바일, VR, Nintendo Switch처럼 프레임 예산이 작다.
  • 시간대 변화가 없거나 제한적이다.
  • 조명 품질을 예측 가능하게 유지해야 한다.

반대로 낮과 밤 전환, 파괴 가능한 벽, 이동하는 광원, 플레이어가 들고 다니는 손전등은 실시간 조명이 필요하다. 이 경우에도 모든 광원을 동적으로 만들 필요는 없다. 환경의 기본 간접광은 베이크하고 변화가 필요한 광원만 실시간으로 처리한다.

하이브리드 라이팅 예산은 어떻게 정할까?

1. 목표 플랫폼의 프레임 시간을 먼저 고정한다

60 FPS의 전체 프레임 예산은 약 16.67 ms이고 30 FPS는 약 33.33 ms다. 라이팅만 따로 최적화하지 말고 GPU 프레임에서 그림자, 불투명 지오메트리, 투명 VFX, 포스트 프로세싱이 각각 차지하는 시간을 프로파일러로 측정한다.

Tframe=Tgeometry+Tshadow+Tlighting+Ttransparent+TpostT_{frame} = T_{geometry} + T_{shadow} + T_{lighting} + T_{transparent} + T_{post}

엔진의 GPU 프로파일러와 RenderDoc 같은 프레임 캡처 도구로 실제 비용을 확인해야 한다. 에디터 화면의 광원 개수만 보고 판단하면 화면 점유율과 그림자 패스를 놓치기 쉽다.

2. 정적 조명과 동적 조명을 역할별로 분리한다

  • 베이크: 벽, 바닥, 고정 소품의 직접광·간접광
  • Light Probe 또는 Volumetric Lightmap: 이동 캐릭터가 주변 간접광을 받는 용도
  • 실시간 비그림자 광원: 짧은 연출, 상호작용 강조, 작은 범위의 보조광
  • 실시간 그림자 광원: 플레이어 손전등, 핵심 태양광, 게임플레이 판정이 필요한 조명

이 분리는 아트 요구사항을 포기하는 선택이 아니다. 플레이어가 변화를 인지해야 하는 조명에만 런타임 비용을 집중하는 방법이다.

3. 라이트맵은 해상도보다 차트 밀도와 스트리밍을 함께 조정한다

라이트맵 해상도를 올리기 전에 다음을 점검한다.

  1. UV2 차트에 충분한 패딩이 있는지 확인한다.
  2. 플레이어가 가까이 보는 벽과 멀리 있는 배경에 같은 텍셀 밀도를 주고 있지 않은지 확인한다.
  3. 구역 단위 로딩이 가능하다면 해당 구역의 라이트맵만 스트리밍한다.
  4. 방향성 라이트맵과 섀도 마스크가 정말 필요한 구역인지 검토한다.

낮은 라이트맵 해상도를 무조건 권장하는 것은 아니다. 가까운 벽에 광원 경계가 보여 품질 문제가 난다면 그 오브젝트의 UV 차트와 텍셀 밀도를 조정하는 편이 전체 아틀라스 해상도를 올리는 것보다 비용이 작다.

실무 비교: 같은 장면에서 무엇을 측정해야 하는가?

측정 항목실시간 라이팅에서 볼 값베이크 라이트맵에서 볼 값
GPU 시간Shadow Pass, Lighting Pass, 투명 패스 시간Base Pass의 텍스처 샘플링 및 대역폭 변화
VRAM그림자 맵, G-buffer, 쿠키 텍스처라이트맵, 밉맵, 섀도 마스크, 프로브 데이터
디스크·다운로드셰이더 변형과 에셋 크기라이트맵 아틀라스와 압축 후 번들 크기
CPU광원 컬링, 그림자 캐스터 준비스트리밍과 에셋 로딩
품질 위험그림자 앨리어싱, 팝인, 프레임 급락UV 누수, 압축 아티팩트, 동적 오브젝트 부조화

비교 실험은 같은 카메라 위치와 해상도에서 해야 한다. 특히 광원이 화면 밖에 있을 때와 광원 볼륨이 화면을 넓게 덮을 때를 나눠 측정해야 실시간 조명의 최악 비용을 확인할 수 있다.

자주 묻는 질문 (FAQ)

라이트맵은 GPU 비용이 완전히 0인가?

아니다. 라이트맵도 텍스처 샘플링과 메모리 대역폭을 사용한다. 다만 복잡한 조명·그림자 계산과 추가 그림자 맵 렌더링을 줄일 수 있어 정적 환경에서는 대체로 더 저렴하다.

실시간 점광원은 몇 개까지 가능한가?

고정된 개수는 없다. 그림자 여부, 반경, 화면 점유율, Forward·Deferred 경로, 목표 GPU에 따라 달라진다. 최다 광원 수가 아니라 한 픽셀에 겹치는 광원 수와 동시에 렌더링되는 그림자 광원 수를 측정해야 한다.

동적 캐릭터가 베이크된 벽과 어울리지 않는 이유는 무엇인가?

벽은 베이크된 간접광을 받지만 캐릭터는 그 공간의 조명 정보를 받지 못했기 때문이다. Light Probe, Volumetric Lightmap, 필요 시 실시간 접지 그림자를 사용해 조명 연결감을 보완할 수 있다.

정리

정적 환경의 고품질 간접광은 베이크 라이트맵에 맡기고 게임플레이와 연출에서 반드시 변해야 하는 조명만 실시간으로 유지하는 것이 비용 대비 효율이 좋다. 최종 선택은 광원 개수가 아니라 목표 장면에서 측정한 그림자 패스 시간, 픽셀당 광원 수, 라이트맵 VRAM과 스트리밍 사용량으로 결정해야 한다.