PART 6 · 강의 3/3

시네마틱 최적화

실시간 컷씬의 성능 프로파일링, LOD 전략, 스트리밍, 메모리 관리 기법을 마스터합니다

01

성능 프로파일링

시네마틱 병목 찾기

실시간 컷씬은 게임플레이보다 높은 비주얼 품질을 요구하면서도 목표 프레임 레이트를 유지해야 합니다. 체계적인 프로파일링이 필수입니다.

프로파일링 도구

도구분석 대상사용법
stat unit 프레임 타임 (Game/Draw/GPU) 콘솔 명령어
stat gpu GPU 패스별 비용 콘솔 명령어
Unreal Insights 전체 시스템 프로파일링 -trace=default,gpu 옵션
GPU Visualizer GPU 패스 상세 타이밍 Ctrl+Shift+, (콤마)
stat LevelSequence 시퀀서 평가 비용 콘솔 명령어
RenderDoc / NSight GPU 프레임 캡처 외부 도구 연동
콘솔 명령어 - 시네마틱 프로파일링
// 기본 프레임 타임 확인 stat unit stat fps // GPU 패스별 비용 (가장 유용) stat gpu ProfileGPU // GPU Visualizer 열기 // 시퀀서 평가 비용 stat LevelSequence // 메모리 사용량 stat Memory stat Streaming // 드로우콜 확인 stat SceneRendering // Unreal Insights 트레이스 // 실행 시 -trace=default,gpu,bookmark 추가
컷씬 프로파일링 전략

시퀀서를 재생하면서 stat gpu로 각 프레임의 병목을 확인합니다. 특히 카메라가 바뀌는 시점, 많은 액터가 보이는 와이드 샷, 이펙트가 집중되는 구간에서 프레임 드랍이 발생하기 쉽습니다.

02

LOD와 가시성 관리

카메라 각도에 따른 최적화 전략

컷씬 전용 LOD 전략

컷씬에서는 카메라의 위치와 각도가 사전에 결정되어 있으므로, 카메라에 보이지 않는 오브젝트를 공격적으로 최적화할 수 있습니다.

기법설명절감 효과
Visibility 트랙 샷별로 불필요한 액터 숨김 드로우콜 대폭 감소
LOD Bias 오버라이드 컷씬 중 근접 캐릭터만 LOD 0 유지 폴리곤 수 감소
Nanite LOD Nanite 메시는 자동 LOD 처리 수동 LOD 불필요
Cull Distance Volume 거리 기반 자동 컬링 원거리 오브젝트 제거
HLOD 원거리 메시 병합 드로우콜 + 메모리 절감
시퀀서 - 샷별 가시성 최적화
// 마스터 시퀀스의 각 샷에서: // Shot_010 (클로즈업 샷 - 캐릭터 얼굴만) // - 배경 Static Mesh 그룹: Visibility = Hidden // - 먼 거리 NPC: Visibility = Hidden // - 캐릭터: LOD 0 강제, 머티리얼 최고 품질 // Shot_020 (와이드 샷 - 전체 환경) // - 모든 오브젝트: Visibility = Visible // - 카메라 반대편 오브젝트: Visibility = Hidden // - 원거리 NPC: LOD 2 이상 // 이벤트 트랙으로 LOD 강제 전환: // OnShotStart() { Mesh->SetForcedLodModel(0); } // OnShotEnd() { Mesh->SetForcedLodModel(0); } // 리셋
03

스트리밍과 메모리

Level Streaming과 텍스처 관리

Level Streaming 연동

긴 컷씬에서 장면이 전환될 때 새로운 레벨을 스트리밍하고 이전 레벨을 언로드하는 것이 메모리 관리의 핵심입니다.

시퀀서 이벤트 트랙 - Level Streaming
// Event Track에서 Level Streaming 제어 // Shot_010 시작 전 (미리 로드) // Frame -60: LoadStreamLevel("BattleArena") // Shot_010 시작 // Frame 0: SetStreamLevelVisible("BattleArena", true) // Shot_020으로 전환 (장소 변경) // Frame 200: LoadStreamLevel("Castle") // Frame 240: SetStreamLevelVisible("Castle", true) // Frame 240: SetStreamLevelVisible("BattleArena", false) // Frame 300: UnloadStreamLevel("BattleArena")

텍스처 스트리밍 최적화

콘솔 변수설명컷씬 권장값
r.Streaming.PoolSize 텍스처 스트리밍 풀 (MB) 2048~4096
r.Streaming.FullyLoadUsedTextures 사용 중인 텍스처 풀 로드 1 (컷씬 중)
r.Streaming.HLODStrategy HLOD 스트리밍 전략 프로젝트별 설정
r.Streaming.Boost 스트리밍 속도 부스트 2.0 (컷씬 시작 시)
텍스처 팝핑 방지

컷씬 시작 시 텍스처가 저해상도에서 고해상도로 전환되는 "팝핑" 현상을 방지하려면, 컷씬 시작 전에 r.Streaming.FullyLoadUsedTextures=1을 설정하고 충분한 워밍업 프레임을 확보하세요.

04

렌더링 최적화 기법

GPU 비용 절감과 시각 품질 균형

샷별 렌더링 설정 오버라이드

시퀀서의 Console Variable 트랙을 사용하면 샷별로 렌더링 품질을 다르게 설정할 수 있습니다.

샷별 콘솔 변수 오버라이드 전략
// 클로즈업 샷 (높은 품질) // r.ScreenPercentage = 100 // r.DepthOfFieldQuality = 4 // r.Shadow.MaxResolution = 4096 // 와이드/액션 샷 (성능 우선) // r.ScreenPercentage = 85 (TSR 업스케일) // r.DepthOfFieldQuality = 2 // r.Shadow.MaxResolution = 2048 // 이펙트 집중 샷 (파티클 최적화) // fx.Niagara.QualityLevel = 3 (최고) // r.BloomQuality = 5 // r.LightShaftQuality = 1

Lumen 최적화

설정성능 영향컷씬 권장
r.Lumen.TraceMeshSDFs 높음 1 (디테일 GI 필요 시)
r.Lumen.DiffuseIndirect.Allow 높음 1 (항상 활성)
r.Lumen.Reflections.Allow 중간 1 (반사 표면 있을 때)
r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal 중간 1 (AO 품질 향상)
TSR (Temporal Super Resolution) 활용

UE5의 TSR을 활용하면 r.ScreenPercentage=85로 렌더 해상도를 낮추고 TSR이 업스케일하여 네이티브에 근접한 품질을 유지하면서 GPU 비용을 15~25% 절감할 수 있습니다. 와이드 샷이나 액션 시퀀스에서 특히 효과적입니다.

SUMMARY

핵심 요약

  • stat gpuGPU Visualizer로 시네마틱의 GPU 병목을 정확히 파악한다
  • Visibility 트랙으로 샷별로 카메라에 보이지 않는 오브젝트를 숨겨 드로우콜을 대폭 줄인다
  • Level Streaming을 이벤트 트랙으로 제어하여 장면 전환 시 메모리를 효율적으로 관리한다
  • 텍스처 팝핑 방지를 위해 r.Streaming.FullyLoadUsedTextures=1과 워밍업 프레임을 확보한다
  • Console Variable 트랙으로 클로즈업(고품질)/와이드(성능 우선) 샷별 렌더링 설정을 차별화한다
  • TSR을 활용하면 ScreenPercentage 85%에서도 네이티브에 근접한 품질을 유지할 수 있다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: 시퀀서 성능 프로파일링

Unreal Insights를 사용하여 시퀀서 평가 비용을 측정하세요. 트랙 수, 바인딩 수, 서브시퀀스 깊이에 따른 성능 변화를 기록하고 병목 구간을 식별하세요.

실습 2: LOD와 시퀀서 통합

시네마틱에서 카메라에 보이지 않는 Actor를 자동으로 숨기는 Visibility 전략을 구현하세요. Camera Frustum 기반으로 불필요한 오브젝트를 비활성화하세요.

심화 과제: 렌더링 최적화 파이프라인

대규모 시네마틱(100+ 트랙)의 에디터/런타임 성능을 최적화하세요. Precompiled Evaluation Template, 사용하지 않는 트랙 비활성화, 바인딩 캐싱, Pre-Roll 최소화 전략을 적용하세요.