머티리얼 LOD
Quality Switch, Feature Level Switch, 플랫폼별 머티리얼 최적화로 다양한 환경에 대응합니다.
Quality Switch 노드
퀄리티 레벨별 머티리얼 분기
QualitySwitch 노드는 프로젝트의 퀄리티 레벨(Low/Medium/High/Epic)에 따라 다른 머티리얼 로직을 적용합니다.
QualitySwitch
Low: Constant(0.5) // 저품질: 상수값
Medium: TextureSample (256x256) // 중품질: 작은 텍스처
High: TextureSample (1024x1024) // 고품질: 원본 텍스처
Epic: DetailTexture + Normal // 최고: 풀 디테일
→ Output
// 실전 활용 예:
// Low: 디테일 노말 없이, 텍스처 1장
// High: 디테일 노말 + 디테일 텍스처 + 풀 노드
// 런타임에 퀄리티 변경:
// sg.MaterialQualityLevel 0/1/2/3
Quality Switch의 각 분기는 별도 셰이더로 컴파일됩니다. 모든 퀄리티 레벨을 연결하면 셰이더 변형이 증가하므로, 필요한 레벨만 연결하세요. Default 핀은 명시적으로 연결되지 않은 레벨의 폴백으로 사용됩니다.
Feature Level Switch
셰이더 모델별 분기
FeatureLevelSwitch는 렌더링 API/셰이더 모델에 따라 분기합니다. 모바일(ES3.1)과 데스크톱(SM5/SM6)에 다른 머티리얼을 적용할 때 사용합니다.
FeatureLevelSwitch
ES3.1: 간단한 디퓨즈만 // 모바일
SM5: PBR + 디테일 노말 // 데스크톱 DX11
SM6: PBR + Substrate 풀셋 // 데스크톱 DX12
→ Output
// 모바일 최적화 전략:
// ES3.1: 텍스처 2장 이하, 노말맵 생략 가능
// SM5: 텍스처 4~6장, 노말맵 포함
// SM6: 제한 없음, 최고 품질
메시 LOD별 머티리얼 교체
거리에 따른 머티리얼 단순화
Static Mesh의 LOD 레벨별로 다른 머티리얼을 할당할 수 있습니다. 먼 거리에서는 단순한 머티리얼로 교체하여 GPU 부하를 줄입니다.
// Static Mesh 에디터에서 LOD별 머티리얼 설정
LOD 0 (근거리):
Material: MI_Rock_HighDetail
// 4장 텍스처 + 디테일 노말 + 패럴랙스
LOD 1 (중거리):
Material: MI_Rock_MedDetail
// 2장 텍스처 + 기본 노말
LOD 2 (원거리):
Material: MI_Rock_LowDetail
// 1장 텍스처만, 상수 Roughness
LOD 3 (매우 먼 거리):
Material: MI_Rock_Minimal
// 상수 색상만, Unlit 가능
UE5의 Nanite는 메시의 지오메트리 LOD를 자동 처리하지만, 머티리얼 LOD는 자동으로 처리하지 않습니다. Nanite 메시라도 원거리에서의 머티리얼 단순화는 수동으로 구성해야 합니다. Quality Switch와 Distance 기반 Lerp를 조합하여 구현하세요.
플랫폼별 머티리얼 전략
PC, 콘솔, 모바일 대응
| 플랫폼 | 권장 텍스처 수 | 인스트럭션 | 특이사항 |
|---|---|---|---|
| PC (High-end) | 8~12 | ~300 | Substrate 풀셋 활용 가능 |
| 콘솔 (PS5/Xbox) | 6~8 | ~200 | 고정 하드웨어, 메모리 관리 중요 |
| 모바일 | 2~4 | ~50 | ES3.1, 텍스처 크기 제한, 발열 주의 |
| VR | 4~6 | ~100 | 양안 렌더링으로 2배 비용, 90fps 필수 |
모바일에서는 Fully Rough(Roughness=1, 스페큘러 비활성화)와 Unlit 셰이딩 모델을 적극 활용하세요. Specular 계산 제거만으로 성능이 크게 향상됩니다. 또한 텍스처는 ASTC/ETC2 압축을 사용하고 크기를 512x512 이하로 유지하세요.
핵심 요약
- QualitySwitch로 Low/Medium/High/Epic 퀄리티별 머티리얼 분기를 만듭니다.
- FeatureLevelSwitch로 ES3.1(모바일)과 SM5/SM6(데스크톱)을 분리합니다.
- 메시 LOD 레벨별로 다른 머티리얼을 할당하여 원거리 오브젝트를 단순화합니다.
- Nanite는 지오메트리 LOD만 자동이며, 머티리얼 LOD는 수동으로 구성해야 합니다.
- 플랫폼별 텍스처 수, 인스트럭션 수 한도를 준수합니다.
도전 과제
배운 내용을 직접 실습해보세요
QualitySwitch 노드를 사용하여 Low 퀄리티에서는 단순 색상, High 퀄리티에서는 복잡한 텍스처 블렌딩을 사용하는 머티리얼을 만드세요. sg.EffectsQuality로 전환을 테스트하세요.
CameraPosition과 ObjectPosition의 거리를 계산하여, 가까울 때는 디테일 텍스처+Normal Map, 먼 거리에서는 단순화된 표현을 사용하는 자동 LOD 시스템을 머티리얼 내에서 구현하세요.
프로젝트의 모든 머티리얼에 대해 LOD 전략을 수립하세요: 마스터 머티리얼에 Quality Switch를 통합하고, Material Instance별 LOD Bias를 설정하여 모바일/PC 크로스 플랫폼 최적화를 구현하세요.