서브스트레이트(Substrate)는 언리얼 엔진의 머티리얼 제작 방식으로, 디폴트 릿(Default Lit)이나 클리어 코트(Clear Coat)와 같은 고정된 세트의 셰이딩 모델 및 블렌드 모드를 표현력이 더욱 풍부한 모듈형 프레임워크로 대체합니다.
비서브스트레이트(또는 레거시) 머티리얼 시스템의 특정 추상화는 서브스트레이트 머티리얼에 의해 제거되고, 측정된 물질 프로퍼티로 대체됩니다. 이를 통해 작업할 수 있는 파라미터 공간이 더 넓어지고 금속, 유리, 플라스틱과 같은 개별 표면 타입을 보다 정확하게 블렌딩할 수 있습니다. 서브스트레이트는 또한 머티리얼 레이어링 프로세스를 간소화하여 금속 위의 액체나 서브서피스 스캐터링 위의 클리어 코트와 같은 표면을 보다 손쉽게 표현합니다.
서브스트레이트의 머티리얼은 '물질 슬랩(slabs of matter)'으로 개념화됩니다. 이러한 슬랩은 원칙적인 양방향 스캐터링 분포 함수(Bidirectional Scattering Distribution Function, BSDF)를 표현한 것으로, 잘 정의된 단위를 사용하여 물리량으로 파라미터화했습니다. 머티리얼은 혼합, 레이어링 등 연산이 수행되는 슬랩의 그래프로 표현됩니다. 원칙적인 표현 덕분에 서브스트레이트 머티리얼은 퍼포먼스를 위해 시각적 퀄리티를 낮추고자 플랫폼의 능력에 따라 단순화할 수 있습니다.
새 프로젝트
서브스트레이트는 새로 생성된 모든 프로젝트에서 기본적으로 활성화되어 있습니다. UE 5.7 이상으로 업그레이드하는 기존 프로젝트는 프로젝트 세팅에서 서브스트레이트 지원을 명시적으로 선택하지 않는 한 기본적으로 비서브스트레이트 패스를 계속 사용합니다.
이러한 기존 프로젝트의 경우 프로젝트 세팅(Project Settings) > 렌더링(Rendering)에서 서브스트레이트를 선택하고 서브스트레이트 머티리얼(Substrate materials)을 활성화한 다음 프로젝트를 재시작하여 변경사항을 적용하면 됩니다.
기본적으로 서브스트레이트가 활성화된 새 프로젝트의 경우, 비주얼 퀄리티보다 속도를 우선시하기 위해 블렌더블 GBuffer 포맷이 사용됩니다. 이 포맷은 프로젝트의 렌더링 세팅에서 변경할 수 있습니다.
자동차 및 건축과 같은 일부 템플릿 프로젝트는 퍼포먼스보다 비주얼 퀄리티를 우선시하기 위해 어댑티브 GBuffer를 기본적으로 사용합니다.
프로젝트의 GBuffer 포맷을 구성하는 방법에 대한 자세한 내용은 이 페이지의 GBuffer 포맷 섹션을 참고하세요.
머티리얼 에디터 변환
기존의 비서브스트레이트 머티리얼은 바로 사용할 수 있지만 서브스트레이트 노드로 자동 변환되지는 않습니다. 기존 비서브스트레이트 머티리얼 또는 새로 생성된 머티리얼의 경우, 비서브스트레이트 루트 노드 파라미터화를 계속 사용하며 컴파일 시간에 서브스트레이트로 변환됩니다. 이를 통해 프로젝트 마이그레이션이 간소화되고, 에셋을 수정하거나 다시 저장할 필요가 없으며, 쿠킹 비용이 절감됩니다.
머티리얼을 서브스트레이트로 변환하려면 루트 노드를 우클릭하고 서브스트레이트로 변환(Convert to Substrate)을 선택합니다. 이렇게 하면 슬랩이 자동으로 생성되어 루트 노드의 정면 머티리얼에 연결되고, 비서브스트레이트 루트 노드의 입력이 슬랩에 연결됩니다.
기존 프로젝트에서 서브스트레이트를 활성화하거나 언리얼 엔진 5.7 이상 버전으로 마이그레이션하는 경우, 다음 가이드라인을 따릅니다.
서브스트레이트가 활성화된 프로젝트에서 기존의 비서브스트레이트 머티리얼을 열어도 더는 해당 머티리얼이 변경되지 않습니다. 비서브스트레이트 프로젝트와도 계속 호환됩니다.
명시적으로 변환된 머티리얼은 비서브스트레이트 프로젝트와 호환되지 않습니다. 변환은 영구적이며 비서브스트레이트 머티리얼로 되돌릴 수 없습니다.
프로젝트에서 서브스트레이트가 비활성화되면 서브스트레이트 머티리얼은 검게 렌더링됩니다. 여기에는 변환된 머티리얼에서 생성된 레거시 서브스트레이트 머티리얼이 포함됩니다. 변환된 서브스트레이트 머티리얼을 레거시 스타일 머티리얼로 다시 수동 연결할 수는 있지만, 현재 머티리얼 그래프에 있는 서브스트레이트 노드는 제거되지 않습니다.
비주얼 퀄리티를 위한 GBuffer 포맷
서브스트레이트는 머티리얼 데이터를 저장하는 데 블렌더블 GBuffer 와 어댑티브 GBuffer라는 두 가지 GBuffer 포맷을 지원합니다. 이 두 포맷은 속도, 메모리 및 비주얼 퀄리티 측면에서 장단점이 서로 다릅니다.
블렌더블 GBuffer
이 포맷은 고정 메모리 풋프린트와 예측 가능한 속도를 가장 중시합니다. 주로 60Hz 프로젝트에 사용됩니다. 제한된 기능 세트만 제공되며, 비서브스트레이트 패스와 유사합니다.
퍼포먼스는 비서브스트레이트 패스와 동등합니다.
퍼포먼스를 중시하는 프로젝트(60Hz)를 타깃으로 합니다.
모든 플랫폼에서 시각적인 일관성을 보장합니다.
쿠킹 오버헤드가 없습니다.
DBuffer 데칼 기법을 강제로 활성화하지는 않습니다.
어댑티브 GBuffer
이 포맷은 비주얼 퀄리티를 중시하는 프로젝트를 타깃으로 하며, 서브스트레이트의 잠재력을 최대한 활용하여 풍부한 머티리얼 복잡도를 구현합니다.
퍼포먼스 비용이 더 높으며, 화면에 표시되는 머티리얼의 복잡도에 따라 퍼포먼스 비용이 달라집니다.
비주얼 퀄리티를 중시하는 프로젝트를 타깃으로 하며, 보다 복잡한 셰이딩 비헤이비어를 지원합니다.
고퀄리티 비주얼은 플랫폼에 따라 달라집니다.
쿠킹 시간은 블렌더블 포맷과 비교하여 약 15% 증가합니다. 셰이딩 비헤이비어가 복잡한 머티리얼에서는 쿠킹 시간이 추가로 증가합니다.
DBuffer 데칼 기법이 강제로 활성화됩니다.
프로젝트 세팅 및 콘솔 변수에서 클로저 수 및 픽셀별 바이트에 대한 추가 컨트롤을 사용할 수 있습니다.
이 포맷은 현재 세대 콘솔 Xbox Series X/S, PlayStation 5 및 PlayStation 5 Pro, Windows PC(SM6), MacOS(SM6) 및 Linux(SM6)에서만 지원됩니다. SM5 플랫폼을 포함하는 다른 플랫폼에서는 머티리얼이 간소화되며, 플랫폼은 블렌더블 GBuffer 포맷으로 실행됩니다.
어댑티브 GBuffer 사용과 관련하여 알려진 문제는 이 페이지의 제한 사항 및 알려진 문제 섹션을 참고하세요.
DBuffer
블렌더블 GBuffer 포맷은 계속해서 블렌더블 데칼과 DBuffer 데칼을 모두 지원합니다. DBuffer 데칼은 기본적으로 활성화되어 있지만 프로젝트 세팅에서 선택 해제할 수 있습니다.
어댑티브 GBuffer 포맷은 DBuffer 데칼만 지원합니다. 프로젝트가 DBuffer 데칼을 사용하지 않는 경우, 렌더링 시스템은 어댑티브 GBuffer 포맷을 지원하는 플랫폼에서 자동으로 DBuffer 데칼을 활성화합니다.
DBuffer 데칼을 사용하는 경우에는 서브스트레이트는 DBuffer 평가 동안 머티리얼의 노멀 읽기를 실험 단계 패스로 지원하며, 이는 r.Substrate.DBufferPass로 활성화할 수 있습니다. 이를 통해 DBuffer 머티리얼은 템포럴 재투영이나 뎁스 기반 노멀 재구성 없이 머티리얼의 노멀을 사용할 수 있습니다.
프로젝트 세팅 및 콘솔 변수(선택사항)
서브스트레이트에는 다음과 같은 선택적 프로젝트 세팅 및 콘솔 변수가 있습니다.
| 프로젝트 세팅 | 설명 |
|---|---|
서브스트레이트 GBuffer 포맷(프로젝트)(Substrate GBuffer Format (Project)) | 프로젝트에 사용되는 GBuffer 포맷을 선택합니다.
|
서브스트레이트 픽셀별 클로저(프로젝트)(Substrate Closure Per Pixel (Project)) | 픽셀별로 평가할 수 있는 클로저의 최대 수를 정의합니다. 머티리얼에 이보다 많은 클로저가 포함되어 있으면 프로젝트 예산에 맞을 때까지 머티리얼이 반복적으로 간소화됩니다. 또한 플랫폼마다 클로저 수 상한이 있으며, 이는 다음과 같은 세팅으로 오버라이드할 수 있습니다.
|
서브스트레이트 픽셀별 클로저 오버라이드(Substrate Closure-Per-Pixel Override) | 각 플랫폼에서 픽셀별로 평가되는 클로저의 최대 수를 정의하는 방식을 선택합니다.
|
서브스트레이트 불투명 머티리얼 러프 리플렉션(실험 단계)(Substrate opaque material rough reflection (Experimental)) | 활성화하면 다른 머티리얼을 코팅하는 거친 표면이 물리적으로 타당한 방식으로 하위 레이어를 흐리게 할 수 있습니다. 이 기능은 실험단계입니다. |
서브스트레이트 반투명 머티리얼 러프 리프랙션(Substrate translucent material rough refraction) | 활성화하면 반투명 표면이 러프니스에 따라 러프 리프랙션을 생성할 수 있습니다. 이 옵션을 활성화하면 디스토션 패스 비용이 상승합니다. |
서브스트레이트 고급 시각화 셰이더(에디터/Win64/DX12 전용)(Substrate advanced visualization shaders (Editor / Win64 / DX12 Only)) | 고급 서브스트레이트 머티리얼 디버그 시각화 셰이더를 활성화합니다. 베이스 패스 셰이더는 이 같은 고급 데이터를 출력할 수 있습니다. 현재 Win64용으로 제작되고 DX12 그래픽 API를 실행하는 에디터에서만 사용할 수 있습니다. |
서브스트레이트 활성화 머티리얼 레이어 지원(실험 단계)(Substrate enable material layer support (Experimental)) | 서브스트레이트 머티리얼 레이어링 및 유저 인터페이스를 활성화합니다. 참고: 이 지원은 되돌릴 수 없습니다. 레거시 레이어 머티리얼 자동 업그레이드만 가능하고 에셋이 다시 저장된 후에는 수동으로만 반전시킬 수 있습니다. |
| 콘솔 변수 | |
| 자동으로 단순화되기 전에 서브스트레이트 머티리얼의 픽셀당 스토리지 바이트를 지정할 수 있습니다. 이 변수는 기본적으로 픽셀당 80바이트로 설정됩니다. 스토리지 요구 사항이 더 높은 복잡한 머티리얼의 경우 늘릴 수 있습니다. 값이 클수록 더 많은 메모리를 사용하며 메모리 대역폭 및 기타 퍼포먼스 특성에 영향을 미칠 수 있습니다. 이 변수와 퍼포먼스의 관계는 콘텐츠와 플랫폼 둘 모두에 따라 크게 다릅니다. 필요시 platform.ini 환경설정 파일에서 플랫폼별로 이 값을 지정할 수 있습니다. |
| 픽셀당 평가되는 클로저 수를 고정할 수 있습니다. 머티리얼이 지닌 클로저가 이 값보다 많다면, 클로저 수에 맞춰 머티리얼이 자동으로 간소화됩니다. |
| 활성화하면 서브스트레이트가 픽셀당 단일 셰이딩 모델을 사용하여 모든 머티리얼을 레거시 GBuffer로 강제 변환합니다. 저사양 플랫폼에 사용하여 퍼포먼스가 필요한 일부 프로젝트에서 퍼포먼스를 향상할 수 있습니다. |
서브스트레이트와 머티리얼 레이어의 관계
그래프 기반 및 커스텀 레이어 GUI 모두에서 언리얼 엔진의 기존 머티리얼 레이어링(Material Layering)은 파라미터 블렌딩 콘셉트를 기반으로 합니다. 각 레이어는 블렌딩되어 최종 셰이딩 모델에 반영되는 파라미터의 패턴 그래프를 정의합니다.
머티리얼 레이어 기반 파라미터가 서브스트레이트 정의 셰이딩 모델에 반영되지 못하게 하는 요소는 없습니다. 그렇지만, 이 로직은 부모 머티리얼의 머티리얼 어트리뷰트 노드의 출력을 사용하여 수동으로 구성해야 합니다. 이 접근법의 한 가지 제한 사항은 머티리얼 어트리뷰트 시스템에는 고정된 파라미터 목록이 있지만, 서브스트레이트가 있는 멀티 슬랩 구성에 반영할 슬롯이 충분하지 않을 수 있으며, 실제 의미와 관련 없는 임의의 이름 핀을 사용해야 할 수도 있다는 것입니다.
서브스트레이트는 이 페이지에서 나중에 설명하겠지만 파라미터 블렌딩을 기본적으로 사용할 수 있으나 머티리얼 레이어 인터페이스에서 해당 기능에 액세스할 방법은 없습니다. 서브스트레이트와 머티리얼 레이어의 통합은 향후 개발에서 큰 관심을 끄는 영역입니다.
중요한 점은 머티리얼 어트리뷰트(Material Attribute)와 머티리얼 레이어(Material Layers)는 실제 물질의 레이어링으로 작동하지 않는다는 점입니다. 즉, 클리어 코트를 시뮬레이션할 수는 있지만, 다른 레이어 위에 컬러 투과율을 가진 최상위 레이어를 가질 수는 없습니다. 이 기술은 표면에서 두 머티리얼의 블렌딩, 즉 수평적 혼합을 가능하게 할 뿐, 물질의 슬랩을 다른 물질 위에 레이어링하는 것은 불가능합니다.
서브스트레이트 머티리얼 작업하기
서브스트레이트 머티리얼은 레거시 머티리얼과 유사하게 제작됩니다. 이 섹션에서는 노드, 블렌드 모드와 생성할 수 있는 머티리얼 타입에 대한 디테일을 비롯해 서브스트레이트 머티리얼을 구성하는 핵심 요소를 살펴봅니다.
서브스트레이트 머티리얼 루트 노드
레거시 머티리얼과 마찬가지로 머티리얼 루트(Material Root) 노드에서 정면 머티리얼(Front Material)을 통해 연산자, 빌딩 블록 등의 기타 서브스트레이트 노드와 서브스트레이트 슬랩이 반영됩니다.
모든 서브스트레이트 머티리얼 그래프는 머티리얼 루트 노드의 정면 머티리얼 입력에 연결되어야 합니다. 이 입력은 모든 서브스트레이트 그래프의 엔드포인트입니다.
또한 레거시 머티리얼과 마찬가지로 머티리얼 루트 노드가 선택된 경우 디테일(Details) 패널을 통해 블렌드 모드(Blend Mode) 및 머티리얼의 룩을 정의하는 기타 프로퍼티를 설정합니다. 머티리얼 도메인과 셰이딩 모델은 그래프에서 자동으로 추론됩니다.
서브스트레이트 블렌드 모드
서브스트레이트는 자체 블렌드 모드 세트를 사용하여 머티리얼의 컬러가 배경과 블렌딩되는 방식을 정의합니다. 레거시 머티리얼 블렌드 모드는 서로 혼합하고 블렌딩할 수 있는 방식이 제한되어 있으므로, 만들 수 있는 머티리얼의 타입이 제한됩니다. 서브스트레이트는 함께 블렌딩하여 모든 종류의 머티리얼을 만들 수 있는 다양한 블렌드 모드를 제공합니다. 이는 물리적으로 올바른 반투명 표면 셰이딩을 달성하는 데 특히 중요합니다.
서브스트레이트에는 다음과 같은 블렌드 모드가 포함되어 있습니다.
| 블렌드 모드 | 설명 |
|---|---|
불투명(Opaque) | 빛이 통과하지도 투과하지도 못하는 표면을 정의합니다. 커버리지가 1인 불투명 표면으로, 레거시 불투명 블렌드 모드와 동일합니다. |
마스크드(Masked) | 비저빌리티를 바이너리(켜기/끄기) 방식으로 선택적으로 제어해야 하는 머티리얼에 사용됩니다. 커버리지가 1 또는 0인 불투명 표면으로, 레거시 Masked 블렌드 모드와 동일합니다. |
Translucent - Grey Transmittance | 컬러 표면과 커버리지가 있는 반투명 머티리얼이지만 투과율은 그레이스케일로 감소됩니다. 포스트 뎁스 오브 필드 반투명을 변조 패스로 추가 렌더링하는 것을 방지하므로 더 빠릅니다. 이는 하드웨어 컬러 반투명(듀얼 소스 컬러 블렌딩이라고 함)을 지원하지 않는 플랫폼을 위한 예비 블렌드 모드입니다. 이는 레거시 반투명 블렌드 모드와 비슷합니다. |
애디티브(Additive) | 최종 컬러 = 소스 컬러 + 대상 컬러인 배경 컬러에 머티리얼 컬러를 추가합니다. |
Colored Transmittance Only | 머티리얼의 투과율만 사용됩니다. 표면 인터랙션은 0으로 감소하며, 레거시 Multiply 블렌드 모드와 동일합니다. |
AlphaComposite (Premultiplied Alpha) | 이 블렌드 모드를 사용하면 씬에 추가로 블렌딩되는 머티리얼의 컬러 기여도와 씬 뒤의 비저빌리티를 감소시키는 커버리지 양을 세밀하게 제어할 수 있습니다(루트 노드의 오파시티(Opacity) 입력을 사용하여 머티리얼의 커버리지를 오버라이드할 수 있습니다). 레거시 Alpha Composite (Premultiplied Alpha) 블렌드 모드와 동일하게 작동합니다. |
AlphaHoldout | 이 블렌드 모드는 알파를 지속시켜 오브젝트에 구멍을 뚫어 오브젝트 뒤에 있는 오브젝트를 드러낼 수 있게 해줍니다. 레거시 AlphaHoldout 블렌드 모드와 동일하게 작동합니다. |
Translucent - Colored Transmittance | 완벽한 기능을 갖춘 반투명 머티리얼로, 컬러 표면, 커버리지, 컬러 투과율이 있습니다. 이는 레거시 ThinTranslucent 셰이딩 모델과 유사하게 별도의 버퍼에 투과율 컴포넌트를 렌더링해야 하기 때문에 뎁스 오브 필드를 게시할 때 독립 반투명을 사용하는 경우 비용이 더 많이 듭니다. |
서브스트레이트를 사용하면 기존 머티리얼보다 반투명 작업이 더 간단해집니다. 반투명 블렌드 모드를 의도에 따라 더 잘 정의할 수 있습니다. 둘 사이에 변하지 않는 한 가지 측면은 모든 반투명 블렌드 모드는 표면에 대한 라이팅 계산 방법을 정의하기 위해 라이팅 모드(Lighting Mode)도 설정해야 한다는 것입니다. 이는 반투명 머티리얼의 올바른 룩을 얻는 데 중요합니다.
생성하는 대부분의 반투명 머티리얼은 표면 반투명 볼륨(Surface Translucency Volume) 또는 표면 포워드 셰이딩(Surface Forward Shading)을 사용합니다.
선택할 수 있는 라이팅 모드는 다음과 같습니다.
| 라이팅 모드 | 설명 |
|---|---|
Volumetric NonDirectional | 볼륨에 대한 라이팅을 방향성 없이 계산합니다. 연기나 먼지 같은 파티클 이펙트에 사용하세요. 가장 저렴한 픽셀당 라이팅 방법입니다. 그러나 머티리얼의 노멀은 고려되지 않습니다. |
Volumetric Directional | 머티리얼의 노멀이 고려되도록 방향성을 포함해 볼륨에 대한 라이팅을 계산합니다. 디폴트 파티클 탄젠트 스페이스는 카메라를 향합니다. 따라서 구형 파티클 생성(Generate Spherical Particles)을 활성화하면 보다 유용한 탄젠트 스페이스를 구할 수 있습니다. |
Volumetric PerVertex NonDirectional | Volumetric NonDirectional과 동일하지만, 버텍스에서만 라이팅을 계산하기 때문에 픽셀 셰이더 비용이 크게 줄어듭니다. 라이팅은 여전히 볼륨 텍스처에서 오기 때문에 범위가 제한됩니다. 디렉셔널 라이트는 원거리에서 섀도를 드리우지 않습니다. |
Volumetric PerVertex Directional | Volumetric Directional과 동일하지만, 버텍스에서만 라이팅을 계산하기 때문에 픽셀 셰이더 비용이 크게 줄어듭니다. 라이팅은 여전히 볼륨 텍스처에서 오기 때문에 범위가 제한됩니다. 디렉셔널 라이트는 원거리에서 섀도를 드리우지 않습니다. |
Surface Translucency Volume | 표면의 라이팅을 계산합니다. 라이트가 볼륨에 누적되어 결과물이 흐리게 보이고 거리가 제한되지만, 픽셀당 비용은 매우 낮습니다. 유리나 물과 같은 반투명 표면에 사용하세요. 디퓨즈 라이팅만 지원됩니다. |
Surface ForwardShading | 표면의 라이팅을 계산합니다. 유리나 물과 같은 반투명 표면에 사용하세요. 포워드 셰이딩으로 구현되므로 로컬 라이트에서의 스페큘러 하이라이트는 지원되지만 다수의 디퍼드 전용 기능이 지원되지 않습니다. 각 라이트의 공헌이 픽셀 단위로 계산되므로 가장 비용이 많이 드는 반투명 라이팅 메서드입니다. |
서브스트레이트 머티리얼에서의 반투명 세팅 및 사용에 대한 몇 가지 예시를 보려면 이 페이지의 반투명 섹션을 참조하세요.
서브스트레이트 슬랩
서브스트레이트 슬랩(Substrate Slab)은 서브스트레이트 머티리얼을 이루는 기본 구성 요소입니다. 대부분의 머티리얼 외관을 얻을 수 있는 최소한의 필수 파라미터 세트로 설계되었습니다. 따라서 훨씬 더 표현력 있는 타입의 외관 제작을 위한 기반이 됩니다.
슬랩은 인터페이스와 매체로 구성된 물질의 슬랩을 원칙적으로 나타낸 것입니다.
서브스트레이트 슬랩은 인터페이스(1)와 매체(2)로 구성됩니다.
인터페이스(Interface)는 라이트가 머티리얼의 표면과 상호작용하는 바운더리입니다. 접점의 프로퍼티는 반영되는 러프니스, 노멀, 디퓨즈 알베도, 인터페이스, F0 및 F90 값에 의해 주로 정의됩니다.
매체(Medium)는 라이트가 산란, 투과, 흡수되는 인터페이스 아래 물질의 볼륨입니다. 매체의 프로퍼티는 주로 평균 자유 경로(Mean Free Path, MFP) 및 디퓨즈 알베도 입력에 의해 정의됩니다.
서브스트레이트 슬랩은 비서브스트레이트 머티리얼의 모놀리식 머티리얼 루트 노드를 모듈형으로 대체합니다. 디퓨즈(Diffuse), 스페큘러(Specular), 러프니스(Roughness), 이미시브(Emissive), 클로스(Cloth), 애니소트로피(Anisotropy) 등 많은 표면 어트리뷰트로 구성됩니다. 모든 서브스트레이트 BSDF 노드에는 눈, 헤어, 단순한 클리어 코트 등과 같이 생성하는 머티리얼 타입에 대한 명명된 출력과 연관성이 있는 프로퍼티가 포함되어 있습니다.
기존 머티리얼은 블렌드 모드에 의존하여 사용할 수 있는 입력을 제시했습니다. 서브스트레이트는 다양한 BSDF 슬랩을 사용하여 머티리얼 타입을 정의합니다. 그리고 더 이상 블렌드 모드에 직접 연결되지 않기 때문에 레이어링 및 혼합하여 다양한 타입의 머티리얼을 생성할 수 있습니다.
사용된 프라이머리 Substrate Slab BSDF 노드에는 다음 입력이 포함됩니다.
| 서브스트레이트 슬랩 입력 | 정의 |
|---|---|
디퓨즈 알베도(Diffuse Albedo) | 표면에서 디퓨즈로 반사되는 라이트의 퍼센티지를 정의합니다. 매체의 로컬 베이스 컬러와 유사합니다. 디폴트값은 0.18입니다. 디퓨즈 알베도는 단순 볼륨 서브서피스 표현을 사용할 때 관여 매체에 의해 스캐터링되는 라이트의 비율을 나타내기도 합니다. |
F0 | 표면이 카메라와 수직인 스페큘러 하이라이트의 컬러와 밝기를 정의합니다. 유전체 머티리얼(플라스틱 및 기타 비금속)의 경우 이 값은 일반적으로 0~0.08 범위입니다. 금속 머티리얼의 범위는 최대 1입니다. 원석의 범위는 최대 약 0.16입니다. |
F90 | 표면 노멀이 카메라에서 90도인 스페큘러 하이라이트의 컬러를 정의합니다. 즉, 카메라 뷰를 기준으로 한 지표각입니다. 밝기가 1.0으로 고정되어 색상과 채도만 인식됩니다. F0이 0.02 아래로 떨어지면 검은색으로 페이드됩니다. |
러프니스(Roughness) | 머티리얼의 거친 정도를 제어합니다. 표면의 러프니스는 0에서 1까지입니다. 0(부드러움)에서는 러프니스가 거울처럼 반사되며, 1(완전히 거칢)에서는 러프니스가 완전 무광이거나 디퓨즈됩니다. 애니소트로피 사용 시 러프니스 값은 탄젠트 축을 따라 사용됩니다. |
애니소트로피(Anisotropy) | 머티리얼의 애니소트로피 방향을 제어합니다(-1: 하이라이트가 바이탄젠트에 정렬됨, 1: 하이라이트가 탄젠트에 정렬됨). |
노멀 | 표면 노멀을 입력으로 취합니다. 노멀은 머티리얼 루트 노드의 공간 프로퍼티에 따라 탄젠트나 월드 스페이스로 간주됩니다. 이 입력은 픽셀당 셰이딩 노멀을 정의합니다. |
탄젠트(Tangent) | 표면 탄젠트를 입력으로 취합니다. 노멀은 머티리얼 루트 노드의 공간 프로퍼티에 따라 탄젠트나 월드 스페이스로 간주됩니다. 이 입력은 픽셀당 셰이딩 탄젠트를 정의합니다. |
SSS MFP | 서브서피스 스캐터링 평균 자유 경로(Mean Free Path, MFP)입니다. 머티리얼의 인식되는 밀도를 제어하고 머티리얼에 의한 라이트의 흡수 및 스캐터링에 영향을 줍니다. 더 정확하게는 광자가 물질 파티클과 상호작용하는 평균 거리(cm)를 정의합니다. 이 거리는 컬러 채널별로 제어됩니다. MFP는 투과율 및 슬랩 내에서 스캐터링되는 스캐터링 라이트의 양과 직접 상호작용합니다.
이 입력은 머티리얼 루트 노드에 할당된 서브서피스 프로파일 에셋이 없을 때만 사용됩니다. |
SSS MFP 스케일(SSS MFP Scale) | 이 입력은 서브서피스 프로파일의 서브서피스 스캐터링 평균 자유 경로의 반경을 0과 1 사이의 값으로 조절합니다. |
SSS 위상 애니소트로피(SSS Phase Anisotropy) | 양수 값은 라이트 방향을 따라 위상 함수를 늘여 포워드 스캐터링을 유발합니다. 음수 값은 함수를 라이트 방향을 따라 뒤로 늘여 백 스캐터링을 유발합니다. |
이미시브 컬러(Emissive Color) | 머티리얼 표면 위의 이미시브 컬러를 제어합니다. |
세컨드 러프니스(Second Roughness) | 세컨더리 스페큘러 로브의 러프니스를 제어합니다. 0(부드러움)에서는 러프니스가 거울처럼 반사되며, 1(완전히 거칢)에서는 러프니스가 완전 무광이거나 디퓨즈됩니다. 이 입력은 디퓨즈 러프니스에 영향력을 미치지 않습니다. |
세컨드 러프니스 가중치(Second Roughness Weight) | 프라이머리 및 세컨더리 스페큘러 로브 간의 혼합 인수입니다. 러프니스를 사용하는 첫 번째 스페큘러의 가중치는 (1 - SecondRoughnessWeight)입니다. 값이 0이면 프라이머리 로브만 렌더링합니다. 값이 0.5이면 두 러프니스의 50% 혼합을 렌더링하고 1.0은 세컨더리 로브만 렌더링합니다. |
퍼즈 러프니스(Fuzz Roughness) | 퍼지 레이어의 거친 정도를 제어합니다. 러프니스가 0인 퍼즈는 부드러우며(더 빛남) 1인 퍼즈는 완전히 거칩니다(무광). |
퍼즈 양(Fuzz Amount) | 0보다 크면 인터페이스에 퍼즈 같은 레이어를 추가하여 컬러 역반사를 유발합니다. 표면 레이어 위에 적용되는 퍼즈의 양을 제어합니다. 보통 패브릭 머티리얼을 만드는 데 사용됩니다. |
퍼즈 컬러(Fuzz Color) | 퍼즈 레이어의 컬러를 정의합니다. |
글린트 밀도(Glint Density) | 머티리얼 표면의 마이크로 패시트 밀도의 로그를 나타낸 것입니다. ConsoleVariables.ini 환경설정 파일에서 |
글린트 UV(Glint UVs) | 머티리얼 표면의 글린트 위치 및 스케일을 제어합니다. ConsoleVariables.ini 환경설정 파일에서 |
슬랩의 서브서피스 행동이 슬랩의 서브서피스 타입(Sub-Surface Type) 프로퍼티에 의해 정의됩니다. 주어진 슬랩에 사용되는 스캐터링 모델을 정의합니다. 기존 레거시 행동을 구현하거나 다른 모습을 구현할 수 있는 명시적인 제어 기능을 제공합니다.
사용할 수 있는 서브서피스 타입은 다음과 같습니다.
랩(Wrap): 랩 라이팅 모델을 사용하여 라이트 스캐터링을 에뮬레이트합니다. 이는 레거시 서브서피스 셰이딩 모델과 동일합니다.
양면 랩(Two-Sided Wrap): 표면의 양면에 랩 라이팅 모델을 사용하여 라이트 스캐터링을 에뮬레이트합니다. 이는 레거시 양면 폴리지 셰이딩 모델과 동일합니다.
디퓨전(Diffusion): 디퓨전 모델(화면 공간 또는 레이 트레이싱)을 사용하여 라이트 스캐터링을 업데이트합니다. SSS 프로파일이 제공되는 경우, 이는 레거시 서브서피스 프로파일 셰이딩 모델과 동일합니다. 제공되지 않으면 슬랩에서 직접 MFP를 제어할 수 있습니다.
단순 볼륨(Simple Volume): 투과율 부분에는 비어-람베르트 모델을, 스캐터링 부분에는 피팅된 모델을 혼합하여 사용합니다.
수직으로 레이어링된 슬랩의 경우, 단순 볼륨 서브서피스 타입만 유효합니다. 다음은 레이어 타입별로 지원되는 서브서피스 타입 목록입니다.
| 하단 레이어 | 상단 레이어 |
|---|---|
없음 단순 볼륨 Wrap 양면 랩 디퓨전 | 없음 단순 볼륨 |
플랫폼과 셰이딩 경로에 따라 디퓨전 서브서피스 타입을 사용하지 못할 수도 있습니다. 이러한 경우 시스템은 단순한 비스캐터링 디퓨즈 모델로 전환됩니다. 디퓨전은 디퍼드 경로 및 패스 트레이싱 경로, 그리고 Xbox One, Xbox Series S, Xbox Series X, PlayStation 4 및 5, PC DX11, PC DX12, Linux Vulkan 및 Mac OS 플랫폼에서만 지원됩니다. 모바일과 같은 저사양 플랫폼에서는 디퓨전 모델을 지원하지 않습니다. 각 슬랩 노드의 하단에는 토폴로지에 따라 사용할 스캐터링 모델을 나타내는 태그가 있습니다. 이 스캐터링 타입이 토폴로지와 호환되지 않는 경우, 이 태그는 서브서피스 타입 프로퍼티에 지정된 것과 다를 수 있습니다.
서브스트레이트 머티리얼 파라미터화
서브스트레이트는 베이스 컬러/스페큘러/메탈니스를 사용하던 비서브스트레이트 패스와 달리 F0/디퓨즈 알베도 파라미터화를 사용합니다. 이 파라미터화는 더 많은 유연성을 제공하면서 에너지도 절약합니다. 하지만 처음에는 F0에 적합한 값을 선택하는 것이 직관적이지 않을 수 있습니다.
값을 선택하는 데 도움이 되도록 머티리얼을 다음과 같은 두 그룹으로 나눌 수 있습니다.
유전체 머티리얼: 메탈니스가 0인 머티리얼로, 선형 공간에서 F0 값이 0.02~0.06 사이입니다. 원석은 선형 공간에서 최대 0.18의 F0 값을 가질 수 있습니다.
도체 머티리얼: 메탈니스가 1인 머티리얼로, 선형 공간에서 F0 값이 보통 0.5~1 사이입니다.
이 범위에는 현실에서 거의 접할 수 없는 반도체 머티리얼이 포함됩니다.
이 다이어그램은 Adobe Substances에서 가져온 것입니다.
아래는 일반적인 머티리얼의 F0 값 목록입니다.
이 목록은 Tomas Akenine-Moller, Eric Haines, Naty Hoffman의 Real-Time Rendering 3차 개정판에서 발췌한 것입니다.
| 머티리얼 | F0 선형 | F0 sRGB | 컬러 |
|---|---|---|---|
워터 | 0.02 | 0.15 | |
플라스틱/유리(낮음) | 0.03 | 0.21 | |
플라스틱(높음) | 0.05 | 0.24 | |
유리(높음)/루비 | 0.08 | 0.31 | |
다이아몬드 | 0.17 | 0.45 | |
철 | 0.56, 0.57, 0.58 | 0.77, 0.78, 0.78 | |
구리 | 0.95, 0.64, 0.54 | 0.98, 0.82, 0.76 | |
금 | 1.00, 0.71, 0.29 | 1.00, 0.86, 0.57 | |
알루미늄 | 0.91, 0.92, 0.92 | 0.96, 0.96, 0.97 | |
은 | 0.95, 0.93, 0.88 | 0.98, 0.97, 0.95 |
머티리얼 단순화
머티리얼 단순화는 다음 제한 중 하나가 머티리얼과 일치하지 않은 경우 발생합니다.
블렌더블 GBuffer 포맷에서 머티리얼에 둘 이상의 클로저가 있습니다.
어댑티브 GBuffer 포맷에서 머티리얼에 프로젝트/플랫폼 세팅보다 픽셀별 클로저가 더 많거나 픽셀별 바이트 수가 프로젝트 세팅을 초과합니다.
머티리얼은 이러한 파라미터에 따라 요구 사항이 충족될 때까지 슬랩을 파라미터 블렌딩과 병합하여 단순화됩니다. 단순화 이유와 디테일은 서브스트레이트 패널(창(Window) > 서브스트레이트(Substrate))에서 확인할 수 있습니다.
블렌더블 GBuffer 포맷을 사용하는 프로젝트/플랫폼의 경우, 최종 머티리얼은 강제로 레거시 셰이딩 모델에 해당하는 픽셀별 단일 기능을 사용합니다. 이러한 기능은 다음과 같습니다(우선순위 순서).
퍼즈
서브서피스 스캐터링(프로파일 포함 또는 미포함)
흐릿함
지정된 픽셀에 대해 여러 기능이 동시에 활성화되어 있는 경우, 우선순위가 가장 높은 기능만 사용됩니다. 애니소트로피는 다른 기능과 독립적으로 활성화될 수 있습니다.
아래 예시 머티리얼의 경우, 머티리얼 에디터의 서브스트레이트 통계 패널을 보면 서브스트레이트 머티리얼의 예산이 부족하여 단순화되었음을 알 수 있습니다.
서브스트레이트는 각 슬랩별로 또는 SubstrateShadingModel 표현식 노드를 사용하는 경우 자동으로 활성화할 수 있는 다양한 비주얼 기능을 지원합니다. 이러한 셰이딩 모델은 다음과 같습니다.
F90
퍼즈
SSS 이펙트(SSS 프로파일, 래핑됨, 단순 볼륨)
흐릿함
애니소트로피
스페큘러 프로파일
글린트
블렌더블 GBuffer 포맷 사용 시 일부 기능은 지원되지 않습니다. 지원되지 않는 기능은 다음과 같습니다.
F90
픽셀별 MFP를 사용하는 디퓨전 SSS
흐릿함
글린트
이 경우 기능이 머티리얼에서 시각적으로 누락됩니다. 스페큘러 LUT는 지원되지만 뷰에만 종속되는 이펙트로 근사 처리됩니다.
이러한 기능을 두 GBuffer 포맷 간에 시각적으로 비교하면 다음과 같습니다.
퍼포먼스상의 이유로 인해 다음과 기능은 라이팅 평가 동안 복잡도 세트에 매핑되며, 복잡도 세트에 따라 평가 비용이 증가합니다.
단순: 디폴트 라이팅포함 머티리얼(컬러 디퓨즈 및 스페큘러, 러프니스)
단일: F90 컬러, 퍼즈, SSS 이펙트(프로파일, 래핑됨, MFP를 사용하는 단순 볼륨), 클리어 코트
복합: 애니소트로피, 스페큘러 프로파일, 눈, 헤어
복합 특수: 글린트
서브스트레이트 머티리얼 노드
다음과 같은 노드 타입을 사용하여 서브스트레이트 머티리얼을 제작할 수 있습니다.
| 노드 타입 | 설명 |
|---|---|
이 노드들은 단순한 머티리얼부터 헤어, 눈, 물과 같은 보다 복잡한 머티리얼까지 대부분의 표면 타입을 나타냅니다. | |
이 노드들은 여러 서브스트레이트 슬랩 BSDF를 혼합하고 레이어링하여 복잡하고 다양한 표면을 만듭니다. | |
이 노드들은 언리얼 엔진의 디폴트 레거시 머티리얼 셰이딩 모델이나 코팅된 레이어 생성과 같은 서브스트레이트에 사용할 일반적인 머티리얼 타입을 변환합니다. | |
이 노드들은 서브스트레이트 머티리얼에 대한 머티리얼 도메인을 정의하며 레거시 머티리얼 도메인 이름과 직접적으로 유사합니다. | |
이 노드들은 서브스트레이트 슬랩의 평균 자유 경로에 투과율을 매핑하는 등 머티리얼 내에서 일부 변환을 수행하는 데 사용됩니다. |
서브스트레이트 BSDF 노드
서브스트레이트 BSDF(양방향 스캐터링 분포 함수) 노드는 대부분의 표면 타입을 나타내는 데 사용되며, 제작한 머티리얼의 비주얼 룩을 제어하고 그에 따라 해당 도메인과 셰이딩 모델을 자동으로 설정합니다. 목표는 머티리얼 루트 노드에서 디테일 패널을 통해 이러한 측면을 수동으로 설정할 필요가 없게 하는 것입니다.
서브스트레이트에는 다음과 같은 BSDF가 있습니다.
슬랩 BSDF는 서브스트레이트 제작을 위한 프라이머리 노드이며 다른 슬랩과 함께 레이어링할 수 있습니다. 다른 BSDF는 특수 사용 사례를 위한 것이므로 다른 BSDF와 혼합하지 않고 단독으로 사용해야 합니다.
| 서브스트레이트 BSDF 노드 | 설명 |
|---|---|
Substrate Slab BSDF | 디퓨즈, 스페큘러, 흐릿함, 클로스 퍼즈, 애니소트로피 등 여러 컴포넌트를 종합하는 물질 슬랩을 원칙적으로 나타낸 것입니다. 불투명 서브서피스 또는 반투명 스캐터링 및 반투명 투과율 서브서피스 스캐터링과 같은 이펙트를 렌더링할 수 있습니다. |
Substrate Eye BSDF | 서브스트레이트로 눈 머티리얼을 렌더링하기 위한 전용 BDFS입니다. 각막과 홍채에 대한 특정 입력이 포함됩니다. |
Substrate Hair BSDF | 서브스트레이트로 헤어 머티리얼을 렌더링하기 위한 전용 BDFS입니다. |
Substrate Simple Clear Coat | 클리어 탑 코트로 머티리얼을 간단하고 빠르게 렌더링할 수 있습니다. ㄴ이 노드는 백그라운드에서 서브스트레이트 슬랩 BSDF를 사용하지만 클리어 코트 렌더링의 워크플로를 간소화합니다. 레거시 클리어 코트 머티리얼을 렌더링하는 데 최적화되어 있습니다. |
Substrate SingleLayerWater BSDF | |
Substrate Unlit BSDF | 컬러 이미시브 휘도를 사용하여 언릿 엘리먼트를 렌더링하는 데 사용되는 BSDF입니다. 이 서브스트레이트 노드는 레거시 그레이스케일 오파시티를 컬러 투과율로 대체합니다. 언릿 슬랩을 블렌딩해야 하는 경우 이미시브 컬러 입력만 사용되는 일반 서브스트레이트 슬랩을 사용합니다. 커버리지 가중치 연산자를 사용할 수 있습니다. |
Substrate Volumetric-Fog-Cloud BSDF | 관여 매체를 나타내는 데 사용되는 BSDF입니다. 이 노드는 볼류메트릭 클라우드(Volumetric Clouds)와 불균질 볼륨(Heterogeneous Volumes) 렌더링에 사용됩니다. |
서브스트레이트 연산자 노드
서브스트레이트 연산자(Substrate Operator) 노드는 여러 서브스트레이트 슬랩을 혼합하거나 레이어를 겹쳐 복잡하고 다양한 표면을 만듭니다. 서브스트레이트 슬랩이 물질 조각을 나타내는 경우 연산자는 해당 조각들을 함께 결합하는 방법을 제시합니다.
선택할 수 있는 서브스트레이트 연산자는 다음과 같습니다.
서브스트레이트 연산자가 모든 서브스트레이트 BSDF에서 작동하는 것은 아닙니다. Substrate Slab BSDF 및 Substrate Simple Clear Coat에서만 이러한 연산자 노드를 사용할 수 있습니다.
| 서브스트레이트 연산자 노드 | 설명 |
|---|---|
Substrate Coverage Weight | 이 연산자는 슬랩에서 입력을 받아 가중치가 커버리지의 양인 경우 커버리지의 양을 제어합니다. 가중치를 줄이면 슬랩의 물질 커버리지가 감소하여 아래의 물질을 투시할 수 있습니다. 가중치는 레거시 머티리얼의 루트 노드에 있는 오파시티(Opacity) 입력과 비슷합니다. 예를 들어, 반투명 블렌드 모드를 사용할 때 표면을 반투명하게 만들거나 클리어 코트 탑 레이어의 비저빌리티를 줄이는 데 사용할 수 있습니다. |
Substrate Horizontal Blend | 이 연산자는 배경(Background)과 전경(Foreground)이라는 두 슬랩으로부터 입력을 받습니다. 혼합 입력은 선형 보간을 사용하여 두 슬랩이 서로 혼합되는 양을 제어합니다. 표면 위의 슬랩 사이를 부드럽게 전환하는 데 사용할 수 있습니다. |
Substrate Vertical Layer | 이 연산자는 상단(Top)과 하단(Bottom) 레이어라는 두 슬랩으로부터 입력을 받습니다. 상단 슬랩은 하단 슬랩 위에 레이어링되며, 하단 레이어의 외관은 상단 레이어의 프로퍼티에 영향을 받습니다. Top Thickness 입력을 사용하여 상단 레이어가 하단 레이어보다 두꺼운 정도를 제어합니다. 이 연산자는 자동차 페인트, 목재 광택, 젖은 표면을 연출하는 데 이상적입니다. |
Substrate Add | 이 연산자는 2개의 슬랩에서 입력을 받아 서로 합칩니다. 생성된 머티리얼은 들어오는 에너지보다 표면에서 나가는 에너지를 더 많이 생성하기 때문에 물리적으로 타당하지 않습니다. 이 노드는 가급적 사용하지 말아야 합니다. |
Substrate Select | 이 오퍼레이터는 두 개의 서브스트레이트 머티리얼 패스에서 입력을 취하여 하나를 선택합니다. 두 패스 모두 파라미터 블렌딩이 활성화되므로 결국 하나의 슬랩 머티리얼만 남게 됩니다. 예를 들어 블루 노이즈를 사용하여 서브서피스 프로파일이 있거나 없는 슬랩을 확률적으로 선택하는 데 사용할 수 있습니다. 퍼포먼스 측면에서 흥미로운 점은, 단일 슬랩을 출력으로 강제하기 때문에 라이팅 패스 동안 픽셀별로 하나의 클로저만 평가된다는 것입니다. |
오퍼레이터 노드에는 파라미터 블렌딩 사용(Use Parameter Blending)이 켜진 경우 입력 슬랩을 단일 슬랩에 파라미터 블렌딩하는 옵션이 있습니다. 서브스트레이트 연산자는 슬랩을 서로 혼합하고 레이어를 겹쳐 복잡한 머티리얼 외관을 만들 수 있으므로 런타임 시 주로 라이팅 평가에서 비용이 많이 발생할 수 있고, 이는 퍼포먼스에 악영향을 미칠 수 있습니다. 파라미터 블렌딩은 시각적 정확도와 비용이 많이 드는 런타임 퍼포먼스의 라이팅 평가를 보다 저렴한 라이팅 평가로 바꾸는 최적화 기능입니다.
이 파라미터 블렌딩 최적화에 대한 자세한 내용은 이 페이지의 파라미터 블렌딩 섹션을 참조하세요.
서브스트레이트 커버리지 가중치
Substrate Coverage Weight 연산자는 수직 레이어링 작업에서 두 슬랩의 비율을 제어합니다. 가중치(Weight) 입력은 Substrate Vertical Layer 연산자와 함께 레이어링할 때 이 머티리얼의 커버리지를 구동합니다(아래 예시 참조). 또한, 반투명 블렌드 모드가 오파시티를 사용하는 방식과 유사하게 알파를 커버리지 또는 오파시티로 사용할 때 반투명 표면을 얻을 때도 이 연산자를 사용할 수 있습니다.
위 그래프는 가중치가 하단 슬랩 위에 적용되는 커버리지의 양을 구동하는 Substrate Coverage Weight 연산자를 사용합니다. 가중치 1은 완전히 불투명하여 녹색 텍스처 패턴을 차단합니다. 0.5는 50% 투명도로 두 머티리얼의 컬러를 혼합하고 텍스처 패턴을 표시합니다. 0은 완전히 투명하며 녹색 텍스처 패턴만 표시합니다.
Substrate Horizontal Layer
Substrate Horizontal Layer 연산자는 2개의 슬랩을 혼합합니다. 하나는 배경을 나타내고 다른 하나는 전경을 나타냅니다. 혼합(Mix) 입력은 선형 보간을 사용하여 혼합 비율을 제어합니다.
배경(Background) 입력은 0일 때 완전히 표시되고 전경(Foreground)은 1일 때 완전히 표시됩니다. 혼합 비율이 0.5면 슬랩이 함께 혼합되고 혼합이 픽셀별로 평가됩니다. 혼합 입력은 아래 예시처럼 텍스처를 사용하여 혼합 비율을 제어할 수 있습니다.
Substrate Vertical Layer
Substrate Vertical Layer 연산자는 상단 슬랩과 하단 슬랩을 레이어링합니다. 이 노드는 물리적으로 올바른 투과율과 스캐터링을 적용하기 위해 상단 레이어의 두께도 고려하는데, 이는 코팅 연산과 유사하며 상단 레이어가 하단 레이어를 덮습니다. 하단 슬랩의 외관은 상단 슬랩의 프로퍼티에 따라 다릅니다. 상단 입력으로 전달된 BSDF가 완전히 불투명한 경우, 하단 슬랩이 전혀 표시되지 않습니다.
수직 레이어링은 불투명한 하단 레이어 위에 투명 또는 반투명 탑 코트가 필요한 상황에서 특히 유용합니다. 예시로는 자동차 페인트, 광택 처리된 목재 표면, 물웅덩이와 같은 젖은 표면이 있습니다.
서브스트레이트 추가
Substrate Add 연산자는 2개의 슬랩을 결합하고 그 결과를 출력합니다. 이 연산자는 표면에서 나가는 에너지가 들어오는 에너지를 초과하는 머티리얼을 생성할 수 있기 때문에 물리적으로 타당하다고 간주되지 않습니다. 물리적인 타당성보다 아트 디렉션이 더 중요한 경우에 유용합니다. 그렇지만, 표면을 물리적으로 정확하게 유지하려면 이 연산자를 사용하면 안 됩니다.
서브스트레이트 빌딩 블록 노드
서브스트레이트 빌딩 블록(Substrate Building Block) 노드는 몇 가지 일반적인 사용 사례에 대한 변환을 제공하는 머티리얼 함수 세트입니다. 이는 머티리얼 함수이므로 직접 열어서 검사할 수 있습니다.
선택할 수 있는 서브스트레이트 빌딩 블록은 다음과 같습니다.
| 서브스트레이트 빌딩 블록 노드 | 설명 |
|---|---|
Substrate Coated Layer | 2개의 슬랩이 서로 레이어링되어 코팅된 머티리얼을 생성하는 머티리얼 함수입니다. 코팅 인터페이스와 흡수를 제어하기 위해 사용자 친화적인 파라미터를 노출합니다. |
Substrate Standard Surface Opaque | 불투명 표면에 대한 사용자 친화적 파라미터화를 통해 Uber Shader와 유사한 서브스트레이트 머티리얼을 생성하는 머티리얼 함수입니다. 파라미터화에는 업계 표준 어휘와 개념이 사용됩니다. |
Substrate Standard Surface Translucent | 반투명 표면에 대한 사용자 친화적 파라미터화를 통해 Uber Shader와 유사한 서브스트레이트 머티리얼을 생성하는 머티리얼 함수입니다. 파라미터화에는 업계 표준 어휘와 개념이 사용됩니다. |
Substrate UE4 Default Shading | 비서브스트레이트 머티리얼에 사용되는 디퓨즈, 메탈릭, 스페큘러 파라미터화를 위해 서브스트레이트를 사용하여 디폴트 셰이딩 모델을 리플리케이트하는 머티리얼 함수입니다. |
Substrate UE5 Unlit Shading | UE4 언릿 셰이딩 모델을 서브스트레이트로 재현하는 머티리얼 함수입니다. |
서브스트레이트 엑스트라 노드
서브스트레이트 엑스트라(Substrate Extras) 노드는 서브스트레이트 머티리얼이 데칼 또는 라이트 함수로 사용되도록 지정하는 등의 경우에 사용되는 머티리얼 타입과 함수를 세팅합니다. 이러한 노드는 머티리얼 도메인의 일부로 할당된 비서브스트레이트 머티리얼과 직접적으로 유사합니다.
선택할 수 있는 서브스트레이트 엑스트라는 다음과 같습니다.
이러한 노드는 모놀리식이므로 개별적으로 사용해야 합니다. 서브스트레이트 연산자와 호환되지 않습니다.
머티리얼 그래프의 끝에서 정면 머티리얼(Front Material) 입력에 연결하기 직전에 이 노드를 배치하는 습관을 들이는 것이 바람직합니다.
| 서브스트레이트 엑스트라 노드 | 설명 |
|---|---|
Substrate Convert To Decal | 모든 머티리얼 그래프를 데칼로 사용할 수 있습니다. 이 노드는 머티리얼이 데칼 머티리얼로만 변환되고 사용되도록 지정합니다. |
Substrate Light Function | 이 노드는 머티리얼이 라이트 함수로만 사용되도록 지정합니다. 개별적으로 사용해야 합니다. |
Substrate Post Process | 이 노드는 머티리얼이 포스트 프로세스 머티리얼로만 사용되도록 지정합니다. 개별적으로 사용해야 합니다. |
Substrate UI | 이 노드는 머티리얼이 UMG UI 디자이너와 함께 사용하도록 설계된 것과 같이 유저 인터페이스 엘리먼트로만 사용되도록 지정합니다. 개별적으로 사용해야 합니다. |
예를 들어, Substrate Convert To Decal 노드를 사용할 때 모든 서브스트레이트 머티리얼을 씬의 메시 데칼 및 데칼 액터에 적용되는 데칼 머티리얼로 사용할 수 있습니다.
엑스트라 노드는 머티리얼 루트 노드의 정면 머티리얼 입력에 연결될 때 머티리얼 도메인(Material Domain)을 자동으로 설정합니다. 일부 엑스트라 노드에서는 출력을 지원하기 위해 블렌드 모드를 변경해야 합니다.
Substrate Convert To Decal 노드를 사용할 때는 블렌드 모드를 TranslucentGrey Transmittance, Colored Transmittance, TranslucentColorTransmittance 또는 AlphaComposite (Premultiplied Alpha)로 설정해야 합니다. 그렇지 않으면 머티리얼 에디터의 통계(Stats) 패널에 오류가 표시됩니다.
서브스트레이트 헬퍼 노드
서브스트레이트 헬퍼(Substrate Helper) 노드는 일부 변환을 수행하거나 레거시 머티리얼로 하던 작업을 처리하는 노드 및 머티리얼 함수 세트입니다.
| 서브스트레이트 헬퍼 노드 | 설명 |
|---|---|
Substrate Flip Flop | 뷰 입사각에 따라 표면 반사도를 제어합니다. 시야각을 기준으로 노멀 페이싱 컬러(F0)를 지표각 컬러(F90)로 보간할 수 있으며 감쇠 파라미터로 보간 속도를 제어합니다. |
Substrate Haziness-To-Secondary-Roughness | 베이스 표면 러프니스와 흐릿함에서 세컨더리 스페큘러 로브 러프니스를 계산합니다. 이 파라미터화를 통해 흐릿함을 물리적으로 타당하게 만들고 지각적으로 손쉽게 제작할 수 있습니다. |
Substrate IOR-To-F0 | 유전체 IOR을 F0 값으로 변환합니다. |
Substrate Metalness-To-DiffuseColorF0 | 메탈릭 파라미터(베이스 컬러/스페큘러/메탈릭)를 DiffuseAlbedo/F0 파라미터화로 변환합니다. |
Substrate Rotation-To-Tangent | 회전 각도를 탄젠트 벡터로 변환합니다. |
Substrate Thin-Film | 입력 표면 프로퍼티에 따른 결과 머티리얼 스페큘러 파라미터 F0 및 F90을 계산합니다. |
Substrate Transmittance-To-MeanFreePath | 표면에 수직으로 보이는 관여 매체의 슬랩에 해당하는 투과율 컬러를 해당 슬랩의 평균 자유 경로로 변환합니다. 이 노드는 슬랩 BSDF SSS MPF 입력에 직접 매핑됩니다. |
Substrate View-Dependent-Coverage | 뷰 입사각에 따라 커버리지를 조정합니다. 이 노드는 뷰 종속 이펙트를 암시할 만큼 두께가 충분히 두꺼운 레이어를 혼합하는 데 유용합니다. 예를 들면, 큰 먼지 입자는 입사각에 비해 지표각에서 더 큰 오클루전을 가집니다. |
서브스트레이트 노드에 대한 추가 참고 사항
서브스트레이트 데칼 머티리얼
서브스트레이트 데칼(Substrate Decals)은 현재 레거시 데칼 블렌드 모드 경로와 동일한 기능을 사용합니다.
서브스트레이트 데칼의 향후 버전에서는 물, 혈액, 끈끈한 물질 등에 사용되는 레이어 반투명 슬랩과 같이 이미 서브스트레이트에서 사용할 수 있는 다른 기능들과 유사하면서도 보다 강력한 기능을 발휘하는 세트를 제공할 예정입니다. 예를 들어, 자동차 페인트 긁힘, 지면 계단, 타이어 자국과 같이 두께에 따라 부식될 수 있는 레이어를 선보일 예정입니다.
Substrate Shading Models 노드
프로젝트에 서브스트레이트가 활성화된 다음 전에 생성했던 머티리얼을 열면 해당 슬랩을 사용하도록 머티리얼이 자동으로 변환됩니다. 기존의 모든 입력은 Substrate Shading Model 노드에 반영됩니다.
새 서브스트레이트 머티리얼을 생성할 때 이 노드를 수동으로 추가하거나 사용하면 안 됩니다.
서브스트레이트 통계 패널
서브스트레이트 통계 패널은 머티리얼 그래프 아래 머티리얼 에디터에서 사용할 수 있습니다.
서브스트레이트 패널에는 머티리얼, 토폴로지, 그 기능 및 단순화에 대한 통계가 표시됩니다.
연산자를 사용한 파라미터 블렌딩
픽셀당 다수의 양방향 스캐터링 분포 함수(Bidirectional Scattering Distribution Function, BSDF)를 사용하면 머티리얼 그래프의 수에 비례하여 렌더링 프로세스가 느려집니다. 두 BSDF에 대한 라이팅을 평가하는 것은 단일 BSDF보다 2배 느립니다. 이는 불투명 표면과 반투명 표면 모두에 해당됩니다.
연산자 노드에는 그래프의 모든 혼합 및 레이어 작업의 외관을 유지하면서 머티리얼의 퍼포먼스와 메모리 사용량을 최적화하기 위한 파라미터 블렌딩 사용(Use Parameter Blending) 체크 박스가 있습니다. 머티리얼 루트 노드 앞의 가장 오른쪽 연산자 노드에서만 세팅을 활성화해야 합니다. 그래프의 다른 모든 노드에는 파라미터 블렌딩이 자동으로 적용됩니다.
파라미터 블렌딩은 머티리얼 내 여러 슬랩의 퍼포먼스가 중요할 때 좋은 예비 전환 옵션입니다. 활성화하면 두 슬랩이 단일 라이팅 평가만 필요한 단일 슬랩으로 병합됩니다. 이렇게 병합되면 두 개의 개별 슬랩보다 훨씬 적은 메모리를 사용합니다.
아래의 예시 머티리얼은 콘텐츠 예제 서브스트레이트 레벨에서 가져온 것이며 파라미터 블렌딩 사용이 활성화 및 비활성화되어 있습니다.
이 머티리얼(M_Substrate_ShaderBall_IceRocks)은 두 개의 BSDF를 사용합니다. 왼쪽은 블렌딩하지 않은 상태고 오른쪽은 파라미터 블렌딩을 사용한 상태입니다.
이는 더 복잡한 머티리얼(M_Substrate_ShaderBall_AnisoOverSSS)로, 2개의 수직 레이어 연산자와 단일 커버리지 가중치 연산자를 사용하여 4개의 슬랩을 블렌딩합니다. 이 머티리얼의 메모리 비용은 픽셀당 108바이트입니다. 파라미터 블렌딩 사용이 활성화되면 모든 연산자에 대한 블렌딩이 픽셀당 28바이트로 줄어듭니다. 왼쪽 머티리얼은 블렌딩하지 않은 상태고 오른쪽 머티리얼은 파라미터 블렌딩을 사용한 상태입니다.
연산자 노드의 파라미터 블렌딩 외에도 다음 워크플로 중 하나를 사용하여 비슷한 결과를 얻을 수 있습니다.
그래프에서 디퓨즈 알베도, F0, F90, 러프니스 및 기타 어트리뷰트를 수동으로 블렌딩합니다. 모든 어트리뷰트를 정면 머티리얼 입력에 연결된 단일 슬랩에 전달합니다. 이 접근법은 분리된 경우에는 잘 작동할 수 있지만 복잡한 머티리얼로 구성된 대규모 라이브러리에서는 관리하기 어려울 수 있습니다.
그래프 기반 레이어드 머티리얼 워크플로를 사용합니다. 머티리얼 함수를 이용하여 작업을 재사용하므로, 첫 번째 옵션보다 확장성이 더 좋습니다.
모바일과 같은 저사양 플랫폼에서는 컴파일러가 퍼포먼스를 위해 파라미터 블렌딩을 자동으로 활성화합니다. 중간 플랫폼에서는 타깃 퍼포먼스 및 메모리 제약 조건을 유지하기 위해 파라미터 블렌딩이 머티리얼의 하단 레이어에 점진적으로 도입됩니다.
메탈니스 및 스페큘러 반응
서브스트레이트에서 사용하는 파라미터화는 비서브스트레이트 (또는 레거시) 머티리얼의 디폴트 릿 셰이딩 모델과 다르게 더 이상 메탈릭 입력이 없습니다. 이 파라미터화는 추상화된 값(메탈릭 및 스페큘러 등)을 없애고 실제 현실 세계의 단위를 사용하는 피지컬 프로퍼티로 전환하기 위한 것입니다.
서브스트레이트 머티리얼의 반사 프로퍼티와 스페큘러 반응은 디퓨즈 알베도, F0, F90의 3가지 어트리뷰트로 정의됩니다. 서브스트레이트는 자동으로 에너지 보존을 시행하여 스페큘러 인터페이스와 매체가 에너지를 부가하지 않도록 합니다. 따라서 F0이 높을수록 디퓨즈 기여도가 덜 눈에 띄게 됩니다.
메탈릭은 Substrate Metalness-To-DiffuseAlbedo-F0 헬퍼 노드를 사용하여 에뮬레이트됩니다. 베이스 컬러, 스페큘러, 메탈릭 값을 입력으로 가져와서 서브스트레이트 슬랩의 디퓨즈 알베도 및 F0에 매핑되는 값으로 변환합니다.
EdgeColor 또는 F90 입력을 사용하면 라이트에 대한 다양하고 복잡한 머티리얼 디퓨즈 및 스페큘러 반응을 얻을 수 있습니다. 예를 들면, 청록색에서 노란색까지, 탄젠트에 수직인 스페큘러 반사가 있는 빨간색 스피어입니다.
Substrate FlipFlop 헬퍼 노드는 노멀 기반 스페큘러 컬러화를 얻는 데 유용합니다. 조정 가능한 감쇠 트랜지션을 통해 F0와 F90의 스페큘러 컬러를 NoV의 함수로 제어합니다.
러프 리프랙션
서브스트레이트는 반투명 상단 레이어가 있는 레이어드 불투명 머티리얼 및 반투명 오브젝트를 통해 러프 리프랙션을 지원합니다. 디스토션/리프랙션을 사용할 때 씬 배경의 흐릿함과 굴절된 오브젝트까지의 거리는 프라이머리 머티리얼의 러프니스와 굴절된 오브젝트까지의 거리를 통해 계산됩니다.
반투명 러프 리프랙션
러프 리프랙션이 있는 반투명 머티리얼을 만들려면 디테일 패널에서 다음 프로퍼티를 설정합니다.
블렌드 모드(Blend Mode): TranslucentColoredTransmittance, TranslucentGreyTransmittance 또는 ColoredTransmittanceOnly.
리프랙션 메서드(Refraction Method): Index of Refraction(IOR), Pixel Normal Offset 또는 2D Offset.
리프랙션(Refraction), 러프니스, SSS MFP에 값을 전달합니다. 아래 그래프는 러프니스가 0보다 클 때 단순화한 서리가 낀 유리를 만듭니다. 완전히 투명한 머티리얼을 만드는 데는 높은 SSS MFP 값이 사용되는 한편 IOR은 1.514로 유리에 가깝습니다.
아래 예시에서 러프니스 값이 증가할수록(왼쪽에서 오른쪽으로 0, 0.2, 0.6) 유리 뒤의 오브젝트가 더 흐릿해집니다.
러프 리프랙션을 통한 흐림은 씬의 반투명 엘리먼트 뒤에 있는 뎁스를 고려하기 위해 근사치를 사용합니다.
불투명 러프 리프랙션
서브스트레이트 코팅 레이어는 상단 코팅 레이어의 러프니스와 두께에 따라 그 아래의 레이어를 흐리게 할 수 있습니다. 이러한 타입의 리프랙션은 퍼포먼스 비용이 더 많이 들며, 프로젝트 내 프로젝트 세팅의 엔진(Engine) > 렌더링(Rendering) 카테고리에서 활성화해야 합니다. 이 기능을 활성화하려면 서브스트레이트 불투명 머티리얼 러프 리프랙션(Substrate opaque material rough refraction) 박스에 체크합니다.
아래 그래프는 불투명 체커보드 위에 클리어 코트가 있는 수직 레이어 머티리얼로 불투명 머티리얼 러프 리프랙션을 사용한 예시를 보여줍니다.
러프니스 및 두께(Thickness) 파라미터는 하단 머티리얼 레이어에 적용되는 블러 효과의 강도를 결정합니다. 두 값 중 하나를 늘리면 리프랙션의 블러 정도가 늘어납니다.
아래 예시에서 이를 확인할 수 있는데, 왼쪽의 클리어 코트 상단 레이어의 러프니스와 두께가 0.1입니다. 오른쪽 예시에서는 러프니스가 0.8이고 두께가 6이므로 하단 레이어가 흐려집니다.
서브스트레이트 레이어 두께
하단 레이어의 두께는 묵시적으로 0.01cm로 고정되어 있습니다.
불투명한 표면(안이 들여다보이지 않는 표면)의 경우, 이 두께는 중요하지 않습니다.
반투명 표면(안이 들여다보이는 표면)의 경우, 주어진 두께에 대해 원하는 투과율을 표현하는 Transmittance to MFP 노드를 사용할 수 있습니다.
얇은 표면(두께가 있지만 지오메트리로 모델링하기에는 너무 얇은 표면)의 경우 머티리얼에서 얇은 표면 여부(Is Thin Surface) 옵션을 활성화할 수 있습니다. 그런 다음, 루트 노드에서 하단 레이어의 두께를 지정합니다.
서브스트레이트 머티리얼 인스턴스 오버라이드
머티리얼 인스턴스에서 특정 머티리얼 프로퍼티(셰이딩 모델, 스페큘러 프로파일 등)를 오버라이드할 수 있습니다. 이러한 오버라이드에는 몇 가지 제한 사항이 있습니다.
셰이딩 모델(Shading Model) 오버라이드는 머티리얼에 SubstrateShadingModel 노드만 포함되어 있는 경우에만 사용할 수 있습니다. 머티리얼에 슬랩이 포함된 경우 오버라이드 옵션을 사용할 수 없습니다.
스페큘러 프로파일(Specular Profile) 오버라이드는 슬랩에 스페큘러 프로파일이 포함된 경우에만 사용할 수 있습니다. 오버라이드가 제공되면 모든 슬랩의 스페큘러 프로파일(있는 경우)을 덮어씁니다.
서브서피스 스캐터링 및 관여 매체
서브스트레이트 슬랩에는 관여 매체가 포함되어 있으며 다양한 볼류메트릭 외관을 시뮬레이션하는 데 사용할 수 있습니다.
예를 들어, 불투명 머티리얼만 렌더링할 때 슬랩이 머티리얼 토폴로지의 하단에 있으면 서브서피스 스캐터링으로 간주됩니다. 다음과 같은 두 가지 경우를 고려해야 합니다.
머티리얼의 디테일 패널에서 슬랩에 서브서피스 프로파일이 할당된 경우, 픽셀 단위로 그 프로파일이 사용됩니다. 서브서피스 프로파일은 블렌더블이 아닙니다.
할당된 서브서피스 프로파일이 없으면 슬랩의 디퓨즈 알베도 및 SSS MPF 프로퍼티에서 스캐터링이 결정됩니다. 이 프로퍼티들은 블렌더블입니다.
서브서피스 스캐터링의 MFP는 콜리전이 발생하기 전까지 다양한 파장의 라이트가 매체를 통과하는 거리(cm)입니다. 아래 예시에서는 왼쪽에서 오른쪽으로 0에서 1까지 스케일 조절된 디퓨즈 알베도(흰색)와 SSS MFP(빨간색)를 보여줍니다.
불투명 머티리얼의 하단에 있지 않거나 반투명 머티리얼에 사용된 슬랩은 디퓨즈 알베도 및 SSS MFP 어트리뷰트에도 의존하는 볼류메트릭 표현으로 간주됩니다. 디퓨즈 알베도는 한 번이나 여러 번의 스캐터링을 고려하여 매체의 베이스 컬러를 나타냅니다.
SSS MFP 어트리뷰트는 표면에 수직인 뷰에 대한 매체의 투과율을 제어하는 방식으로, 아래 표면이 얼마나 보이는지를 나타냅니다. 디퓨즈 컬러는 라이트 스캐터링의 양을 나타내며, MFP 거리도 고려합니다.
왼쪽에서 오른쪽으로 검은색에서 파란색에 이르는 투과율 컬러가 있고 하단에서 상단으로 검은색에서 흰색에 이르는 디퓨즈 알베도가 있는 머티리얼의 예시입니다.
슬랩을 다른 슬랩 위에 수직으로 레이어링하는 것은 코팅 작업과 유사합니다. 하단 슬랩의 비저빌리티는 상단 슬랩의 투과율에 따라 다릅니다. 상단 슬랩의 커버리지(예: 표면의 물웅덩이 가장자리)를 줄여 점차 사라지게 할 수 있습니다. 이는 알파 블렌딩과 유사한 Coverage Weight 연산자 노드를 사용하여 얻을 수 있습니다.
왼쪽에서 오른쪽으로 검은색에서 파란색에 이르는 투과율이 있고 하단에서 상단으로 0에서 1에 이르는 커버리지가 있는 머티리얼의 예시입니다.
특정 투과율 또는 스캐터링 컬러를 얻으려면 Substrate Transmittance-To-MeanFreePath 헬퍼 노드를 사용해야 합니다. MFP는 표면이 노멀을 따라 수직으로 보일 때 노멀 입사에서 매칭되도록 TransmittanceColor에 대해 파생됩니다.
아래 예시에서는 SSS MFP가 투과율 컬러에서 파생된 분홍색 불투명 머티리얼의 파란색 서브서피스 스캐터링을 보여줍니다.
제작 권장 사항:
평균 자유 경로(Mean Free Path, MFP)는 서브서피스 스캐터링이 있는 반투명 또는 불투명 머티리얼에 대해 동일한 라이트의 행동을 나타냅니다. 즉, 라이트가 물질과 상호작용하기 전 매체 내부의 평균 경로가 흡수되거나 스캐터링되는 것을 의미합니다. 그러나 작성자 입장에서는 사용 사례에 따라 다르게 작성하는 것도 흥미로울 수 있습니다.
반투명, 즉 광학적으로 얇고 투명한 표면의 경우 MFP는 컬러가 아니며 라이트 전달을 측정하는 것이므로 특정 투과율 컬러를 얻으려고 할 때 MFP를 직접 제어하는 것은 권장되지 않습니다. 대신 Transmittance-To-MeanFreePath 노드를 사용하는 것이 좋습니다.
서브서피스 스캐터링(광학적으로 두껍고 불투명한)이 있는 표면의 경우, 직접 MFP를 작성할 수 있습니다. 이 경우 각 컴포넌트에 대해 라이트가 스캐터링되는 거리(cm)를 대략적으로 나타냅니다.
커버리지와 투과율 비교
커버리지(Coverage)는 머티리얼의 존재를 정의하며, 머티리얼의 존재 위치와 양을 정의하는 '마스크'라고 생각할 수 있습니다.
0은 커버리지가 전혀 없다는 뜻입니다. 즉, 레이어가 표시되지 않습니다.
1은 전체 커버리지, 즉 레이어가 표면을 완전히 덮고 있다는 뜻입니다.
커버리지를 조정하여 머티리얼을 블렌딩할 수 있습니다. 서브스트레이트에서 커버리지는 Coverage Weight 노드로 제어됩니다.
투과율(Transmittance)은 라이트가 머티리얼과 상호작용하는 방식, 즉 머티리얼을 통과하는 라이트의 양을 정의합니다.
0은 라이트가 투과되지 않는다는 뜻으로, 완전히 불투명한 머티리얼을 의미합니다.
1은 라이트가 완전히 투과된다는 뜻으로, 머티리얼이 라이트를 흡수하지 않아 완전히 투명하게 보인다는 의미입니다.
서브스트레이트에서 투과율은 슬랩의 MeanFreePath 입력에 의해 제어됩니다. 평균 자유 경로(Mean-Free-Path, MFP)는 광선이 물질과 상호작용하는 평균 거리를 정의합니다.
MFP가 0이면 광선이 항상 물질에 충돌하여 머티리얼을 통과하지 못한다는 뜻입니다. 이는 투과율 0에 해당합니다.
무한대의 MFP는 광선이 물질과 충돌하지 않아 통과한다는 뜻입니다. 이는 투과율 1에 해당합니다.
편의를 위해 특정 깊이에서 얻을 수 있는 특정 투과율 컬러를 평균 자유 경로로 변환하는 Transmittance-To-MFP 노드가 제공됩니다.
커버리지는 머티리얼 외관에 '그레이스케일'로만 영향을 미칩니다(머티리얼이 더 적게 또는 더 많이 표시됨). 반면, 투과율은 MFP 값에 따라 투과된 라이트의 컬러를 변경할 수 있습니다. 특정 컬러는 흡수되고 다른 색상은 투과되어 컬러링된 투과를 생성합니다. 이를 얻으려면 블렌드 모드를 TranslucentColoredTransmittance로 설정해야 합니다. 퍼포먼스를 위해 TranslucentGreyTransmittance를 사용하여 회색 투과로 예비 전환할 수 있습니다.
반투명 및 블렌드 모드
서브스트레이트는 기존의 비서브스트레이트 머티리얼에서 가능한 것보다 반투명 표면 셰이딩에 보다 강력한 옵션을 제공합니다. 표면이 물질(서브스트레이트 슬랩)로 구성되어 있다는 점을 고려할 때 이제 서브스트레이트 블렌드 모드 목록은 더 의미가 있습니다.
반투명 머티리얼을 생성하는 방법은 다음과 같습니다.
반투명을 지원하는 블렌드 모드를 선택합니다.
TranslucentColoredTransmittance
TranslucentGreyTransmittance
Colored Transmittance Only
머티리얼 루트 노드를 선택한 상태에서 디테일 패널의 라이팅 모드를 선택합니다. 아래 중 하나를 선택합니다.
Surface ForwardShading
Surface Translucency Volume - 이 옵션은 표면의 리플렉션을 지원합니다.
Volumetric NonDirectional - 비용이 더 저렴하지만, 라이트를 반사하지 않습니다.
아래는 반투명 서브스트레이트 머티리얼 구성의 예입니다. 블렌드 모드는 TranslucentColoredTransmittance로 설정되어 있으며 Surface ForwardShading 라이팅 모드를 사용하고 있습니다. 머티리얼 루트 노드의 정면 머티리얼 핀에 전달된 단일 슬랩을 사용하여 불투명하게 보이는 반투명 머티리얼을 생성합니다.
슬랩과 정면 머티리얼 입력 사이에 Substrate Coverage Weight 연산자를 사용하면 머티리얼의 투과율을 제어할 수 있습니다. Substrate Coverage Weight 노드의 가중치 입력을 사용하여 머티리얼의 투명도를 제어합니다.
(위와 같이) 0~1의 상수 값을 사용하여 전체 머티리얼의 오파시티를 제어하거나 (아래와 같이) 텍스처를 사용하여 머티리얼의 일부를 제어할 수 있습니다.
관여 매체의 MFP를 지정하면 한 단계 더 나아가 컬러 유리와 유사한 물질 슬랩을 생성할 수 있습니다. 이는 Transmittance-To-MeanFreePath 헬퍼 노드를 사용하여 구성됩니다. 아래 예시와 같이 SSS MFP에 연결된 주황색 TransmittanceColor를 사용하여 라이트를 투과하는 영역에서만 머티리얼을 주황색으로 칠합니다. 지정된 TransmittanceColor는 제공된 두께 입력(디폴트는 0.01cm)에서 도달하는 '타깃' 컬러입니다.
서브스트레이트 반투명에 대한 추가 참고 사항
반투명 머티리얼은 슬랩이 관여 매체의 볼륨으로 간주되더라도 스크린 스페이스 서브서피스 스캐터링(Screen Space Subsurface Scattering)을 지원하지 않습니다.
서브스트레이트 퍼포먼스
퍼포먼스 비용 개요:
단일 SubstrateShadingModel 노드를 사용하거나 레거시 입력을 사용하는 경우, 전체 비용은 레거시 모델과 비슷해야 합니다. 베이스 패스, 라이팅, 패스 등의 비용은 대략 같아야 합니다.
여러 기능을 동시에 사용하거나, 글린트 같은 고급 기능을 사용하거나, 머티리얼 내에서 여러 슬랩을 사용할 때처럼 여러 기능이 있는 단일 슬랩을 사용하는 경우, 프레임 비용이 증가하기 시작합니다.
파라미터 블렌딩 없이 여러 개의 슬랩을 사용할 경우, 두 번째 슬랩 비용이 더 증가하며, 이후 슬랩은 거의 선형적으로 비용이 증가합니다.
서브스트레이트는 베이스 패스 후에 머티리얼 분류 패스를 사용하여 라이팅 패스가 더 효율적으로 실행되도록 지원합니다. 이렇게 하면 베이스 패스 후에 약간의 고정 오버헤드가 추가되지만, 전반적인 라이팅 비용 감소에는 도움이 됩니다. 디버그 뷰 모드를 사용하면 비용을 이해할 수 있습니다.
머티리얼 수는 픽셀당 실행된 클로저 수를 표시하고 비용이 많이 소모될 수 있는 부분을 시각화합니다.
머티리얼 분류는 픽셀/타일에서 실행될 라이팅 복잡도를 표시합니다.
서브스트레이트 디버그 뷰 모드
서브스트레이트를 사용할 때 머티리얼의 퍼포먼스가 어떤지, 어떤 부분에 더 주의를 기울이면 좋은지 확인하는 것이 좋습니다. 서브스트레이트의 디버그 시각화 모드는 서브스트레이트 카테고리 아래의 뷰 모드(View Modes) 드롭다운 목록에 있습니다.
서브스트레이트에는 디버깅을 위한 다음과 같은 시각화 모드가 있습니다.
표의 이미지를 클릭하면 확대할 수 있습니다.
| 디버그 시각화 | 디버그 시각화 이름 | 설명 |
|---|---|---|
머티리얼 프로퍼티(Material Properties) | 마우스 커서 아래에 서브스트레이트 프로퍼티를 시각화합니다. 검사하려는 픽셀에 마우스 커서를 올리면 프로퍼티, 컬러 가중치, 머티리얼의 활성화된 기능, 사용된 바이트 등과 같이 라이팅에 사용되는 최종 패킹된 머티리얼 클로저가 표시됩니다. | |
머티리얼 수(Material Count) | 픽셀당 서브스트레이트 머티리얼 수를 시각화하고 사용 중인 BSDF 슬랩 노드 수에 따라 컬러를 지정합니다. | |
머티리얼 바이트 수(Material Bytes Count) | 픽셀당 서브스트레이트 머티리얼 풋프린트를 시각화합니다. 머티리얼은 사용 중인 바이트 수에 따라 컬러 코딩됩니다. 머티리얼에 커서를 올려도 머티리얼의 픽셀당 바이트 수를 확인할 수 있습니다. | |
서브스트레이트 정보(Substrate Info) | 이 모드는 최대 메모리 사용량, 픽셀당 최대 바이트(단순화 한계치 세팅에 유용함), 활성화된 서브스트레이트 기능에 대한 정보를 포함하여 프로젝트의 서브스트레이트 사용 관련 정보를 요약합니다. | |
| 서브스트레이트 고급 뷰 모드 | ||
고급 머티리얼 프로퍼티(Advanced Material Properties) | 현재 마우스 커서 아래에 있는 머티리얼을 구성하는 다양한 서브스트레이트 슬랩에 대한 정보를 보고합니다. 각 슬랩은 화면에 별도로 표시됩니다. 이 뷰 모드는 프로젝트 세팅의 엔진(Engine) > 렌더링(Rendering) 카테고리에서 서브스트레이트 고급 시각화 셰이더(Substrate advanced visualization shaders) 체크 박스를 사용하여 활성화해야 합니다. | |
머티리얼 분류(Material Classification) | 이 모드는 타일당 머티리얼 복잡도를 표시하고 컬러 코딩된 결과를 '단일'로
| |
러프 리프랙션 분류(Rough Refraction Classification) | 이 모드는 불투명 러프 리프랙션 프로퍼티를 사용하는 머티리얼을 표시합니다. 또한 서브서피스 스캐터링이 활성화되거나 비활성화된 서브스트레이트 머티리얼도 구별합니다. 이러한 시각화 모드 중 일부에 표시된 타일은 나중에 최적화된 포스트 라이팅 패스를 실행하는 데 사용됩니다. 이는 사용된 슬랩과 활성화된 기능의 수를 줄여 서브스트레이트 머티리얼을 최적화하고 연산자에 파라미터 블렌딩을 사용하는 데 유용할 수 있습니다. 몇 가지 머티리얼이 혼합되어 레이어링되어 있지만 특정 픽셀에 대해 단일 슬랩만 표시되는 경우(다이내믹 마스킹 또는 낮은 투과율 값으로 인해) 보이지 않는 슬랩은 시각화에 표시되지 않습니다(또는 최적화되지 않음). |
제한 사항 및 알려진 문제
서브스트레이트는 베타 기능이므로 어떠한 프로덕션 작업에도 사용하지 않을 것을 권장합니다.
플랫폼 지원 및 테스트는 현재 불완전합니다. 정식 버전 상태가 되면 더 광범위한 테스트가 가능할 것입니다.
기능과 UX가 변경되어 기존 에셋이 다르게 작동하거나 완전히 무효화될 수 있습니다.
패스 트레이서에 대한 베타 지원을 제공합니다.
DirectX 11(DX11), Mac과 같은 일부 플랫폼과 렌더링 패스에서는 문제가 나타나며 일부 기능이 작동하지 않을 수 있습니다.
어댑티브 GBuffer를 사용하는 경우:
단순한 머티리얼의 경우에도 블렌더블 GBuffer를 사용할 때보다 쿠킹 시간(셰이더 컴파일 시간)이 늘어납니다. 이는 어댑티브 GBuffer가 더 많은 처리를 필요로 하고 인코딩/디코딩 단계가 보다 복잡하기 때문입니다.
동일한 프로젝트의 경우, 블렌더블 GBuffer 방식을 사용할 때보다 런타임 퍼포먼스가 떨어집니다. 이는 주로 인코딩/디코딩 단계와 보다 복잡한 런타임 평가 때문입니다.
추가 리소스
스테이트 오브 언리얼 라이브 스트리밍 — 타임스탬프: 02:29:42
콘텐츠 예제 샘플 프로젝트에는 서브스트레이트 머티리얼의 작동 방식에 대한 다양한 예제와 데모를 탐색할 수 있는 'SubstrateMaterials'라는 레벨이 포함되어 있습니다.
콘텐츠 예제 프로젝트에서 서브스트레이트를 사용하려면 해당 프로젝트에서 서브스트레이트를 활성화해야 합니다. 오직 이 맵만 서브스트레이트를 활성화한 상태로 사용하는 것에 대한 유효성 검사를 마쳤습니다. 콘텐츠 예제 프로젝트의 인스턴스를 하나만 사용하는 경우, 이 레벨에서만 서브스트레이트를 활성화하고 프로젝트의 나머지 부분을 사용할 때는 항상 비활성화하는 것이 좋습니다.