icon

안동민 개발노트

9장 : 성능 최적화

환경 설정의 성능 영향 분석


에셋과 레벨 구조를 정리했다면, 다음 병목은 전역 환경 설정에서 자주 발생합니다.

포스트 프로세싱, 그림자, 안개, 반사 같은 환경 설정(Environmental Settings)은 화면 품질을 크게 좌우하지만, 동시에 렌더링 비용도 크게 바꿉니다. 같은 맵이라도 어떤 옵션을 켜고 끄는지에 따라 프레임 안정성이 완전히 달라질 수 있습니다.

이번 절에서는 품질과 성능 사이의 균형점을 찾는 기준을 정리합니다. 목표 하드웨어에서 안정적인 프레임을 유지하면서도 의도한 연출을 지키는 설정 방식까지 함께 다룹니다.


환경 설정이 성능에 미치는 영향 이해

언리얼 엔진의 환경 설정들은 주로 GPU 렌더링 파이프라인의 후반부에 영향을 미치며, 전반적인 시각적 품질과 성능의 트레이드오프(Trade-off) 관계에 있습니다.

  • 높은 품질 = 높은 성능 비용: 대부분의 환경 설정은 품질을 높일수록 GPU 연산량이 기하급수적으로 증가합니다.
  • 플랫폼별 목표 설정: PC, 콘솔, 모바일 등 각 플랫폼의 하드웨어 성능을 고려하여 적절한 품질 설정을 목표로 해야 합니다.
  • 시각적 중요도 판단: 어떤 환경 효과가 게임의 핵심적인 미학을 위해 필수적이고, 어떤 효과는 성능을 위해 희생할 수 있는지 판단해야 합니다.

주요 환경 설정과 성능 영향 분석

언리얼 엔진에서 주로 Post Process Volume, Directional Light, Sky Light, Exponential Height Fog 등의 액터를 통해 조정되는 주요 환경 설정들을 살펴봅니다.

포스트 프로세싱 (Post Processing) 최적화

  • 역할: 화면에 최종적으로 렌더링된 이미지에 다양한 시각 효과를 적용하는 단계입니다. (블룸, 앰비언트 오클루전, 스크린 스페이스 리플렉션 등)
  • 성능 영향: GPU 바운드에 가장 큰 영향을 미 미치는 요소 중 하나입니다. 각 효과는 픽셀 셰이더 연산을 통해 구현되므로, 효과가 많고 복잡할수록 GPU 부하가 급증합니다.
  • 분석 도구: ProfileGPU 명령어를 사용하여 PostProcess 항목의 상세 비용을 확인합니다.
  • 최적화 전략
    • 불필요한 효과 비활성화: 사용하지 않거나 눈에 띄지 않는 포스트 프로세싱 효과는 과감히 비활성화합니다.
    • 품질 설정 조정: 각 효과의 강도(Intensity), 품질(Quality), 해상도(Resolution) 등을 낮게 설정합니다. (예: Ambient OcclusionIntensity, Radius, Power 조절; Screen Space ReflectionsIntensityMax Roughness 조절)
    • 블룸(Bloom): IntensityThreshold를 조절하여 발광 효과의 강도를 줄입니다.
    • 피사계 심도(Depth of Field): Diaphragm Blade Count, Focal Distance 등을 조절하여 품질과 성능을 맞춥니다. 동적인 DoF는 비용이 큽니다.
    • 렌즈 플레어(Lens Flare): 필요 없으면 비활성화합니다.

그림자 (Shadows)

  • 역할: 오브젝트에 사실적인 그림자를 드리워 공간감과 깊이감을 더합니다.
  • 성능 영향: 광원 계산과 함께 GPU 부하의 주요 원인입니다. 특히 Movable 광원의 동적 그림자는 실시간으로 섀도우 맵을 렌더링해야 하므로 매우 비쌉니다.
  • 분석 도구: Stat SceneRendering에서 ShadowDepths 항목을 확인하고, ProfileGPU에서 ShadowDepths 섹션의 상세 비용을 분석합니다.
  • 최적화 전략
    • 모빌리티 설정: 가능한 Static 또는 Stationary 광원을 사용하여 그림자를 라이트맵에 굽습니다. Movable 광원은 최소화합니다.
    • 그림자 해상도: Directional Light 등의 광원 설정에서 Shadow Resolution Scale을 낮게 설정합니다. (다소 거칠어지지만 성능 크게 향상)
    • 그림자 거리: Dynamic Shadow Distance Movable Light (Movable 광원) 또는 Dynamic Shadow Distance Stationary Light (Stationary 광원)를 필요한 만큼만 설정하여 먼 거리의 그림자는 더 이상 렌더링되지 않도록 합니다.
    • 그림자 캐스케이드: Num Dynamic Shadow Cascades를 줄여 섀도우 맵 렌더링 횟수를 줄입니다. (보통 2~3개면 충분)
    • Shadow Quality 설정: Project Settings > Rendering > Shadow에서 전역적인 그림자 품질을 조정합니다.

광원 (Lights)

  • 역할: 레벨에 빛을 부여하고 분위기를 조성합니다.
  • 성능 영향: 동적 광원(Movable)의 수와 광원당 영향을 미치는 범위(Attenuation Radius)가 넓을수록 GPU 부하가 커집니다. 각 픽셀에 영향을 미치는 광원 수가 많아질수록 비용이 증가합니다.
  • 분석 도구: Light Complexity 뷰 모드를 사용하여 각 픽셀에 영향을 미치는 광원 수를 시각적으로 확인합니다. Stat SceneRendering에서 Lights 항목을 확인하고, ProfileGPU에서 Lights 섹션의 상세 비용을 분석합니다.
  • 최적화 전략
    • 모빌리티 설정: 9장 2절에서 다룬 것처럼, Static 또는 Stationary 광원을 최대한 활용합니다.
    • 광원 수 제한: 동적 광원의 수를 최소화합니다.
    • 감쇠 반경 (Attenuation Radius): 광원의 Attenuation Radius를 필요한 범위만큼만 작게 설정하여 불필요하게 넓은 영역에 영향을 미치지 않도록 합니다.
    • 빛 투과 비용: Light Function이나 IES Profile과 같은 복잡한 빛 투과 효과는 연산 비용이 있으므로 신중하게 사용합니다.

안개 (Fog) 운용 체크

  • 역할: 공간감, 깊이감, 그리고 분위기를 조성합니다.
  • 성능 영향: Exponential Height Fog는 기본적으로 비교적 효율적이지만, Volumetric Fog (체적 안개)는 GPU 부하가 매우 큽니다.
  • 분석 도구: ProfileGPU에서 Volumetric Fog 또는 Exponential Height Fog 관련 비용을 확인합니다.
  • 최적화 전략
    • Exponential Height Fog 사용: 대부분의 경우 이 액터로 충분하며, 성능 효율적입니다.
    • Volumetric Fog 사용 제한
      • 반드시 필요한 경우에만 활성화하고, Scattering Distribution, Extinction Scale 등의 품질 설정을 낮춥니다.
      • Volumetric Fog Sample CountView Distance를 줄여 해상도와 거리를 제한합니다.

반사 (Reflections)

  • 역할: 표면에 주변 환경이 반사되는 효과를 구현하여 현실감을 높입니다.
  • 성능 영향: Screen Space Reflections (SSR)은 GPU 비용이 크고, Reflection Capture Actors (리플렉션 캡처 액터)는 라이트맵과 비슷하게 빌드 시간이 필요하지만 런타임 비용은 적습니다.
  • 분석 도구: ProfileGPU에서 SSR 또는 Reflection Capture 관련 비용을 확인합니다.
  • 최적화 전략
    • Reflection Capture Actors 사용: 정적인 환경의 반사에는 Box Reflection Capture 또는 Sphere Reflection Capture를 사용하여 미리 반사 정보를 캡처합니다.
    • Screen Space Reflections 설정: Post Process Volume에서 Screen Space ReflectionsIntensity를 낮추거나, Max Roughness 값을 높여 거친 표면에서는 SSR이 발생하지 않도록 합니다. SSR Quality도 조정합니다.
    • Planar Reflections 사용 제한: 매우 정확한 반사(물 표면)에 사용되지만, 두 번 렌더링되므로 매우 비쌉니다. 극도로 제한적으로 사용하거나 비활성화합니다.

전반적인 환경 설정 최적화 전략

  • 프로젝트 세팅 (Project Settings): 편집(Edit) > 프로젝트 세팅(Project Settings)에서 Engine > Rendering, Engine > Physics, Engine > Input 등 전역 설정을 조정해 게임 전체 품질과 성능을 제어할 수 있습니다. (예: Frame Rate, View Distance Scale, Anti-Aliasing Method, Motion Blur)
  • 퀄리티 스케일러블리티 (Scalability): 언리얼 엔진은 Scalability Settings (확장성 설정)을 통해 Low/Medium/High/Epic/Cinematic 등 미리 정의된 품질 프리셋을 제공합니다. 이는 콘솔 명령어 (sg.ResolutionQuality, sg.ViewDistanceQuality 등)를 통해 조절할 수 있습니다.
    • 활용: 플레이어가 게임 내 옵션 메뉴에서 그래픽 품질을 조절할 수 있도록 이러한 확장성 설정을 활용합니다.
  • 지속적인 프로파일링: 개발 과정 내내 Stat 명령어와 ProfileGPU를 사용하여 성능을 모니터링하고, 변경 사항이 성능에 어떤 영향을 미치는지 항상 확인합니다.

프로젝트 규모별 Nanite/Lumen/World Partition 선택 가이드

프로젝트 맥락NaniteLumenWorld Partition
소규모 실내/모바일 중심제한적 사용 또는 비활성SSR/정적 라이팅 우선 검토보통 불필요
중규모 PC/콘솔핵심 오브젝트에 선택 적용주요 씬에 우선 적용 후 비용 측정오픈월드가 아니면 선택
대규모 오픈월드적극 활용 (LOD 제작 부담 감소)품질/성능 타협점 세팅 필수사실상 기본 선택지
선택 순서
  1. 목표 플랫폼의 최소 사양을 먼저 확정합니다.
  2. Lumen을 켠 상태/끈 상태의 GPU 프레임 비용을 비교합니다.
  3. 폴리곤 밀도가 높은 환경에서 Nanite 적용 전후 메모리/프레임을 비교합니다.
  4. 맵 규모가 크고 협업 인원이 많다면 World Partition 도입 여부를 먼저 결정합니다.
  5. 최종적으로 그래픽 품질보다 프레임 안정성(하위 1% 프레임)을 우선합니다.

운영 검토 포인트

환경 옵션은 기능을 많이 켠다보다 타깃 하드웨어에서 프레임 안정성을 확보한다는 기준으로 선택해야 합니다.

특히 Lumen, Nanite, World Partition은 프로젝트 규모와 팀 파이프라인에 맞춰 선택적으로 적용하고, ProfileGPU 측정값으로 최종 결정을 내리는 편이 안전합니다. 품질 옵션을 낮췄을 때도 플레이 가독성과 연출 의도가 유지되는지 확인한 뒤, 최종 설정을 기술 문서에 고정하면 운영 단계의 설정 드리프트를 줄일 수 있습니다.


환경 설정 최적화의 핵심은 시각 품질과 성능 사이의 균형점을 찾는 것입니다.

포스트 프로세싱, 그림자, 광원, 안개, 반사 옵션이 프레임에 주는 영향을 수치로 확인하고, 분석 도구 기반으로 조정해 보세요. 지속적인 측정과 재조정을 통해 다양한 하드웨어에서 안정적인 체감 품질을 확보할 수 있습니다.

목차