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를 사용하여 성능을 모니터링하고, 변경 사항이 성능에 어떤 영향을 미치는지 항상 확인합니다.

환경 설정의 성능 영향 분석은 시각적 품질과 성능 사이의 섬세한 균형을 찾는 과정입니다. 이 절에서 배운 포스트 프로세싱, 그림자, 광원, 안개, 반사 등의 주요 환경 설정들이 성능에 미치는 영향을 이해하고, 언리얼 엔진의 분석 도구를 활용하여 이를 신중하게 조정해야 합니다. 여러분의 게임이 다양한 하드웨어에서 최적의 프레임 속도와 시각적 만족도를 제공할 수 있도록 끊임없이 테스트하고 최적화하세요.