Material Layer Blend
Material Attributes, Layer Blend 시스템으로 모듈형 머티리얼 레이어링을 구현합니다.
Material Attributes
머티리얼의 모든 속성을 하나의 핀으로
Material Attributes는 Base Color, Metallic, Roughness, Normal 등 모든 머티리얼 속성을 하나의 구조체로 묶어 전달하는 시스템입니다. 이를 통해 완전한 머티리얼 세트를 하나의 와이어로 연결할 수 있습니다.
// MakeMaterialAttributes 노드
MakeMaterialAttributes
BaseColor: [텍스처]
Metallic: 0
Roughness: [텍스처]
Normal: [노말맵]
→ Material Attributes (보라색 핀)
// BreakMaterialAttributes 노드
BreakMaterialAttributes
Material Attributes → 개별 속성으로 분해
→ BaseColor, Metallic, Roughness, Normal...
메인 머티리얼 노드의 디테일 패널에서 Use Material Attributes를 체크하면, 개별 입력 핀 대신 하나의 Material Attributes 핀이 나타납니다.
Material Layer 시스템
레이어와 블렌드 에셋
UE5의 Material Layer 시스템은 머티리얼을 독립적인 레이어로 분리하고, 블렌드 에셋으로 결합하는 구조입니다.
| 에셋 유형 | 역할 | 설명 |
|---|---|---|
| Material Layer | 개별 재질 정의 | 독립적인 머티리얼 (돌, 모래, 금속 등) |
| Material Layer Blend | 블렌딩 로직 | 레이어 간 블렌딩 마스크와 방법 정의 |
| Material (Layered) | 최종 합성 | 레이어 + 블렌드를 조합한 최종 머티리얼 |
// 1. Material Layer 에셋 생성
// 콘텐츠 브라우저 → 우클릭 → Materials → Material Layer
ML_Rock: 바위 레이어
MakeMaterialAttributes → Output
ML_Moss: 이끼 레이어
MakeMaterialAttributes → Output
// 2. Material Layer Blend 에셋 생성
MLB_HeightBlend: 높이 기반 블렌딩
입력: Material Attributes (A, B)
→ 높이 마스크 기반 Lerp
→ Output
// 3. 최종 머티리얼에서 조합
Material Layer Blend Node
Layer 0: ML_Rock
Layer 1: ML_Moss
Blend 0→1: MLB_HeightBlend
→ Material Attributes
MatLayerBlend_Standard 활용
내장 블렌딩 함수 사용하기
UE5는 자주 사용되는 블렌딩 패턴을 머티리얼 함수로 제공합니다.
// 기본 제공 블렌딩 머티리얼 함수들
MatLayerBlend_Standard
→ 단순 알파 기반 Lerp 블렌딩
MatLayerBlend_HeightLerp
→ 높이맵 기반 블렌딩 (Height → 날카로운 경계)
MatLayerBlend_10Layer
→ 최대 10개 레이어 동시 블렌딩
// Height 블렌딩이 Lerp보다 자연스러운 이유:
// 높이맵을 사용하면 "먼저 튀어나온 부분"이
// 먼저 다른 재질로 전환되어
// 물리적으로 자연스러운 경계를 형성합니다
Material Layer 시스템의 핵심 장점은 인스턴스에서 레이어 에셋을 교체할 수 있다는 것입니다. 하나의 마스터 머티리얼에서 바위+모래, 바위+눈, 바위+이끼 등의 인스턴스를 레이어 교체만으로 만들 수 있습니다.
Landscape Material과의 연동
지형 머티리얼에서의 레이어 활용
Landscape에서 Material Layer 시스템을 사용하면 페인팅 가능한 지형 머티리얼을 효율적으로 구성할 수 있습니다.
// Landscape 머티리얼 구성
LandscapeLayerCoords
→ UV 좌표 (지형 크기에 맞게 자동 스케일)
LandscapeLayerBlend (노드)
Layer: "Grass" → ML_Grass 레이어
Layer: "Rock" → ML_Rock 레이어
Layer: "Sand" → ML_Sand 레이어
Blend Type: LB_HeightBlend // 높이 기반
// 인스턴스에서 각 레이어의 텍스처/파라미터 조정
// Landscape 도구에서 레이어 웨이트 페인팅
지형 머티리얼은 레이어 수에 비례하여 텍스처 샘플러가 증가합니다. SM5에서 최대 16개 샘플러 제한이 있으므로, 레이어당 텍스처 수를 최소화하거나 Virtual Texture를 활용하세요.
핵심 요약
- Material Attributes는 모든 머티리얼 속성을 하나의 구조체로 묶어 전달합니다.
- Material Layer 에셋은 독립적인 재질을, Layer Blend 에셋은 블렌딩 로직을 정의합니다.
- Height 기반 블렌딩은 단순 Lerp보다 물리적으로 자연스러운 경계를 만듭니다.
- 인스턴스에서 레이어 에셋을 교체하여 다양한 변형을 효율적으로 만들 수 있습니다.
- Landscape 머티리얼에서 텍스처 샘플러 제한(16개)에 주의합니다.
도전 과제
배운 내용을 직접 실습해보세요
Material Layer 2개(베이스 금속, 녹)와 Material Layer Blend 1개를 만드세요. Height Map을 가중치로 사용하여 녹이 슬 부분을 제어하고, 파라미터로 녹의 범위를 조절하세요.
잔디, 흙, 바위 3개의 Material Layer를 만들고 2개의 Blend로 연결하세요. 각 레이어의 가중치를 Vertex Color의 R, G 채널로 제어하여 런타임에 지형 페인팅이 가능하도록 구현하세요.
프로젝트에서 재사용 가능한 Material Layer 라이브러리(금속, 나무, 직물, 돌, 플라스틱)를 최소 5종 제작하고, 하나의 마스터 머티리얼에서 레이어를 교체만으로 다양한 표면을 만드세요.