서브스트레이트는 언리얼 엔진 5의 머티리얼 제작 접근법으로, 디폴트 릿, 클리어 코트 등 고정된 셰이딩 모델과 블렌드 모드를 보다 표현력이 뛰어난 모듈형 프레임워크로 대체합니다.
비서브스트레이트 (또는 레거시) 머티리얼 시스템의 특정 추상화는 서브스트레이트 머티리얼에 의해 제거됩니다. 이는 측정된 물질 프로퍼티로 대체됩니다. 이를 통해 작업할 수 있는 파라미터 공간이 더 넓어지고 금속, 유리, 플라스틱과 같은 개별 표면 타입을 보다 정확하게 블렌딩할 수 있습니다. 서브스트레이트는 또한 머티리얼 레이어링 프로세스를 간소화하여 금속 위의 액체나 서브서피스 스캐터링 위의 클리어 코트와 같은 표면을 보다 손쉽게 표현합니다.
서브스트레이트의 머티리얼은 '물질 슬랩(slabs of matter)'으로 개념화됩니다. 이러한 슬랩은 잘 정의된 단위를 사용하여 물리량으로 파라미터화된 원칙적인 BSDF 표현입니다. 머티리얼은 혼합, 레이어링 등 연산이 수행되는 슬랩의 그래프로 표현됩니다. 원칙적인 표현 덕분에 서브스트레이트 머티리얼은 퍼포먼스를 위해 시각적 퀄리티를 낮추고자 플랫폼의 능력에 따라 단순화할 수 있습니다.
서브스트레이트 활성화하기
프로젝트에서 서브스트레이트 머티리얼(Substrate Materials) 을 활성화하는 방법은 다음과 같습니다.
- 프로젝트 세팅(Project Settings) 을 열고 왼쪽 사이드바에서 엔진(Engine) > 렌더링(Rendering) 으로 이동합니다.
- 서브스트레이트(Substrate) 섹션에서 서브스트레이트 머티리얼(실험단계)(Substrate materials (Experimental)) 을 활성화합니다.
-
프롬프트와 메시지에 따라 프로젝트를 재시작(Restart) 합니다.
Windows에서 DirectX 12(DX12) 를 사용할 것을 권장합니다. 서브스트레이트는 DirectX 11(DX11)에서 작동하지만 몇 가지 문제가 있으며 추가 테스트가 필요합니다. 자세한 내용은 이 페이지의 제한 사항 및 알려진 문제 섹션을 참조하세요.
프로젝트 세팅 및 콘솔 변수(선택사항)
서브스트레이트에는 다음과 같은 선택적 프로젝트 세팅 및 콘솔 변수가 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 프로젝트 세팅(Project Settings) | |
| 서브스트레이트 불투명 머티리얼 러프 리플렉션(Substrate opaque material rough reflection) | 활성화하면 다른 머티리얼을 코팅하는 거친 표면이 물리적으로 타당한 방식으로 하위 레이어를 흐리게 할 수 있습니다. |
| 서브스트레이트 고급 시각화 셰이더(Substrate advanced visualization shaders) | 이 옵션을 활성화하면 고급 디버깅 뷰 모드에 필요한 셰이더가 생성됩니다. 이러한 셰이더는 퍼포먼스에 영향을 미칠 수 있으며 서브스트레이트 머티리얼 토폴로지를 디버그해야 하는 경우에만 활성화해야 합니다. 자세한 내용은 서브스트레이트 디버그 뷰 모드를 참조하세요. |
| 콘솔 변수(Console Variables) | |
| `r.Substrate.BytesPerPixel | 자동으로 단순화되기 전에 서브스트레이트 머티리얼의 픽셀당 스토리지 바이트를 지정할 수 있습니다. 이 변수는 기본적으로 픽셀당 80바이트로 설정됩니다. 스토리지 요구 사항이 더 높은 복잡한 머티리얼의 경우 늘릴 수 있습니다. 값이 높을수록 더 많은 메모리를 사용하며 메모리 대역폭 및 기타 퍼포먼스 특성에 영향을 미칠 수 있습니다. 이 변수와 퍼포먼스의 관계는 콘텐츠와 플랫폼 둘 모두에 따라 크게 다릅니다. 필요시 platform.ini 환경설정 파일에서 플랫폼별로 이 값을 지정할 수 있습니다. |
레거시 머티리얼 변환
서브스트레이트 머티리얼은 비서브스트레이트 머티리얼로 되돌릴 수 없습니다. 일단 열고 저장하면 변환은 영구적입니다. 따라서 서브스트레이트를 활성화하기 전에 프로젝트의 백업 사본을 저장하는 것이 좋습니다.
기존 머티리얼은 서브스트레이트 활성화 프로젝트에서 편집하기 위해 열 때 서브스트레이트 머티리얼로 자동 변환됩니다. 이는 서브스트레이트 레거시 변환(Substrate Legacy Conversion) 머티리얼 표현식을 통해 머티리얼의 로직을 전달하여 서브스트레이트 스타일 셰이딩 네트워크로 변환됩니다.
서브스트레이트 레거시 변환 머티리얼 표현식은 레거시 머티리얼을 열 때 항상 자동으로 생성됩니다. 이 노드를 수동으로 생성하거나 새 머티리얼에서 사용할 필요는 없습니다.
기존 프로젝트에서 서브스트레이트를 활성화하는 경우 다음 가이드라인을 따라야 합니다.
- 서브스트레이트 활성화 프로젝트에서 기존의 비서브스트레이트 머티리얼을 열면 머티리얼이 저장될 때 레거시 서브스트레이트 머티리얼로 자동 변환됩니다. 변환은 영구적이며 비서브스트레이트 머티리얼로 되돌릴 수 없습니다.
- 프로젝트에서 서브스트레이트가 비활성화되면 서브스트레이트 머티리얼은 검게 렌더링됩니다. 여기에는 변환된 머티리얼에서 생성된 레거시 서브스트레이트 머티리얼이 포함됩니다. 레거시 서브스트레이트 머티리얼을 기존 머티리얼로 수동으로 다시 연결할 수 있지만, 현재 머티리얼 그래프에 있는 서브스트레이트 노드가 제거되지는 않습니다.
서브스트레이트와 머티리얼 레이어의 관계
UE의 기존 머티리얼 레이어(그래프 기반 및 커스텀 레이어 GUI 모두)는 파라미터 블렌딩 개념을 기반으로 합니다. 각 레이어는 블렌딩되어 최종 셰이딩 모델에 반영되는 파라미터의 패턴 그래프를 정의합니다.
머티리얼 레이어 기반 파라미터가 서브스트레이트 정의 셰이딩 모델에 반영되지 못하게 하는 요소는 없습니다. 부모 머티리얼의 머티리얼 어트리뷰트 레이어 노드의 출력을 사용하여 수동으로 구성해야 합니다.
- 이 접근법의 한 가지 제한 사항은 머티리얼 어트리뷰트 시스템에는 고정된 파라미터 목록이 있지만 멀티 슬랩 서브스트레이트 구성에 반영할 슬롯이 충분하지 않을 수 있다는 것입니다. (그리고 실제 의미와 관련이 없는 임의의 이름 핀을 사용해야 할 수도 있습니다.)
- 서브스트레이트 자체는 이 문서에 설명된 대로 파라미터 블렌딩을 기본적으로 사용할 수 있지만 머티리얼 레이어 인터페이스에서 해당 기능에 액세스할 수 있는 방법은 없습니다. 서브스트레이트와 머티리얼 레이어의 통합은 향후 개발에서 큰 관심을 끄는 영역입니다.
서브스트레이트 머티리얼 작업하기
서브스트레이트 머티리얼은 레거시 머티리얼과 유사하게 제작됩니다. 이 섹션에서는 노드, 블렌드 모드와 생성할 수 있는 머티리얼 타입에 대한 디테일을 비롯해 서브스트레이트 머티리얼을 구성하는 핵심 요소를 살펴봅니다.
서브스트레이트 머티리얼 루트 노드
레거시 머티리얼과 마찬가지로 머티리얼 루트(Material Root) 노드에는 서브스트레이트 슬랩과 연산자, 빌딩 블록 등의 기타 서브스트레이트 노드가 반영됩니다.
또한 레거시 머티리얼과 마찬가지로 머티리얼 루트 노드가 선택된 경우 디테일(Details) 패널을 통해 블렌드 모드(Blend Mode) 및 머티리얼의 룩을 정의하는 기타 프로퍼티를 설정합니다.
모든 서브스트레이트 머티리얼 그래프는 머티리얼 루트 노드의 정면 머티리얼(Front Material) 입력에 연결되어야 합니다. 이는 모든 서브스트레이트 그래프의 엔드포인트입니다.
서브스트레이트 블렌드 모드
서브스트레이트는 자체 블렌드 모드 세트를 사용하여 머티리얼의 컬러가 배경과 블렌딩되는 방식을 정의합니다. 레거시 머티리얼 블렌드 모드는 서로 혼합하고 블렌딩할 수 있는 방식이 제한되어 있으므로, 만들 수 있는 머티리얼의 타입이 제한됩니다. 서브스트레이트는 함께 블렌딩하여 모든 종류의 머티리얼을 만들 수 있는 다양한 블렌드 모드를 제공합니다. 이는 물리적으로 올바른 반투명 표면 셰이딩을 달성하는 데 특히 중요합니다.
서브스트레이트에는 다음과 같은 블렌드 모드가 포함되어 있습니다.
| 블렌드 모드 | 설명 |
|---|---|
| Opaque | 라이트가 통과하지도, 투과하지도 않는 표면을 정의합니다. 커버리지가 1인 불투명 표면으로, 레거시 불투명 블렌드 모드와 동일합니다. |
| Masked | 비저빌리티를 바이너리(켜기/끄기) 방식으로 선택적으로 제어해야 하는 머티리얼에 사용됩니다. 커버리지가 1 또는 0인 불투명 표면으로, 레거시 Masked 블렌드 모드와 동일합니다. |
| TranslucentGreyTransmittance | 컬러 표면과 커버리지가 있는 반투명 머티리얼이지만 투과율은 그레이스케일로 감소됩니다. 포스트 뎁스 오브 필드 반투명을 변조 패스로 추가 렌더링하는 것을 방지하므로 더 빠릅니다. 이는 하드웨어 컬러 반투명(듀얼 소스 컬러 블렌딩이라고 함)을 지원하지 않는 플랫폼을 위한 예비 블렌드 모드입니다. 레거시 Translucent 블렌드 모드와 유사합니다. |
| Additive | 최종 컬러 = 소스 컬러 + 대상 컬러인 배경 컬러에 머티리얼 컬러를 추가합니다. |
| ColoredTranslucencyOnly | 머티리얼의 투과율만 사용됩니다. 표면 인터랙션은 0으로 감소하며, 레거시 Multiply 블렌드 모드와 동일합니다. |
| AlphaComposite (Premultiplied Alpha) | 이 블렌드 모드는 오파시티 입력을 사용하여 머티리얼의 어떤 부분이 추가로 블렌딩되고 어떤 부분이 반투명하게 블렌딩되는지를 더 미세하게 제어합니다. 레거시 Alpha Composite (Premultiplied Alpha) 블렌드 모드와 동일하게 작동합니다. |
| AlphaHoldout | 이 블렌드 모드는 알파를 지속시켜 오브젝트에 구멍을 뚫어 오브젝트 뒤에 있는 오브젝트를 드러낼 수 있게 해줍니다. 레거시 AlphaHoldout 블렌드 모드와 동일하게 작동합니다. |
| TranslucentColoredTransmittance | 완벽한 기능을 갖춘 반투명 머티리얼로, 컬러 표면, 커버리지, 컬러 투과율이 있습니다. 이는 레거시 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 | 표면에 대해 라이팅을 계산합니다. 유리와 물과 같은 반투명 표면에 사용합니다. 포워드 셰이딩으로 구현되므로 로컬 라이트에서의 스페큘러 하이라이트는 지원되지만 다수의 디퍼드 전용 기능이 지원되지 않습니다. 각 라이트의 영향이 픽셀별로 계산되므로 가장 비용이 많이 드는 반투명 라이팅 방법입니다. |
서브스트레이트 머티리얼에서의 반투명 구성 및 사용에 대한 몇 가지 예시를 보려면 이 페이지의 반투명 섹션을 참조하세요.
서브스트레이트 슬랩
슬랩(Slab) 은 서브스트레이트 머티리얼을 이루는 기본 구성 요소입니다. 대부분의 머티리얼 외관을 얻을 수 있는 최소한의 필수 파라미터 세트로 설계되었습니다. 따라서 훨씬 더 표현력 있는 타입의 외관 제작을 위한 기반이 됩니다.
슬랩은 인터페이스 와 매체 로 구성된 물질의 슬랩을 원칙적으로 나타낸 것입니다.
서브스트레이트 슬랩은 인터페이스(1)와 매체(2)로 구성됩니다.
- 인터페이스(Interface) 는 라이트가 머티리얼의 표면과 상호 작용하는 바운더리입니다. 인터페이스의 프로퍼티는 반영되는 러프니스, 노멀, 디퓨즈 알베도, 인터페이스, F0 및 F90 값에 의해 주로 정의됩니다.
- 매체(Medium) 는 라이트가 산란, 투과, 흡수되는 인터페이스 아래 물질의 볼륨입니다. 매체의 프로퍼티는 주로 평균 자유 경로 (또는 MFP) 입력에 의해 정의됩니다.
서브스트레이트 슬랩은 비서브스트레이트 머티리얼의 모놀리식 머티리얼 루트 노드를 모듈형으로 대체합니다. 디퓨즈(Diffuse), 스페큘러(Specular), 러프니스(Roughness), 이미시브(Emissive), 클로스(Cloth), 애니소트로피(Anisotropy) 등 많은 표면 어트리뷰트로 구성됩니다. 모든 서브스트레이트 BSDF 노드에는 눈, 헤어, 단순한 클리어 코트 등과 같이 생성하는 머티리얼 타입에 대한 명명된 출력과 관련된 프로퍼티가 포함되어 있습니다.
기존 머티리얼은 블렌드 모드에 의존하여 사용할 수 있는 입력을 제시했습니다. 서브스트레이트는 다양한 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: 하이라이트가 탄젠트에 정렬됨). |
| 노멀(Normal) | 표면 노멀을 입력으로 취합니다. 노멀은 머티리얼 루트 노드의 공간 프로퍼티에 따라 탄젠트나 월드 스페이스로 간주됩니다. 이 입력은 픽셀당 셰이딩 노멀을 정의합니다. |
| 탄젠트(Tangent) | 표면 탄젠트를 입력으로 취합니다. 노멀은 머티리얼 루트 노드의 공간 프로퍼티에 따라 탄젠트나 월드 스페이스로 간주됩니다. 이 입력은 픽셀당 셰이딩 탄젠트를 정의합니다. |
| SSS MFP | 서브서피스 스캐터링 평균 자유 경로(Mean Free Path, MFP)입니다. 머티리얼의 밀도를 제어하고 머티리얼에 의한 라이트의 흡수 및 스캐터링에 영향을 줍니다. 보다 정확하게는 광자가 물질 파티클과 상호작용하는 평균 거리를 정의합니다. 이 거리는 컬러 채널별로 제어됩니다. |
| SSS MFP 스케일(SSS MFP Scale) | 서브서피스 스캐터링 평균 자유 경로(MFP)입니다. 머티리얼의 밀도를 제어하고 머티리얼에 의한 라이트의 흡수 및 스캐터링에 영향을 줍니다. 보다 정확하게는 광자가 물질 파티클과 상호작용하는 평균 거리를 정의합니다. 이 거리는 컬러 채널별로 제어됩니다. |
| 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) | 인터페이스에 퍼즈 같은 레이어를 추가하여 컬러 역반사를 유발합니다. 표면 레이어 위에 적용되는 퍼즈의 양을 제어합니다. 보통 패브릭 머티리얼을 만드는 데 사용됩니다. |
| 퍼즈 컬러(Fuzz Color) | 퍼즈 레이어의 컬러를 정의합니다. |
| 글린트 밀도(Glint Density) | 머티리얼 표면의 마이크로 패시트 밀도의 로그를 나타낸 것입니다. ConsoleVariables.ini 환경설정 파일에서 |
| 글린트 UV(Glint UVs) | 머티리얼 표면의 글린트 위치 및 스케일을 제어합니다. ConsoleVariables.ini 환경설정 파일에서 |
서브스트레이트 머티리얼 노드
서브스트레이트 머티리얼을 제작하는 데 사용되는 노드 타입은 다음과 같습니다.
| 노드 타입 | 설명 |
|---|---|
| BSDF | 이 노드들은 단순한 머티리얼부터 헤어, 눈, 물과 같은 보다 복잡한 머티리얼까지 대부분의 표면 타입을 나타냅니다. |
| 연산자(Operators) | 이 노드들은 여러 서브스트레이트 슬랩 BSDF를 혼합하고 레이어링하여 복잡하고 다양한 표면을 만드는 데 사용됩니다. |
| 빌딩 블록(Building Blocks) | 이 노드들은 언리얼 엔진의 디폴트 레거시 머티리얼 셰이딩 모델이나 코팅된 레이어 생성과 같은 서브스트레이트에 사용할 일반적인 머티리얼 타입을 변환합니다. |
| 엑스트라(Extras) | 이 노드들은 서브스트레이트 머티리얼에 대한 머티리얼 도메인을 정의하며 레거시 머티리얼 도메인 이름과 직접적으로 유사합니다. |
| 헬퍼(Helpers) | 이 노드들은 서브스트레이트 슬랩의 평균 자유 경로에 투과율을 매핑하는 등 머티리얼 내에서 일부 변환을 수행하는 데 사용됩니다. |
서브스트레이트 BSDF 노드
서브스트레이트 BSDF (Bidirectional Scattering Distribution Function) 노드는 대부분의 표면 타입을 나타내는 데 사용됩니다. 서브스트레이트 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 | 주로 물 시스템과 함께 사용되는 단일 레이어 물 머티리얼의 렌더링을 위한 전용 BSDF입니다. |
| Substrate Unlit BSDF | 컬러 이미시브 휘도를 사용하여 언릿 엘리먼트를 렌더링하는 데 사용되는 BSDF입니다. 이 서브스트레이트 노드는 레거시 그레이스케일 오파시티를 컬러 투과율로 대체합니다. |
| Substrate Volumetric-Fog-Cloud BSDF | 관여 매체를 나타내는 데 사용되는 BSDF입니다. 이 노드는 볼류메트릭 포그 및 볼류메트릭 클라우드를 렌더링하는 데 사용됩니다. |
서브스트레이트 연산자 노드
서브스트레이트 연산자(Substrate Operator) 노드는 여러 서브스트레이트 슬랩을 혼합하거나 레이어링하여 복잡하고 다양한 표면을 만드는 데 사용됩니다. 서브스트레이트 슬랩이 물질의 조각을 나타내는 경우 연산자는 해당 조각들을 함께 결합하는 방법을 제시합니다.
선택할 수 있는 서브스트레이트 연산자는 다음과 같습니다.
서브스트레이트 연산자는 모든 서브스트레이트 BSDF와 함께 작동하지 않습니다. Substrate Slab BSDF 및 Substrate Simple Clear Coat 에서만 이러한 연산자 노드를 사용할 수 있습니다.
| 서브스트레이트 연산자 노드 | 설명 |
|---|---|
| Substrate Coverage Weight | 이 연산자는 슬랩에서 입력을 받아 가중치가 커버리지의 양인 경우 커버리지의 양을 제어합니다. 가중치를 줄이면 슬랩의 물질 커버리지가 감소하여 아래의 물질을 투시할 수 있습니다. 이 노드는 아래 표면을 덮는 정도를 제어하고자 할 때 먼지 및 흙 레이어와 같이 불투명한 물질을 다른 물질 위에 배치하기 위해 Substrate Vertical Layer 연산자와 함께 사용해야 합니다. |
| Substrate Horizontal Blend | 이 연산자는 배경(Background)과 전경(Foreground)이라는 두 슬랩으로부터 입력을 받습니다. 혼합 입력은 선형 보간을 사용하여 두 슬랩이 서로 혼합되는 양을 제어합니다. |
| Substrate Vertical Layer | 이 연산자는 Top과 Bottom 레이어라는 두 슬랩으로부터 입력을 받습니다. 하단 슬랩은 상단 슬랩에 의해 코팅되며 하단 레이어의 외관은 상단 레이어의 프로퍼티에 영향을 받습니다. Top Thickness 입력을 사용하여 상단 레이어가 하단 레이어보다 두꺼운 정도를 제어합니다. 이 연산자는 자동차 페인트, 목재 광택, 젖은 표면을 연출하는 데 이상적입니다. |
| Substrate Add | 이 연산자는 2개의 슬랩에서 입력을 받아 함께 추가합니다. 생성된 머티리얼은 들어오는 에너지보다 표면에서 나가는 에너지를 더 많이 생성하기 때문에 물리적으로 타당하지 않습니다. |
서브스트레이트 연산자는 슬랩을 함께 혼합하고 레이어링하여 복잡한 머티리얼 외관을 만들 수 있습니다. 이는 주로 라이팅 평가로 인해 런타임에 수행하기에는 비용이 많이 들 수 있습니다. 연산자 노드에는 파라미터 블렌딩 사용(Use Parameter Blending)이 해당 노드에 설정된 경우 배경과 전경을 단일 머티리얼에 블렌딩하는 옵션이 있습니다. 이 최적화는 비용이 많이 드는 라이팅 평가를 런타임 퍼포먼스와 보다 저렴한 라이팅 평가로 대체합니다.
이 파라미터 블렌딩 최적화에 대한 자세한 내용은 이 페이지의 파라미터 블렌딩 섹션을 참조하세요.
Substrate Coverage Weight
Substrate Coverage Weight 연산자는 수직 레이어링 작업에서 두 슬랩의 비율을 제어합니다. 가중치(Weight) 입력은 Substrate Vertical Layer 연산자와 함께 레이어링할 때 이 머티리얼의 커버리지를 구동합니다(아래 예시 참조). 또한 반투명 블렌드 모드가 오파시티를 사용하는 방식과 유사하게 알파를 커버리지로 사용하거나 알파를 오파시티로 사용할 때 반투명 표면을 얻는 데에도 사용할 수 있습니다.
예를 들어 반투명 블렌드 모드와 유사하게 사용할 때 알파를 커버리지로 사용하거나 알파를 오파시티로 사용하는 경우 반투명 표면을 얻는 데 사용할 수 있습니다.
위 그래프는 가중치 가 하단 슬랩 위에 적용되는 커버리지의 양을 구동하는 Substrate Coverage Weight 연산자를 사용합니다. 가중치 1은 완전히 불투명하여 녹색 텍스처 패턴을 차단합니다. 0.5는 50% 투명하여 두 머티리얼 컬러를 혼합하고 텍스처 패턴을 표시합니다. 0은 완전히 투명하며 녹색 텍스처 패턴만 표시합니다.
가중치 입력은 Float3 값을 취하므로, 텍스처를 사용하여 머티리얼을 레이어링할 때 슬랩에 적용되는 커버리지의 양을 구동할 수도 있습니다.
Substrate Horizontal Blend
Substrate Horizontal Blend 연산자는 2개의 슬랩을 혼합합니다. 하나는 배경을 나타내고 다른 하나는 전경을 나타냅니다. 혼합(Mix) 입력은 선형 보간을 사용하여 혼합 비율을 제어합니다.
배경(Background) 입력은 0 일 때 완전히 표시되고 전경(Foreground) 은 1 일 때 완전히 표시됩니다. 혼합 비율이 0.5 이면 슬랩이 함께 혼합되고 혼합이 픽셀별로 평가됩니다. 혼합 입력은 아래 예시처럼 텍스처를 사용하여 혼합 비율을 제어할 수 있습니다.
Substrate Vertical Layer
Substrate Vertical Layer 연산자는 상단(Top) 및 하단(Bottom) 입력에 있는 슬랩을 가져와 함께 레이어링합니다. 물리적으로 올바른 투과율과 스캐터링을 적용하기 위해 상단 레이어의 두께도 고려합니다. 코팅 연산과 유사하며 상단 레이어가 하단 레이어를 덮습니다. 하단 슬랩의 외관은 상단 슬랩의 프로퍼티에 따라 다릅니다. 상단 입력으로 전달된 BSDF가 완전히 불투명한 경우 하단 슬랩이 전혀 표시되지 않습니다.
수직 레이어링은 불투명한 하단 레이어 위에 투명 또는 반투명 탑 코트가 필요한 상황에서 특히 유용합니다. 예시로는 자동차 페인트, 광택 처리된 목재 표면, 물웅덩이와 같은 젖은 표면이 있습니다.
Substrate Add
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) 노드는 서브스트레이트 머티리얼이 데칼 또는 라이트 함수로 사용되도록 지정하는 등의 경우에 사용되는 머티리얼 타입과 함수를 지정합니다. 이러한 노드는 머티리얼 도메인의 일부로 할당된 비서브스트레이트 머티리얼과 직접적으로 유사합니다.
선택할 수 있는 서브스트레이트 엑스트라는 다음과 같습니다.
이러한 노드는 모놀리식이므로 개별적으로 사용해야 합니다. 서브스트레이트 연산자와 호환되지 않습니다.
| 서브스트레이트 엑스트라 노드 | 설명 |
|---|---|
| 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 입력에 직접 매핑됩니다. |
| Substrate View-Dependent-Coverage | 뷰 입사각에 따라 커버리지를 조정합니다. 이 노드는 뷰 종속 이펙트를 암시할 만큼 두께가 충분히 두꺼운 레이어를 혼합하는 데 유용합니다. 예를 들면, 입사각에 비해 지표각에서 더 큰 오클루전을 갖는 큰 먼지 입자가 있습니다. |
서브스트레이트 노드에 대한 추가 노드
- 서브스트레이트 데칼 머티리얼
- 서브스트레이트 데칼은 현재 레거시 경로와 동일한 기능을 사용합니다. 서브스트레이트의 향후 버전에서는 물, 혈액, 끈끈한 물질 등을 위한 레이어 반투명 슬랩과 같이 서브스트레이트의 다른 기능과 유사한 보다 강력한 기능 세트를 제공할 예정입니다. 자동차 페인트 긁힘, 지면 계단, 타이어 자국과 같이 두께에 따라 부식될 수 있는 레이어도 추가해야 할 또 다른 영역입니다.
- 레거시 변환 노드
- 프로젝트에서 서브스트레이트가 활성화된 기존의 비서브스트레이트 머티리얼을 열면 서브스트레이트를 사용할 수 있도록 머티리얼이 자동으로 변환됩니다. 기존의 모든 입력은 서브스트레이트 레거시 변환 노드로 반영됩니다.
이 노드는 새 서브스트레이트 머티리얼을 생성할 때 수동으로 생성하거나 사용해서는 안 됩니다.
서브스트레이트 통계 패널
서브스트레이트 통계 패널은 머티리얼 그래프 아래 머티리얼 에디터에서 사용할 수 있습니다.
서브스트레이트 패널에는 머티리얼, 단순화, 토폴로지에 대한 통계가 표시됩니다.
연산자를 사용한 파라미터 블렌딩
픽셀당 다수의 BSDF(Bidirectional Scattering Distribution Function)를 사용하면 머티리얼 그래프의 수에 비례하여 렌더링 프로세스가 느려집니다. 두 BSDF에 대한 라이팅을 평가하는 것은 단일 BSDF보다 2배 느립니다. 이는 불투명 표면과 반투명 표면 모두에 해당됩니다.
연산자 노드에는 그래프의 모든 혼합 및 레이어 작업의 외관을 유지하면서 머티리얼의 퍼포먼스와 메모리 사용량을 최적화하기 위한 파라미터 블렌딩 사용(Use Parameter Blending) 체크 박스가 있습니다. 머티리얼 루트 노드 앞의 가장 오른쪽 연산자 노드에서만 세팅을 활성화하면 됩니다. 그래프의 다른 모든 노드에는 파라미터 블렌딩이 자동으로 적용됩니다.
파라미터 블렌딩은 머티리얼 내 여러 슬랩의 퍼포먼스가 중요할 때 좋은 예비 옵션입니다. 활성화하면 두 슬랩이 단일 라이팅 평가만 필요한 단일 슬랩으로 병합됩니다. 두 슬랩을 단일 슬랩으로 병합하면 두 슬랩보다 훨씬 적은 메모리를 사용합니다.
아래의 예시 머티리얼은 콘텐츠 예제 서브스트레이트 레벨에서 가져온 것이며 파라미터 블렌딩 사용 이 활성화 및 비활성화되어 있습니다.
이 예시에서는 두 BSDF를 사용하는 머티리얼(M_Substrate_ShaderBall_IceRocks)을 보여줍니다. 왼쪽은 블렌딩이 없는 상태이고 오른쪽은 파라미터 블렌딩을 사용하는 상태입니다.
이 예는 보다 복잡한 머티리얼(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의 함수로 제어합니다.
러프 리프랙션
서브스트레이트는 반투명 상단 레이어가 있는 레이어링된 불투명 머티리얼에서뿐만 아니라, 반투명 오브젝트를 통해 러프 리프랙션을 지원합니다. 씬 배경의 흐릿함은 디스토션/리프랙션을 사용할 때 프라이머리 머티리얼의 러프니스와 굴절된 오브젝트까지의 거리를 통해 계산됩니다.
반투명 러프 리프랙션
러프 리프랙션이 있는 반투명 머티리얼을 만들려면 디테일 패널에서 다음 프로퍼티를 설정합니다.
- 블렌드 모드: 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) 유리 뒤의 오브젝트가 더 흐릿해집니다.
러프 리프랙션을 통한 흐림은 씬의 반투명 엘리먼트 뒤에 있는 뎁스를 고려하기 위해 근사치를 사용합니다.
불투명 러프 리프랙션
서브스트레이트 코팅 레이어는 상단 코팅 레이어의 러프니스와 두께에 따라 그 아래의 레이어를 흐리게 할 수 있습니다.
이러한 타입의 리프랙션은 더 많은 퍼포먼스 비용이 들며, 프로젝트의 프로젝트 세팅 > 엔진 > 렌더링 카테고리에서 활성화해야 합니다. 이 기능을 활성화하려면 서브스트레이트 불투명 머티리얼 러프 리프랙션(Substrate opaque material rough refraction) 박스에 체크합니다.
아래 그래프는 불투명 체커보드 위에 클리어 코트가 있는 수직 레이어 머티리얼로 불투명 머티리얼 러프 리프랙션을 사용한 예시를 보여줍니다.
러프니스 및 두께(Thickness) 파라미터는 하단 머티리얼 레이어에 적용되는 블러 효과의 강도를 결정합니다. 두 값 중 하나를 늘리면 리프랙션의 블러 정도가 늘어납니다.
아래 예시에서 이를 확인할 수 있는데, 왼쪽의 클리어 코트 상단 레이어의 러프니스와 두께가 0.1입니다. 오른쪽 예시에서는 러프니스가 0.8이고 두께가 6이므로 하단 레이어가 흐려집니다.
서브서피스 스캐터링 및 관여 매체
서브스트레이트 슬랩에는 관여 매체가 포함되어 있으며 다양한 볼류메트릭 외관을 시뮬레이션하는 데 사용할 수 있습니다.
예를 들어 불투명 머티리얼만 렌더링하려는 경우 슬랩이 머티리얼 토폴로지의 하단에 있으면 서브서피스 스캐터링으로 간주됩니다. 그 결과 다음과 같은 두 가지 경우를 고려할 수 있습니다.
- 머티리얼의 디테일 패널에서 슬랩에 서브서피스 프로파일이 할당된 경우 해당 프로파일이 픽셀별로 사용됩니다. 서브서피스 프로파일은 블렌더블이 아닙니다.
- 할당된 서브서피스 프로파일이 없으면 슬랩의 디퓨즈 알베도 및 SSS MPF 프로퍼티에서 스캐터링이 결정됩니다. 이 프로퍼티들은 블렌더블 입니다.
서브서피스 스캐터링의 MFP 는 콜리전이 발생하기 전까지 다양한 파장의 라이트가 매체를 통과하는 거리(센티미터)입니다. 아래 예시에서는 왼쪽에서 오른쪽으로 0에서 1까지 스케일 조절된 디퓨즈 알베도(흰색)와 SSS MFP (빨간색)를 보여줍니다.
불투명 머티리얼의 하단에 있지 않거나 반투명 머티리얼에 사용된 슬랩은 디퓨즈 알베도 및 SSS MFP 어트리뷰트에도 의존하는 볼류메트릭 표현으로 간주됩니다. 디퓨즈 알베도는 단일 및 다수 스캐터링을 고려하여 매체의 베이스 컬러를 나타냅니다.
SSS MFP 어트리뷰트는 표면에 수직인 뷰에 대한 매체의 투과율을 제어하는 방식으로, 아래 표면이 얼마나 보이는지를 나타냅니다.
왼쪽에서 오른쪽으로 검은색에서 파란색에 이르는 투과율 컬러가 있고 하단에서 상단으로 검은색에서 흰색에 이르는 디퓨즈 알베도가 있는 머티리얼의 예시입니다.
슬랩을 다른 슬랩 위에 수직으로 레이어링하는 것은 코팅 작업과 유사합니다. 하단 슬랩의 비저빌리티는 상단 슬랩의 투과율에 따라 다릅니다. 상단 슬랩의 커버리지(예: 표면의 물웅덩이 가장자리)를 줄여 점차 사라지게 할 수 있습니다. 이는 알파 블렌딩과 유사한 Coverage Weight 연산자 노드를 사용하여 얻을 수 있습니다.
왼쪽에서 오른쪽으로 검은색에서 파란색에 이르는 투과율이 있고 하단에서 상단으로 0에서 1에 이르는 커버리지가 있는 머티리얼의 예시입니다.
특정 투과율 또는 스캐터링 컬러를 얻으려면 Substrate Transmittance-To-MeanFreePath 헬퍼 노드를 사용해야 합니다. MFP는 표면이 노멀을 따라 수직으로 보일 때 노멀 입사에서 매칭되도록 TransmittanceColor 에 대해 파생됩니다.
아래 예시에서는 SSS MFP가 투과율 컬러에서 파생된 분홍색 불투명 머티리얼의 파란색 서브서피스 스캐터링을 보여줍니다.
MFP는 컬러가 아니며 라이트 전달을 측정하는 것이므로 특정 투과율 컬러를 얻으려고 할 때 MFP를 직접 제어하는 것은 권장되지 않습니다. MFP와 서브서피스 스캐터링 컬러 간의 관계는 아티스트의 관점에서 비직관적이며 비선형적입니다.
반투명 및 블렌드 모드
서브스트레이트는 기존의 비서브스트레이트 머티리얼에서 가능한 것보다 반투명 표면 셰이딩에 보다 강력한 옵션을 제공합니다. 표면이 물질(서브스트레이트 슬랩)로 구성되어 있다는 점을 고려할 때 이제 서브스트레이트 블렌드 모드 목록은 더 의미가 있습니다.
반투명 머티리얼을 생성하는 방법은 다음과 같습니다.
- 반투명을 지원하는 블렌드 모드 를 선택합니다.
- Opaque
- Masked
- TranslucentColoredTransmittance
- TranslucentGreyTransmittance
- ColoredTransmittanceOnly
- AlphaHoldout
- 머티리얼 루트 노드를 선택한 상태에서 디테일 패널의 라이팅 모드 를 선택합니다. 다음 중에서 선택합니다.
- Surface ForwardShading
- Surface TranslucencyVolume - 이 옵션은 표면의 리플렉션을 지원합니다.
- Volumetric NonDirectional - 비용이 더 저렴하지만 라이트를 반사하지 않습니다.
아래는 반투명 서브스트레이트 머티리얼 구성의 예입니다. 블렌드 모드는 TranslucentColoredTransmittance 로 설정되어 있으며 Surface ForwardShading 라이팅 모드를 사용하고 있습니다. 머티리얼 루트 노드의 정면 머티리얼 핀에 전달된 단일 슬랩을 사용하여 불투명하게 보이는 반투명 머티리얼을 생성합니다.
슬랩과 정면 머티리얼 입력 사이에 Substrate Coverage Weight 연산자를 사용하면 머티리얼의 투과율을 제어할 수 있습니다. Substrate Coverage Weight 노드의 가중치 입력을 사용하여 머티리얼의 투명도를 제어합니다.
(위와 같이) 0~1의 상수 값을 사용하여 전체 머티리얼의 오파시티를 제어하거나 (아래와 같이) 텍스처를 사용하여 머티리얼의 일부를 제어할 수 있습니다.
관여 매체의 MFP를 지정하면 한 단계 더 나아가 컬러 유리와 유사한 물질 슬랩을 생성할 수 있습니다. 이는 Transmittance-To-MeanFreePath 헬퍼 노드를 사용하여 구성됩니다. 아래 예시와 같이 SSS MFP에 연결된 주황색 TransmittanceColor를 사용하여 라이트를 투과하는 영역에서만 머티리얼을 주황색으로 칠합니다. 지정된 TransmittanceColor는 제공된 두께 입력(디폴트는 0.01센티미터)에서 도달하는 '타깃' 컬러입니다.
서브스트레이트 반투명에 대한 추가 참고 사항
- 반투명 머티리얼은 슬랩이 관여 매체의 볼륨으로 간주되더라도 스크린 스페이스 서브서피스 스캐터링(Screen Space Subsurface Scattering)을 지원하지 않습니다.
서브스트레이트 디버그 뷰 모드
서브스트레이트를 사용할 때 머티리얼의 퍼포먼스가 어떤지, 어떤 부분에 더 주의를 기울이면 좋은지 확인하는 것이 좋습니다. 서브스트레이트의 디버그 시각화 모드는 서브스트레이트 카테고리 아래의 뷰 모드(View Modes) 드롭다운 목록에 있습니다.
서브스트레이트에는 디버깅을 위한 다음과 같은 시각화 모드가 있습니다.
표의 이미지를 클릭하면 확대할 수 있습니다.
| 디버그 시각화 | 디버그 시각화 이름 | 설명 |
|---|---|---|
| 머티리얼 프로퍼티(Material Properties) | 마우스 커서 아래에 서브스트레이트 프로퍼티를 시각화합니다. 검사하려는 픽셀에 커서를 올리면 프로퍼티, 컬러 가중치, 머티리얼의 활성화된 기능, 사용된 바이트 등과 같이 라이팅에 사용되는 최종 패킹된 머티리얼 클로저가 표시됩니다. | |
| 머티리얼 수(Material Count) | 픽셀당 서브스트레이트 머티리얼 수를 시각화하고 사용 중인 BSDF 슬랩 노드 수에 따라 컬러를 지정합니다. | |
| 머티리얼 바이트 수(Material Bytes Count) | 픽셀당 서브스트레이트 머티리얼 풋프린트를 시각화합니다. 머티리얼은 사용 중인 바이트 수에 따라 컬러 코딩됩니다. 머티리얼에 커서를 올려도 머티리얼의 픽셀당 바이트 수를 확인할 수 있습니다. | |
| 서브스트레이트 정보(Substrate Info) | 이 모드는 최대 메모리 사용량, 픽셀당 최대 바이트(단순화 한계치 세팅에 유용함), 활성화된 서브스트레이트 기능에 대한 정보를 포함하여 프로젝트의 서브스트레이트 사용에 대한 정보를 요약합니다. | |
| 서브스트레이트 고급 뷰 모드 | ||
| 고급 머티리얼 프로퍼티(Advanced Material Properties) | 현재 마우스 커서 아래에 있는 머티리얼을 구성하는 다양한 서브스트레이트 슬랩에 대한 정보를 보고합니다. 각 슬랩은 화면에 별도로 표시됩니다. 이 뷰 모드는 프로젝트 세팅의 엔진 > 렌더링 카테고리에서 서브스트레이트 고급 시각화 셰이더 체크 박스를 사용하여 활성화해야 합니다. |
|
| 머티리얼 분류(Material Classification) | 이 모드는 타일당 머티리얼 복잡도를 표시하고 컬러 코딩된 결과를 '단일'로 반환합니다.
슬랩 노드를 보고 단순(Simple), 단일(Single) 또는 복잡(Complex) 여부를 확인하면 서브스트레이트 머티리얼의 복잡도에 대한 힌트를 얻을 수 있습니다. |
|
| 러프 리프랙션 분류(Rough Refraction Classification) | 이 모드는 불투명 러프 리프랙션 프로퍼티를 사용하는 머티리얼을 표시합니다. 또한 서브서피스 스캐터링이 활성화되거나 비활성화된 서브스트레이트 머티리얼을 구별합니다. 이러한 시각화 모드 중 일부에 표시된 타일은 나중에 최적화된 포스트 라이팅 패스를 실행하는 데 사용됩니다. 이는 사용된 슬랩과 활성화된 기능의 수를 줄여 서브스트레이트 머티리얼을 최적화하고 연산자에 파라미터 블렌딩을 사용하는 데 유용할 수 있습니다. 몇 가지 머티리얼이 혼합되어 레이어링되어 있지만 특정 픽셀에 대해 단일 슬랩만 표시되는 경우(다이내믹 마스킹 또는 낮은 투과율 값으로 인해) 보이지 않는 슬랩은 시각화에 표시되지 않습니다(또는 최적화되지 않음). |
제한 사항 및 알려진 문제
- 서브스트레이트는 현재 개발 중이므로 어떠한 프로덕션 작업에도 사용하지 않을 것을 권장합니다.
- 플랫폼 지원 및 테스트는 현재 불완전합니다. 베타 버전으로 넘어간 후 정식 버전 상태가 되면 보다 광범위한 테스트가 가능할 것입니다.
- 기능과 UX가 변경되어 기존 에셋이 다르게 작동하거나 완전히 무효화될 수 있습니다.
- 모바일 포워드 셰이딩(Mobile Forward Shading) 을 사용하면 모바일이 지원됩니다.
- 패스 트레이서 지원은 실험단계입니다.
- DirectX 11(DX11), Mac과 같은 일부 플랫폼 및 렌더링 패스에는 문제가 있으며 완전히 작동하지 않을 수 있습니다.
추가 리소스
- 언리얼 엔진 머티리얼의 미래 - GDC 2023
- 스테이트 오브 언리얼 라이브 스트리밍 - 타임스탬프: 02:29:42
-
콘텐츠 예제 프로젝트에는 서브스트레이트 머티리얼의 작동 방식에 대한 다양한 예제와 데모를 탐색할 수 있는 SubstrateMaterials 이라는 레벨이 포함되어 있습니다.
콘텐츠 예제 프로젝트에서 서브스트레이트를 사용하려면 해당 프로젝트에서 서브스트레이트를 활성화해야 합니다. 오직 이 맵만 서브스트레이트를 활성화한 상태로 사용하는 것에 대한 유효성 검사를 마쳤습니다. 콘텐츠 예제 프로젝트의 단일 인스턴스만 사용하는 경우, 이 레벨에 대해서만 서브스트레이트를 활성화하고 프로젝트의 나머지 부분을 사용할 때는 항상 비활성화하는 것이 좋습니다.

