날씨 효과의 성능 최적화
강수 파티클·볼류메트릭 안개·동적 조명과 시간 갱신 비용을 측정해 날씨 품질과 목표 프레임을 균형 있게 조정합니다.
효과를 많이 넣을수록 화면은 풍부해지지만, 프레임은 생각보다 빨리 흔들립니다.
특히 강수 파티클, 볼류메트릭 안개, 동적 조명이 겹치면 GPU와 CPU 모두에서 병목이 발생하기 쉽습니다.
이번 절에서는 날씨 연출을 최대한 유지하면서도 목표 프레임을 지키는 최적화 기준을 정리합니다.
어떤 옵션부터 줄여야 손해가 적은지, 플랫폼마다 어디까지 허용해야 하는지 실무 기준으로 살펴보겠습니다.
이 절을 마치면 보기 좋은 효과와 실행 가능한 성능 사이의 균형을 스스로 잡을 수 있습니다.
날씨 효과 최적화의 중요성
날씨 효과는 파티클, 머티리얼, 조명 업데이트가 겹치면 쉽게 성능 부담이 커집니다.
날씨 시스템은 다양한 파티클, 복잡한 셰이더, 실시간 조명 계산 등 여러 고비용 요소를 포함하므로, 최적화 없이는 게임의 프레임 속도를 크게 저하시킬 수 있습니다.
- 프레임 속도 유지: 플레이어가 쾌적하게 게임을 즐기려면 안정적인 프레임 속도(FPS)가 필수적입니다. 날씨 효과로 인해 FPS가 급락하는 것을 방지해야 합니다.
- 다양한 플랫폼 지원: PC뿐만 아니라 콘솔, 모바일 등 다양한 기기에서 게임이 잘 작동하도록 하려면 플랫폼별 성능 제약을 고려한 최적화가 필요합니다.
- 게임 플레이 경험 향상: 끊김 없는 게임 플레이는 몰입도를 높이고, 부정적인 경험(렉, 버벅임)을 줄여줍니다.
주요 날씨 효과별 최적화 전략
날씨 시스템을 구성하는 각 요소에 대해 최적화 방안을 살펴보겠습니다.
강수량 파티클 시스템 최적화
비, 눈, 우박과 같은 강수량 파티클은 한 번에 수천 개의 파티클을 렌더링하므로 가장 큰 성능 저하 요인 중 하나입니다.
-
스폰 속도와 파티클 수명 조절
- 핵심: 너무 많은 파티클을 한 번에 스폰하거나 유지하지 않도록 합니다. 시각적으로 적절한 타협점을 찾아야 합니다.
- Niagara에서 Spawn Rate·버스트 수·수명을 조절합니다. 단순 정상 상태라면 초당 스폰 수와 평균 수명의 곱이 유지 입자 수의 추정치가 되지만, 루프·킬 조건·컬링에 따라 달라집니다.
-
컬링 거리 (Cull Distance) 설정
- 중요: 카메라로부터 멀리 떨어져서 보이지 않는 파티클은 렌더링하지 않도록 설정합니다.
- Niagara Effect Type의 거리/가시성 컬링과 시스템 override를 확인합니다. Bounds는 효과를 감싸는 영역으로, 너무 작으면 보이는 입자도 잘못 컬링될 수 있습니다.
-
Scalability 사용
- Niagara: Effect Type과 시스템·이미터·렌더러의 Scalability override로 플랫폼/품질별 스폰 배율이나 효과 활성 상태를 정합니다. 거리 기반 변화가 필요하면 해당 바인딩·컬링을 구성하며, Cascade의 LOD 단계와 동일한 기능으로 설명하지 않습니다.
- 멀리 있는 파티클은 더 단순한 재질, 적은 수의 파티클, 또는 더 큰 파티클 크기를 사용하여 시각적 품질 저하를 최소화하면서 성능을 개선합니다.
-
재질 최적화
- 파티클에 사용되는 재질은 가능한 한 단순하게 만듭니다. 복잡한 셰이더 명령이나 투명도(Overdraw)가 많은 재질은 피합니다.
- 알파 블렌딩(Alpha Blending) 대신 마스크드(Masked) 재질을 사용하여 오버드로우를 줄일 수 있다면 고려합니다.
-
CPU 파티클 vs GPU 파티클
- GPU 파티클: 큰 입자 수의 시뮬레이션에 적합할 수 있지만 목표 GPU의 여유와 기능 지원을 확인해야 합니다. GPU Sim이어도 Niagara System/Emitter 스크립트의 CPU 비용은 남습니다.
- 오버드로우 (Overdraw) 최소화: 투명하거나 반투명한 파티클이 서로 많이 겹칠수록 오버드로우가 증가하여 성능 부하가 커집니다. 입자의 화면 점유율·겹침·셰이더 비용을 줄여 비교합니다. 알파만 낮춘 투명 픽셀도 셰이더 작업을 수행할 수 있으므로, 덜 보이는 것이 곧 비용 감소는 아닙니다.
안개 효과 (Fog Effect) 최적화
안개는 장면의 깊이감을 높이지만, 특히 볼류메트릭 안개(Volumetric Fog)는 성능 소모가 큽니다.
-
지수형 높이 안개 (Exponential Height Fog) 우선 활용
- 핵심: 볼류메트릭 계산을 사용하지 않는 높이 안개 경로부터 목표 표현을 만족하는지 확인합니다. 많은 경우 볼류메트릭 안개 대신 지수형 높이 안개만으로도 충분한 시각적 효과를 낼 수 있습니다.
-
볼류메트릭 안개 (Volumetric Fog) 최적화 (사용 시)
- Volumetric Fog 설정은 Exponential Height Fog 컴포넌트에 있습니다. 볼륨 텍스처 해상도에 영향을 주는 Shadow Scalability와
View Distance, 광원별Cast Volumetric Shadow비용을 확인합니다. Albedo·Extinction Scale·광원의Volumetric Scattering Intensity는 주로 매질과 빛의 표현을 바꾸는 값입니다. 샘플 수나 계산 거리를 줄이는 품질 옵션과 구분합니다.- 주의: 볼류메트릭 안개는 높은 성능을 요구하므로, 저사양 플랫폼에서는 사용을 제한하거나 완전히 비활성화하는 것을 고려합니다.
- Volumetric Fog 설정은 Exponential Height Fog 컴포넌트에 있습니다. 볼륨 텍스처 해상도에 영향을 주는 Shadow Scalability와
구름 효과 (Cloud Effect) 최적화
볼류메트릭 클라우드(Volumetric Cloud)는 매우 사실적이지만, 높은 성능 부하를 가집니다.
-
품질 설정 (Quality Settings) 조절
VolumetricCloud액터의 디테일 패널에서View Sample Count Scale,Shadow View Sample Count Scale같은 샘플 배율을 낮춰 성능을 향상시킵니다.
-
추적 범위 제한
- 구름 컴포넌트의
Tracing Start Max Distance,Tracing Max Distance등 추적 범위를 확인합니다. 일반 메시의 Max Draw Distance 컬링과 같은 동작은 아닙니다.
- 구름 컴포넌트의
-
머티리얼 최적화
- 구름 재질 자체의 복잡도를 줄입니다. 복잡한 노이즈 함수나 연산은 피합니다.
- 고려 사항: 특정 아트 스타일이나 성능 제약이 있는 프로젝트에서는 볼류메트릭 클라우드 대신 스카이 박스에 텍스처 형태의 구름을 사용하거나, 단순한 평면 메시 위에 구름 텍스처를 입히는 방식(Old-school Billboards)을 고려할 수 있습니다.
시간 시스템 및 전반적인 환경 최적화
날씨 시스템뿐만 아니라 시간 시스템과 연동되는 전반적인 환경도 함께 최적화해야 합니다.
조명 모빌리티 (Lighting Mobility) 관리
- GI 경로와 변화 범위 확인: 회전하는 Directional Light는 Movable이 필요합니다. 나머지는 런타임 변화와 베이크/Lumen 경로를 보고 선택하며, 그림자를 만드는 광원의 범위와 수를 측정합니다.
Attenuation Radius최적화:Point Light와Spot Light의Attenuation Radius를 필요한 만큼만 작게 설정하여 불필요한 그림자 및 조명 계산을 줄입니다.
후처리 (Post Process) 최적화
- 불필요한 효과 비활성화:
Post Process Volume에서 사용하지 않는 효과(예: 필름 그레인, 렌즈 플레어)는 비활성화하여 렌더링 비용을 줄입니다. - 품질 조절:
Bloom,Ambient Occlusion,Screen Space Reflections등 고성능을 요구하는 효과들의 품질·해상도·활성화 옵션을 비교합니다. Intensity만 낮춰도 해당 렌더 패스 비용이 반드시 줄어드는 것은 아닙니다.
LOD (Level of Detail) 및 컬링 (Culling)
- 메시 LOD 적극 활용: 모든 스태틱 메시(특히 날씨 변화에 반응하는 식물, 바위 등)에 적절한 LOD를 설정하여 멀리서는 낮은 폴리곤 메시를 사용하도록 합니다.
- 오클루전 컬링 (Occlusion Culling): 카메라에 가려져 보이지 않는 오브젝트는 렌더링하지 않도록 언리얼 엔진의 오클루전 컬링 시스템이 잘 작동하는지 확인합니다.
- 컬 디스턴스 볼륨 (Cull Distance Volume): 특정 오브젝트들이 플레이어로부터 일정 거리 이상 멀어지면 강제로 컬링되도록
Cull Distance Volume을 배치할 수 있습니다. 특히 날씨에 영향을 받는 작은 환경 소품에 유용합니다.
머티리얼 파라미터 컬렉션 (MPC) 효율적 사용
- 날씨/시간 시스템에서 지면의 젖은 정도, 눈 쌓임 정도 등을 제어하기 위해
MPC를 사용하는 것은 효율적이지만,MPC에 너무 많은 파라미터를 담거나, 파라미터 변경이 과도하게 자주 일어나지 않도록 주의합니다.
성능 프로파일링 및 디버깅 도구 활용
최적화는 반복적인 과정이므로, 언리얼 엔진의 성능 분석 도구를 적극적으로 활용해야 합니다.
Stat FPS: 현재 프레임 속도를 실시간으로 확인합니다.Stat Unit: CPU 및 GPU의 프레임 시간을 보여주어 어느 쪽이 병목인지 파악합니다.Stat Engine: 엔진의 다양한 시스템(렌더링, 물리 등)이 얼마나 시간을 소요하는지 상세하게 보여줍니다.ProfileGPU: GPU 렌더링 파이프라인의 각 단계에서 시간이 얼마나 소요되는지 상세하게 분석하여, 어느 부분이 GPU 성능을 가장 많이 소모하는지 파악할 수 있습니다. (예:PostProcess,Translucency항목이 높다면 투명 파티클이나 후처리 효과 문제일 수 있음)- Light Complexity / Shader Complexity: 뷰포트의 Optimization Viewmodes에서 선택합니다. 콘솔을 사용할 때는 지원되는
viewmode lightcomplexity,viewmode shadercomplexity명령과 빌드 구성을 확인합니다. 색상은 실제 밀리초 측정값이 아닙니다.
- 같은 카메라·해상도·Scalability로 CPU/GPU 프레임 시간을 기록합니다.
- 강수·안개·구름 중 한 요소만 바꾸어 비용 차이를 비교합니다.
- 병목이 확인된 항목의 스폰·샘플·그림자 범위를 줄이고 시야와 분위기 손실을 확인합니다.
- 목표 기기에서 통과한 설정을 플랫폼별 품질 단계로 저장합니다.
날씨 효과의 성능 최적화는 레벨 디자인의 필수적인 부분이며, 게임의 최종 품질과 플레이어 경험에 직접적인 영향을 미칩니다.
이 절에서 배운 각 날씨 효과별 최적화 전략과 전반적인 환경 최적화 팁을 바탕으로, 여러분의 레벨을 구축하면서 항상 성능을 염두에 두는 습관을 들이세요.
꾸준한 프로파일링과 개선을 통해 시각적으로 아름다우면서도 빠르고 안정적인 게임을 만들 수 있을 것입니다.
이것으로 6장 날씨와 시간 시스템을 마칩니다.
다음 7장에서는 레벨에 배치된 액터들 간의 충돌(Collision)과 물리(Physics) 시스템에 대해 자세히 알아보겠습니다.