지형과 환경 요소 최적화
랜드스케이프 LOD·재질·폴리지와 조명·안개·클라우드 비용을 점검해 넓은 레벨의 렌더링 부담을 줄입니다.
지형, 조명, 환경 효과를 쌓아 올렸다면 이제 성능 점검이 필수입니다.
레벨이 풍부해질수록 렌더링 비용과 메모리 사용량도 빠르게 증가합니다.
그래서 최적화(Optimization)는 선택이 아니라, 다양한 사양에서 플레이 품질을 유지하기 위한 기본 작업입니다.
이번 절에서는 지형과 환경 요소를 중심으로 성능 병목을 줄이는 실전 기준을 정리합니다.
지형(Landscape) 최적화
지형과 환경 요소 최적화는 넓은 장면을 유지하면서 렌더링 부담을 줄이는 균형 작업입니다.
랜드스케이프는 넓은 영역을 차지하며 많은 버텍스(Vertex)와 텍스처를 사용하므로, 그 자체로 성능에 큰 영향을 미칠 수 있습니다.
랜드스케이프 컴포넌트 및 섹션 관리
랜드스케이프는 컴포넌트(Component)와 섹션(Section) 단위로 구성됩니다.
동일한 해상도라도 섹션·컴포넌트 구성은 다를 수 있습니다. 컴포넌트별 CPU 처리와 섹션별 드로우 비용, 컬링·LOD 정밀도를 함께 비교합니다.
- 적절한 해상도 선택: 랜드스케이프 모드(Landscape Mode) > Manage 탭에서 랜드스케이프를 생성할 때, 필요한 만큼만 큰 해상도를 선택하세요. 필요 이상으로 넓거나 미세한 랜드스케이프는 불필요한 성능 저하를 가져옵니다.
- 팁: 플레이어가 직접 밟지 않는 아주 먼 배경 지형은 더 낮은 해상도의 랜드스케이프를 사용하거나, 단순히 스태틱 메시로 만든 배경 산을 배치하는 것이 효율적입니다.
- 컴포넌트 크기 균형: 컴포넌트는 렌더링·가시성 관리 단위이며, 하위 섹션에서 LOD를 결정합니다. 컴포넌트 수가 너무 많으면 각 컴포넌트를 처리하는 데 추가적인 CPU 오버헤드가 발생할 수 있습니다. 랜드스케이프의 전체 크기 내에서 컴포넌트의 수를 적절히 조절하는 것이 중요합니다.
- 불필요한 부분 제거: 랜드스케이프 모드 > Manage 탭에서 Delete 툴을 사용하여 레벨에서 전혀 사용되지 않는 랜드스케이프 컴포넌트를 삭제하여 렌더링 범위를 줄일 수 있습니다.
랜드스케이프 재질 최적화
랜드스케이프 재질은 여러 레이어(잔디, 흙, 바위 등)를 혼합하기 때문에 일반 오브젝트 재질보다 복잡하고 성능 비용이 높습니다.
-
복잡도 줄이기
- 레이어 수 제한: 필요한 레이어만 사용하고, 한 랜드스케이프에서 너무 많은 레이어를 혼합하는 것을 피하세요. 실제 컴포넌트에 사용되는 레이어와 출력 경로의 계산·샘플 비용을 확인합니다.
- 간소화된 텍스처 사용: 랜드스케이프 재질에 사용되는 텍스처는 적절한 해상도와 압축 설정을 적용합니다. (3장 4절 참고)
- 가급적 Material Instance 사용: 마스터 랜드스케이프 재질을 만들고, 색상이나 강도 조절은 Material Instance (재질 인스턴스)를 통해 파라미터(Parameter)만 변경하도록 합니다. 일반 파라미터는 재컴파일 없이 바꿀 수 있지만 Static Switch는 변형을 만들 수 있고, 인스턴스 사용만으로 렌더링 비용이 감소하는 것은 아닙니다.
- World Aligned Texture 활용: 특정 디테일 텍스처를 지형 표면에 반복적으로 투영할 때, UV 매핑 대신 World Aligned Texture 노드를 사용하면 월드 좌표를 기준으로 텍스처 크기를 맞출 수 있습니다. 투영 방향·이음새와 추가 샘플 비용을 확인하며, 자동 최적화 기법으로 보지는 않습니다.
환경 요소 (조명, 안개, 클라우드) 최적화
레벨의 분위기를 결정하는 조명과 환경 효과는 시각적 품질만큼이나 성능에 민감하게 반응합니다.
조명 모빌리티(Mobility) 설정
조명 액터의 Mobility (모빌리티) 설정은 성능에 직접적인 영향을 미칩니다.
- 베이크 조명: Static은 고정 조명, Stationary는 위치를 고정하면서 일부 런타임 변화를 허용합니다. 라이트맵·빌드 시간·메모리와 동적 그림자 비용을 함께 봅니다.
- 동적 조명: Movable은 이동·속성 변경에 사용할 수 있습니다. 광원 범위, 그림자 방식, 영향받는 지오메트리가 비용을 좌우합니다.
- Lumen GI: 정적 라이트맵 기여를 사용하지 않습니다. 이 경로에서 무조건 Static으로 낮추라는 규칙은 적용하지 않습니다.
구체적인 변경 가능 범위는 4장 3절의 모빌리티 비교를 참고하고, 현재 렌더링 방식에서 비용이 큰 광원을 먼저 측정합니다.
그림자 설정 최적화
그림자는 렌더링에서 가장 성능 비용이 높은 부분 중 하나입니다.
- Shadow Resolution (그림자 해상도) 조절: Shadow Map·Virtual Shadow Map 등 사용 중인 그림자 방식에 맞는 품질·거리 설정을 확인합니다. 모든 방식이 같은 해상도 옵션으로 제어되지는 않습니다. 중요하지 않은 작은 조명의 그림자 해상도를 낮추거나, 아예 그림자를 끄는 것을 고려합니다.
- Cast Shadows (그림자 드리우기) 비활성화: 중요하지 않은 작은 오브젝트나, 그림자가 거의 눈에 띄지 않는 오브젝트의 그림자 캐스팅을 비활성화하여 드로우 콜(Draw Call)을 줄일 수 있습니다. (액터의 디테일 패널 > Rendering >
Cast Shadows옵션) - Cull Distance Volume 활용: 특정 액터들이 카메라로부터 멀어지면 렌더링되지 않도록 강제로 컬링(Culling)하는 볼륨을 배치할 수 있습니다. 특히 그림자를 드리우는 오브젝트에 효과적입니다.
안개 및 클라우드 최적화
- Volumetric Fog 주의: 볼류메트릭 안개(Volumetric Fog)는 시각적으로 뛰어나지만 매우 높은 성능을 요구합니다. 목표 플랫폼의 사양이 충분하지 않다면, 기본 지수형 높이 안개(Exponential Height Fog)를 사용하는 것을 권장합니다.
- Volumetric Cloud 설정: 볼류메트릭 클라우드(Volumetric Cloud) 액터의 디테일 패널에서 추적 거리(Tracing Max Distance), 샘플 배율과 Scalability 설정을 조절하여 성능을 최적화할 수 있습니다. 너무 먼 거리까지 고품질의 구름을 렌더링할 필요는 없습니다.
기타 환경 최적화 팁
포스트 프로세스 볼륨 최적화
후처리 볼륨은 화면 전체에 적용되는 효과이므로, 과도한 설정은 성능 저하를 유발할 수 있습니다.
- 필요한 효과만 활성화:
Post Process Volume의 디테일 패널에서 필요한 효과만 활성화하고, 불필요한 효과는 비활성화하세요. - 품질 조절:
Bloom,Ambient Occlusion,Screen Space Reflections등 고성능을 요구하는 효과들의 품질을 적절히 조절합니다. 효과의 강도를 줄이는 것과 계산 품질·패스 비용을 줄이는 것은 다르므로 GPU 시간을 비교합니다.
컬링(Culling) 및 LOD 그룹 활용
- Occlusion Culling (오클루전 컬링): 다른 지오메트리에 가려진 오브젝트를 렌더링 대상에서 제외합니다. 충돌용 Blocking Volume을 둔다고 가림 지오메트리가 되는 것은 아닙니다. 거리 컬링, 시야 절두체 컬링과 가림 판정을 구분하고 실제 가시성 결과를 확인합니다.
- LOD 그룹 설정: 일반 스태틱 메시에는 화면상 크기에 맞는 LOD (Level of Detail)를 설정합니다. Nanite 메시의 경로와 지원 범위는 별도로 확인합니다. (3장 4절 3D 모델 최적화 참고)
- 팁: 특히 반복적으로 사용되는 오브젝트(나무, 바위, 풀 등)는 LOD 설정이 매우 중요합니다.
풀(Foliage) 최적화
풀이나 잔디와 같은 Foliage (폴리지)는 레벨을 풍성하게 만들지만, 매우 많은 폴리곤과 드로우 콜을 유발할 수 있습니다.
- 밀도 조절: 폴리지 툴에서 풀의 밀도를 너무 높게 설정하지 마세요.
- 컬링 거리 설정: 각 폴리지 타입의 디테일 패널에서
Cull Distance (컬링 거리)를 설정하여 거리에 따른 렌더링 범위를 정합니다. 일반 폴리지와 Nanite 메시의 적용 범위는 같지 않을 수 있습니다. - 전환 확인: 일반 폴리지의 LOD와 End Cull Distance를 맞추고, 지원되는 재질에서는 PerInstanceFadeAmount로 거리 전환을 완화합니다. 낮은 LOD가 자동으로 메시를 끈다고 가정하지 않습니다.
지형과 환경 요소 최적화는 레벨 품질과 성능을 함께 조정하는 작업입니다.
지형 해상도, 머티리얼 비용, 폴리지 밀도, 조명 비용을 측정 지표와 함께 점검해야 합니다.
이것으로 4장 레벨 디자인의 주요 내용을 마칩니다.
이제는 언리얼 엔진에서 레벨을 만들고, 지형을 조각하며, 조명을 설정하고, 다양한 환경 효과를 추가하고, 심지어 이들을 최적화하는 기본적인 방법까지 익히셨습니다.
| 관측 | 다음에 비교할 대상 |
|---|---|
| GPU 시간 | stat GPU·ProfileGPU에서 그림자·볼류메트릭·Base Pass 비용을 구분합니다. |
| 회전 시 끊김 | 폴리지 밀도·드로우 수뿐 아니라 스트리밍과 셰이더 준비도 확인합니다. |
| 특정 구역 | 지형 재질의 사용 레이어·텍스처 메모리·컴포넌트 가시성을 비교합니다. |
증상만으로 원인을 확정하지 않습니다. 같은 기기·해상도·카메라 경로에서 한 항목만 바꾸고 프레임 시간과 시각적 손실을 다시 비교합니다.