PART 7 · 강의 2/3

성능 프로파일링

Niagara Debugger HUD, Unreal Insights, GPU Profiler로 이펙트 성능을 측정하고 최적화합니다.

01

Niagara Debugger

실시간 HUD 오버레이

Niagara Debugger는 에디터와 런타임에서 Niagara 시스템의 상태를 실시간으로 모니터링하는 도구입니다.

Niagara Debugger 활성화
// 방법 1: 에디터 메뉴 WindowNiagara Debugger // 방법 2: 콘솔 명령 fx.Niagara.Debug.Enabled 1 // HUD 표시 항목 설정 fx.Niagara.Debug.HudVerbosity 2 // 0: 끔, 1: 기본, 2: 상세 // 표시되는 정보: System Name // 활성 System 이름 Active Emitters // 활성 Emitter 수 Active Particles // 총 파티클 수 Memory Usage // GPU/CPU 메모리 사용량 Execution State // 각 Emitter의 상태
Debugger 패널 기능

Niagara Debugger 패널에서 특정 System을 선택하면 해당 System만의 상세 정보(Emitter별 파티클 수, 실행 시간 등)를 확인할 수 있습니다. Capture 기능으로 특정 시점의 스냅샷을 저장하여 오프라인에서 분석할 수도 있습니다.

02

Unreal Insights

프레임 타이밍 상세 분석

Unreal Insights는 UE5의 범용 프로파일링 도구로, Niagara 시스템의 CPU 타이밍을 프레임 단위로 분석할 수 있습니다.

Unreal Insights 사용법
// 1. Trace 시작 콘솔: Trace.Start default,niagara // 2. 테스트 시나리오 실행 (문제 재현) // 3. Trace 종료 콘솔: Trace.Stop // 4. Insights 뷰어에서 분석 파일 위치: Saved/Profiling/*.utrace // Niagara 관련 주요 타이머: FNiagaraSystemSimulation::Tick // System 전체 틱 FNiagaraEmitterInstance::Tick // 개별 Emitter 틱 NiagaraGPUSimulation // GPU Sim 디스패치 NiagaraRender // 렌더링
메트릭 위치 임계값 (목표)
Niagara 총 CPU 시간 Game Thread > Niagara < 2ms (60fps 기준)
GPU Sim 시간 GPU > NiagaraGPU < 3ms
개별 System 시간 각 System의 Tick < 0.1ms
총 파티클 수 Niagara Debugger HUD 시나리오별 상이
03

GPU Profiler

GPU 시뮬레이션과 렌더링 비용 분석

GPU 프로파일링 명령
// GPU 프로파일러 활성화 콘솔: ProfileGPU // 또는 Ctrl+Shift+, (쉼표) // Niagara 관련 GPU 타이머: NiagaraGPUSimulation // GPU Compute Sim 전체 시간 NiagaraGPUSimTick // 개별 System GPU 틱 NiagaraGPUSort // 파티클 정렬 비용 NiagaraGPUReadback // GPU→CPU 데이터 전송 // UE5.4+: Timing Insights 콘솔: fx.Niagara.TimingInsights 1 // 각 System과 Material의 GPU 시간을 상세 표시 // Stat 명령으로 간단 모니터링 콘솔: stat Niagara // Niagara 전체 통계 콘솔: stat NiagaraGpu // GPU Sim 통계 콘솔: stat Particles // 파티클 통계
오버드로우 확인

반투명 파티클의 오버드로우(Overdraw)는 GPU 렌더링 비용의 주요 원인입니다. 뷰포트에서 Shader Complexity 모드(Alt + 8)로 오버드로우 정도를 시각적으로 확인하세요. 밝은 빨간색/흰색 영역이 오버드로우가 심한 곳입니다.

04

성능 최적화 체크리스트

프로덕션 이펙트 최적화 순서

최적화 체크리스트 (우선순위 순)
  • 1. Fixed Bounds 설정 - GPU Sim의 Readback 비용 제거
  • 2. 불필요한 Emitter/Renderer 비활성화 - Low 품질에서 비필수 요소 제거
  • 3. 파티클 수 제한 - Max Allocation, Spawn Rate Scale 조절
  • 4. 이펙트 수명 관리 - 완료된 이펙트 즉시 Deactivate/소멸
  • 5. Sort Mode 최적화 - 불필요한 경우 Sort 비활성화 (Additive 머티리얼)
  • 6. 오버드로우 감소 - 파티클 크기 줄이기, Cutout Texture 사용
  • 7. Simulation Stage 최소화 - 불필요한 반복/스테이지 제거
  • 8. Data Interface 비용 확인 - 고비용 DI (Skeletal Mesh) 사용 최소화
  • 9. Component Pool 활용 - 빈번한 이펙트에 풀링 적용
  • 10. Effect Type과 Budget 설정 - 동시 활성 이펙트 수 제한
SUMMARY

핵심 요약

  • Niagara Debugger HUD로 활성 System, 파티클 수, 메모리를 실시간 모니터링합니다.
  • Unreal Insights로 CPU 프레임 타이밍을 상세 분석하고 병목 System을 특정합니다.
  • ProfileGPUTiming Insights로 GPU Sim/렌더링 비용을 측정합니다.
  • stat Niagara 명령으로 간단한 실시간 모니터링이 가능합니다.
  • Shader Complexity 뷰로 반투명 파티클의 오버드로우를 시각적으로 확인합니다.
  • 최적화는 Fixed Bounds > 파티클 수 > 정렬 > 오버드로우 순서로 진행하세요.
PRACTICE

도전 과제

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

실습 1: Niagara 성능 통계 확인

stat NiagaraOverview, stat Niagara 콘솔 명령으로 Niagara 시스템의 프레임당 시뮬레이션 시간, 파티클 수, GPU 시간을 확인하세요. 가장 비용이 높은 이미터를 식별하세요.

실습 2: GPU 프로파일링

stat GPU, ProfileGPU 명령으로 Niagara의 GPU 시뮬레이션과 렌더링 비용을 분석하세요. Compute Shader(시뮬레이션)와 Draw Call(렌더링) 각각의 비용을 확인하세요.

심화 과제: 병목 구간 최적화

Insights 또는 Unreal Frontend의 Profiler로 Niagara 스레드별 상세 프로파일을 캡처하세요. Simulation Stage별 소요 시간을 분석하고, 가장 비용이 큰 모듈의 알고리즘을 최적화하세요.