PBR 워크플로우의 이해

Physically Based Rendering(PBR)은 현대 게임 그래픽의 근간입니다. 현실 세계의 빛의 물리적 특성을 수학적으로 모델링하여, 어떤 조명 환경에서도 일관되게 자연스러운 재질을 표현할 수 있게 해줍니다. Substance Designer는 이러한 PBR 원칙을 충실히 따르며, 우리 눈의 보이는 색을 표현하기 위해 크게 두 가지 워크플로우를 지원합니다.

Metal/Roughness Workflow

기본색 / 금속성or비금속성 / 표면의 거칠기로 표현

Metal/Roughness 워크플로우Base Color, Metallic, Roughness 세 가지 맵으로 재질의 핵심 특성을 직관적으로 표현하는 방식입니다. 주요 게임 엔진 Unreal Engine과 Unity 모두 이 방식을 기본으로 사용하고 있습니다.

Bace Color

BaseColor는 Albedo라고 불리기도 합니다. 오로지 순수한 색상 정보만을 가지고 있는 맵입니다. 무광도료 같고 입체감이 없어도 그것이 정상이죠.

Warning

텍스처링을 하다 발생하는 실수 중 하나가 Base Color에 그림자나 하이라이트를 그려 넣는 것입니다. 이는 PBR의 원칙에 어긋나며, 다양한 조명 환경에서 부자연스러운 결과를 초래합니다. 

RGB값이 모든 색을 완전히 반사하거나(1,1,1) 완전히 흡수하는 재질(0,0,0)은 자연계에 존재하지 않습니다. (가장 어두운 물질로 알려진 반타 블랙조차 완전한 0은 아닙니다.)

안전한 베이스 컬러의 범위

30 ~ 240 (0.1176 ~ 0.9412) 50 ~ 249 (0.1961~0.9765) 염격한 기준

금속성 or 비금속성

Metallic 맵은 바이너리 개념에 가깝습니다. 금속(1, 흰색)과 비금속(0, 검은색)을 구분하며, 중간값은 일반적으로 사용하지 않습니다. 다만 현실에서는 산화되거나 먼지가 낀 금속처럼 전환 영역이 존재할 수 있어, 이런 디테일을 표현할 때는 그라데이션를 활용한 마스킹**이 효과적입니다.

금속 재질은 비금속 재질보다 Base Color를 훨씬 밝게 설정해야 자연스럽습니다.

금은 약 (255, 226, 155) 구리는 (250, 208, 192) 정도의 값을 참고하면 좋습니다.

표면의 거칠기

Roughness는 표면의 미세한 거칠기를 나타냅니다. 0에 가까울수록 완전히 매끄러워 거울처럼 정반사하고, 1에 가까울수록 거칠어져 난반사가 일어납니다. 하지만 현실에서 완전한 0이나 1은 존재하지 않습니다. 가장 매끄러운 거울도 미세한 불완전함이 있고, 가장 거친 고무도 완전한 난반사는 아닙니다.

안전한 러프니스의 범위

현실적인 세팅을 위해선 0.02~0.98 사이의 값을 사용하는 것이 안전합니다.

Glossiness/Specular Workflow

Spec/Gloss 워크플로우는 Unity의 Legacy 렌더러나 일부 모바일 플랫폼에서 여전히 사용됩니다. Diffuse, Specular, Glossiness 맵으로 구성되어 정반사, 난반사, 표면의 매끄러움으로 표현되며, Metallic/Roughness와는 다른 사고방식을 요구합니다.

💭 물체를 볼때 정반사와 난반사를 생각해보면서 본 적이 없어 직관적이진 않은 방법같다;;

Diffuse (sRGB) 제작 지침

과거 게임 그래픽에서 디퓨즈 맵(Diffuse Map)이라는 용어가 널리 사용되어 왔기 때문에, PBR에서의 Diffuse와 개념이 혼용되는 경우가 있습니다. 그러나 두 용어는 같은 이름을 사용하더라도 의미가 다릅니다.

전통적인 워크플로우에서의 디퓨즈 맵은 표면 색상뿐 아니라 베이크된 조명이나 그림자 정보까지 함께 포함된 텍스처를 의미했습니다. 반면 PBR에서의 Diffuse는 이러한 조명 정보가 제거된 상태에서 표면이 난반사하는 빛의 순수한 색상만을 의미합니다.

비금속 재질에서는 Diffuse가 Base Color와 유사한 역할을 하지만, 금속 재질의 경우 대부분의 빛을 반사하기 때문에 Diffuse 값이 거의 검은색에 가깝게 나타납니다.

Specular 제작 지침

Specular 맵은 정반사광의 색상과 강도를 정의합니다. 비금속의 경우 대부분 회색조(sRGB 4080, 약 0.020.08 linear)를 사용하며, 금속의 경우 Base Color와 유사한 값을 가집니다. 순수 철의 경우 약 (200, 200, 200) 정도입니다. Glossiness는 Roughness의 반대 개념으로, 값이 클수록 매끄럽고 작을수록 거칩니다.

장점

  • 가장자리 얼룩이 덜보입니다.
  • Specular 맵에서 비금속(부도체) F0도 제어할 수 있습니다.

단점

  • Specular 맵은 부도체 F0에 대한 제어를 제공하기 때문에 잘못된 값을 사용하기 쉽습니다. 셰이더에서 잘못 처리하면 보존 법칙을 깨뜨릴 수도 있습니다.
  • 추가적인 RGB 맵으로 더 많은 텍스처 메모리를 사용합니다.
  • 기존 워크플로우와 비슷한 용어를 사용하지만 다른 데이터가 필요하므로 더 혼란스러울 수 있습니다. 부도체의 경우 F0, 금속 Diffuse 색상의 경우 검은 색, 셰이더에서 처리하지 않을 경우 가능한 에너지 보존과 같은 물리적 기반 가이드라인에 대한 지식이 더 필요합니다.

장단점 비교

Albedo/Metal/RoughnessDiffuse/Specular/Glossiness
장점직관성이 높다(배우기 쉽다)
사용 채널 수가 적다(3+1+1)
정/난반사 색이 다른 독특한 머티리얼 제작 가능Metalic Edge 문제 없음
단점정/난반사 색이 다른 독특한 머티리얼 제작 불가
Metalic Edge 문제 발생
더러운 직관성(배우기 어렵다)
사용 채널 수가 많다(3+3+1)

즉, 경우에 따라 두 워크플로우의 변환이 필요할 수도 있다!