Base Color, Metallic, Roughness
PBR 워크플로우의 3대 핵심 입력을 올바르게 설정하는 방법과 실전 가이드라인을 학습합니다.
Base Color
표면의 기본 색상 (Albedo)
Base Color는 조명이나 그림자 정보 없이 표면 자체의 고유 색상을 정의합니다. sRGB 색공간의 텍스처를 사용하며, 셰이더 내부에서 Linear 공간으로 변환됩니다.
올바른 Base Color 값 범위
| 재질 유형 | sRGB 밝기 범위 | 주의사항 |
|---|---|---|
| 비금속 (Dielectric) | 50~240 (sRGB) | 너무 어두우면 비현실적 (숯조차 50 이상) |
| 금속 (Metal) | 180~255 (sRGB) | 금속의 Base Color는 반사 색상으로 사용 |
Base Color 텍스처에 그림자나 하이라이트가 베이크되어 있으면 PBR 라이팅과 충돌합니다. 조명이 변하면 어색하게 보입니다. 순수한 Albedo 정보만 포함해야 합니다. AO(Ambient Occlusion)도 별도 채널로 분리하세요.
대표 재질의 Base Color 참고값
| 재질 | Linear RGB (근사) | sRGB |
|---|---|---|
| 신선한 콘크리트 | 0.51, 0.51, 0.51 | 186, 186, 186 |
| 적벽돌 | 0.23, 0.07, 0.04 | 130, 74, 56 |
| 신선한 나무 | 0.28, 0.18, 0.09 | 141, 114, 81 |
| 흙/모래 | 0.36, 0.26, 0.15 | 159, 134, 105 |
| 금 (Metal) | 1.00, 0.71, 0.29 | 255, 218, 143 |
| 은 (Metal) | 0.95, 0.93, 0.88 | 248, 245, 240 |
| 구리 (Metal) | 0.95, 0.64, 0.54 | 248, 205, 190 |
Base Color 텍스처는 반드시 sRGB = true로 임포트해야 합니다. UE5는 텍스처 유형에 따라 자동 설정하지만, 수동으로 임포트한 텍스처는 확인이 필요합니다.
Metallic
금속 / 비금속 구분
Metallic은 표면이 금속인지 비금속인지를 결정하는 바이너리 스위치입니다. 내부적으로 Metallic 값에 따라 디퓨즈/스페큘러의 비율이 변합니다.
// UE5 내부: Metallic에 따른 분리
float3 DiffuseColor = BaseColor * (1.0 - Metallic);
float3 SpecularColor = lerp(
0.08 * Specular, // 비금속: F0 = 0~8%
BaseColor, // 금속: F0 = Base Color
Metallic
);
// Metallic = 0 → Diffuse = BaseColor, F0 = 0.04
// Metallic = 1 → Diffuse = 0, F0 = BaseColor
Metallic 텍스처 가이드라인
순수 재질
Metallic 맵은 순수 흑백(0 또는 1)이어야 합니다. 회색 값은 물리적으로 존재하지 않습니다.
혼합 표면
녹슨 금속처럼 금속/비금속이 공존하면 마스크로 영역을 분리합니다. 경계에서만 미세한 블렌딩 허용.
텍스처 설정
sRGB = false(Linear). 단일 채널(그레이스케일)이면 충분하므로 다른 맵과 채널 패킹 가능.
Roughness
표면 거칠기와 반사 품질 제어
Roughness는 마이크로팩싯의 방향 분산을 제어합니다. 0이면 완벽한 거울, 1이면 완전히 거친 표면입니다.
Roughness 시각적 차이
| Roughness | 시각적 효과 | 예시 재질 |
|---|---|---|
| 0.0 | 완벽한 거울 반사. 선명한 환경 반사 | 크롬, 거울, 맑은 수면 |
| 0.1~0.2 | 약간 흐린 반사. 광택 강함 | 자동차 도장, 광택 플라스틱 |
| 0.3~0.5 | 부드러운 하이라이트. 중간 광택 | 나무 가구, 타일, 가죽 |
| 0.6~0.8 | 넓게 퍼진 하이라이트. 약한 광택 | 콘크리트, 풍화된 돌, 천 |
| 0.9~1.0 | 거의 반사 없음. 완전 매트 | 분필, 고무, 풍화된 나무 |
실무에서 0.0이나 1.0 극단값은 거의 사용하지 않습니다. 가장 매끈한 재질도 0.05~0.1, 가장 거친 재질도 0.8~0.9 정도가 자연스럽습니다. Roughness 맵에 미세한 변화(스크래치, 지문 등)를 추가하면 리얼리즘이 크게 향상됩니다.
Roughness 텍스처는 sRGB = false(Linear)로 설정합니다. 그레이스케일 단일 채널이므로 Metallic, AO 등과 함께 채널 패킹하여 텍스처 수를 줄일 수 있습니다 (예: ORM 텍스처 = R:AO, G:Roughness, B:Metallic).
채널 패킹(Channel Packing)
텍스처 효율을 극대화하는 기법
Metallic, Roughness, AO는 모두 단일 채널(그레이스케일) 데이터입니다. 이들을 하나의 텍스처에 합치면 텍스처 수와 메모리를 줄일 수 있습니다.
// 일반적인 채널 패킹 규약
ORM 텍스처 (가장 보편적):
R = Ambient Occlusion
G = Roughness
B = Metallic
// sRGB = false, Compression = Masks
ARM 텍스처 (Substance 기본):
R = Ambient Occlusion
G = Roughness
B = Metallic
// UE5 머티리얼 에디터에서의 연결:
TextureSample (ORM 텍스처)
├─ R → Ambient Occlusion
├─ G → Roughness
└─ B → Metallic
채널 패킹 텍스처를 임포트할 때는 반드시 다음을 확인하세요: sRGB = false (이 데이터는 색상이 아니라 수치입니다), Compression = Masks (손실 압축이 채널 간 간섭을 일으키지 않도록). Normal Map은 별도 텍스처로 유지하세요.
핵심 요약
- Base Color는 순수 Albedo 색상만 포함하며 비금속은 sRGB 50~240, 금속은 180~255 범위입니다. sRGB = true로 설정합니다.
- Metallic은 순수 재질에서 0 또는 1의 바이너리 값이며, 내부적으로 디퓨즈/스페큘러 비율을 결정합니다. sRGB = false.
- Roughness는 마이크로팩싯 분포를 제어하며 0(거울)~1(매트) 범위입니다. 극단값보다 미세한 변화가 리얼리즘을 높입니다.
- 채널 패킹(ORM)으로 AO, Roughness, Metallic을 하나의 텍스처에 합쳐 효율을 높입니다.
- 채널 패킹 텍스처는 sRGB = false, Compression = Masks로 설정합니다.
도전 과제
배운 내용을 직접 실습해보세요
Metallic(0, 0.5, 1) x Roughness(0, 0.25, 0.5, 0.75, 1)의 조합으로 15개 머티리얼 인스턴스를 생성하고, Sphere에 적용하여 3x5 그리드로 배치한 파라미터 비교 씬을 만드세요.
Quixel Bridge에서 다운로드한 PBR 텍스처 세트(Base Color, Normal, Roughness, AO)를 머티리얼에 연결하고, 각 텍스처가 최종 결과에 미치는 영향을 하나씩 비활성화하며 확인하세요.
하나의 머티리얼에서 Vertex Color 또는 Mask 텍스처를 사용하여 금속 부분(Metallic=1)과 페인트 부분(Metallic=0)이 공존하는 표면을 만드세요. Roughness도 영역별로 다르게 설정하세요.