본문 바로가기
Computer Graphic/Unreal Engine

UE5 : Substrate Material 시스템 설명 - 1

by Deongeun 2023. 6. 27.

UE5.2에서 새롭게 도입된 Substrate Material 시스템

 

Substrate?

- Default lit이나 clear coat같은 새로운 쉐이딩 모델 방식으로 기존 방식인데

  보다 더 풍부한 머테리얼 표현이 가능하게 한다

( Liquid on metal, Dust on clearcoat, Clearcoat over subsurface )

 

- 다른 타입의 surface를 blend할 수 있다

(metal, glass, plastic)

 

- 핵심은 "slab of matter": 정해진 단위가 있는 물리량으로 매개변수화된 원칙적 표현

핵심 빌딩 블럭을 기반으로 closure 그래프로 머테리얼을 표현한다 (mixing, layering)

(*closure: 컴퓨터 언어에서 클로저는 일급 객체 함수의 개념을 이용하여 스코프에 묶인 변수를 바인딩 하기 위한 일종의 기술)

 

 

사용하는 이유?

- 게임엔진은 전형적으로 고정된 변수와, 제한된 범위의 모양으로 나타나는 고정된 머테리얼 타입들로 제한되는데 

offline 렌더러는 BSDF(양방향 산란 분포 함수)나 우버 쉐이더(MaterialX, Pixar's Lama, Autodesk Standard Surfaces)의         그래프 기반 혼합 시스템을 지원하면서 한계가 있는 접근 방식에서 벗어났다

 

- 고품질로 렌더하면서 동시에 작업의 실시간 효율성을 높이기 위해 도입하는 것 (5.3까지는 아직 불안정 주의)

 


Substrate 활성화 하는 방법

- Project Setting > Substrate를 검색해서 enable시킨다 (재시작해야함)

 

- DX12는 Windows에서 권장되는 RHI인데

substrate는 DX11에서 작동해야하지만 더 빠른 shader compile을 위해서  

r.D3D.ForceDXC=1을 Engine\Config\ConsoleVariables.ini 에 추가하는 것이 좋다

(DX12에서는 할 필요 없음)

 

 

Project Setting Option

1. Substrate opaque material rough refraction

: 물리적인 표현방식으로 rough refraction 적용을 허용할지 여부 / 허용시 성능에 영향을 미친다

 

2. Substrate advanced visualization shaders

: 머테리얼이  r.Substrate.Debug.VisualizeMode 3 와 함께 사용되는 쉐이더를 생성할지 여부 결정

성능에 영향을 줄 수있어 기본은 꺼져있는 상태

 

 

기존 머테리얼 전환

- Substrate를 켜면 모든 셰이딩 노드가 변환되는데

substrate 전용 버전에서 작업하는 경우가 아니면 기존 material을 저장하지 않는 것이 좋다.

 

- substrate가 비활성화된 상태에서 editor를 열면 변환된 material을 사용할 수 없지만 

substrate material을 기존 material에 수동으로 다시 연결할 수 있다.

(substrate 노드가 substrate 비활성화 상태에도 로드되기때문에)

 

 

 


Substrate BSDF(양방향 산란 분포 함수)

 

[기본노드]

1. Substrate Slab

: 분산이나, 반사광, 흐릿함, 천의 Fuzz, anistropy 같은 여러 구성요소를 통합하는 원칙적 표현

( 불투명한 표면 아래, 반투명 산란/투과율 렌더 가능)

 

2. Substrate SimpleClear Coat

: clear coat 재질을 렌더하는 간단하고 빠른 방법

 

 

 

 

[추가 노드]

: 아래 노드는 별도로 사용해야 하고 Substrate Blend를 통해 혼합이 불가능

 

1. Substrate Unlit: 색상이 있는 emissive luminance를 unlit으로 렌더할때 사용

기존 그레이 스케일 slab에서 확장한것 (unlit slab을 blend할거면 emissive 값만 있는 일반 slab을 사용하는 것이 낫다)

 

2. Substrate Hair: 헤어 렌더링 전용 BSDF

 

3. Substrate SingleLayerWater: 단일 레이어의 물을 표현할때 사용하는 BSDF

 

4. Substrate Volumetric: 볼류메트릭 물질 (fog, clouds) 사용할때 쓰는 BSDF

 

5. Substrate Eye: 눈 렌더 전용

 

-> 위 노드 중 하나를 사용하면 material domain과 shading model이 자동으로 설정되서 만들 필요가 없다

 

 


Substrating Building Block 노드

 

단순한 머테리얼 함수로 일반적인 사용케이스에 대해 parameter 변환을 제공해준다

*SMF: Substrate Materail Function의 약자

 

 

 

 


Substrate Extras  노드

 

1. Light Function: 라이트 기능으로만 사용됨

 

 

 

2. Post Process: 포스트 프로세스로만 사용됨

 

 

 

3. Convert To Decal: 머테리얼 그래프를 Decal로 변환하는 노드

 


The Slab 

- 기본 Substrate의 재질 노드

- 경계면(인터페이스)와 매개물(미디엄)로 구성된 물질 조각을 뜻한다

 

 

 

 

[Non-Metalness]

: 5.1까지 있던 Metalness 매개변수가 없어졌다

 

  • F0

- 머테리얼을 표면에 수직으로 봤을때의 반사율 (색상 노드 가능) 

- 플라스틱, 비금속의 경우에 [0, 0.08] 범위 내에 있다

- 금속의 경우 최대 1 (보석은 일반적으로 최대 0.16)

- F0이 높을수록 diffuse 분산이 적게 보인다

 

 

  • F90

- 머테리얼 표면을 탄젠트 방향으로 봤을때 반사율, 즉 카메라 뷰에 따라 상대적 (색상 노드 가능)

 

  • Diffuse Color

- medium의 Albedo

 

 

# Metalness는 Substrate Metalness -To-DiffuseAlbedo-F0 노드를 사용하여 계산할 수 있다

(DiffuseAlbedo 및 F0 - > BaseColor/Specular/Metallic)

 

 

 

# EdgeColor나 F90을 사용해 빛에 대한 다양한 확산과 반사반응을 얻을 수 있다

 

 

 

 

 

 

 

> 수직 정반사 - 청록색

> 접선 정반사 - 노란색

 

 

 

 

 

 

 

 

 

 

 

 

 

#FlipFlop 노드를 이용해 노말 베이스의 specular colorization을 얻을 수 있다.

 

 

 

[공통 매개변수]

 

  • Roughness

0 -> 1

  • Anisotropy

-1 -> 1

-1: bi-tangent 방향으로 하이라이트 

 1: tangent 방향으로 하이라이트

 

 

  • Second Roughness/ Second Roughness Weight

: first Roughness와 Second Roughness의 혼합정도

(0: No rough, 1: fully rough) / Second Roughness Weight (0: Primary Only, 0.5: Mix of both, 1: Second Only)

 

 

 

  • MFP

: 머테리얼의 'density'를 제어하고 빛의 흡수 및 산란에 영향을 준다

photon이 물질입자와 상호작용하는 평균거리, 색상 채널별로 제어된다

 

 

  • Thickness

Top = White Bottom = Black의 BaseCoor에서 노란색 투과율을 사용했을때 (Thickness 0~3cm)

 

 

 


Slab Operators

  • HorizontalMixing

- 주어진 혼합비율로 두개의 slab을 혼합한다

 

 

 

  • VerticalLayering

- slab을 다른 slab으로 코팅 (자동차 도장, 목재 니스 칠, 젖은 층)

 

 

 

  • Weight

- slab의 적용범위를 제어

- Dust/dirt 같은 불투명 물질의 레이어를 다른 레이어위에 놓는데 VerticalLayering operator와 함께 사용할 수 있음

 

 

 

  • ADD

- 물리적으로 타당하지 않아 가능하면 피하는 것이 좋다

 

 

 

 

  • Thin-Film

- 광파 패턴을 생성하는 얇은 레이어를 추가함

- thickness와 필름의 굴절률을 통해 제어된다 (0 - 1 파라미터 공간은 0-10 마이크로미터에 매핑된다)

- 무지개빛같은 광파 생성 가능

 

 

 

 

 

 

 

 

Substrate Materials | Course

Documentation for Substrate Materials, released as Experimental in UE 5.2.

dev.epicgames.com