UE5.1で実験的に追加されたSubstarate(サブストレート)マテリアルの概要や基礎部分をご紹介します。
ちなみにUE5.1では、「Strata」 という名前でしたが、UE5.2から「Substrate」 に変更されています。(Sub + Strata かと思ったら、Substrat“e”なんですね…)
この記事では、UE5.4をベースに紹介していきます。
- Unreal Engine のマテリアルの基礎を理解している方
- Substrate(Strata) マテリアルについて知りたい方
- Sbstarate を使ってみたい方
そもそもUE5のマテリアルとは?というところやマテリアルエディタの使い方(Substrataより前からある部分)などは、別の記事で解説していますので、UE5のマテリアルを全く使ったことがない方は、まずは↓の記事をご覧ください。
Substrate Material に関する情報まとめ

まだまだ情報が少ないですが、Substrate Material(Strata) に関する役立つ情報をこちらにまとめておきます。
新たな情報を見つけ次第、追加していきます。
この記事もこちらの情報を参考に書かせて頂いています。
Substrate マテリアルの概要
現状の公式ドキュメントです。
機能別サンプル
様々なマテリアルサンプルがどのように作られているかを見れます。
このようにノードを組めば、こんな見た目が作れるというのがわかるので非常に勉強になります。
5.2以上の機能別サンプルのプロジェクトを作成し「SubstrateMaterials」というレベルにたくさんのサンプルがあります。
Electric Dream サンプル
PCG を題材にしたデモでSubstrateも使用されています。
実際に自然の背景でどのようにSubstrateマテリアルが使用されているかをみることができます。
The Future of Materials in Unreal Engine | GDC 2023
昨年のGDCの講演のアーカイブです。
Substrateの基礎的なことが解説されています。
英語での解説ですが、日本語字幕もあります!
紹介されています。
Substrate Material とは?

Substrateは、簡単に言うと、マテリアルにより柔軟性を持たせて、プリレンダラーのマテリアルのようにアーティストがより自由にマテリアル作成をできるようにしたマテリアルの機能(オーサリングシステム)です。
もっと要約すると、今までより表現の幅が広がるということです。
また、BlenderやMayaのようなプリレンダラーのマテリアルに近づくイメージです。
細かいことは色々とありますが、具体例を1つ挙げると、今まではクリアコートやサブサーフェイスなどは「シェーデングモデル」で分かれており、一緒に使うことはできませんでした。
Substrateでは、そのシェーデングモデルの設定がなくなり、SSSやクリアコート、ヘア、クロスなどの表現を1つのマテリアルでできるようになりました(1つのシェーデングモデルのようなイメージでシェーデングモデルを切り替える必要がない)
また、それらのマテリアルをレイヤー的に重ねることができます。
今まで別だったシェーデングモデルを一緒に使えるということは、サブサーフェイスの素材の上にクリアコートなどもできます。
その他にもクリアコートの上に埃など現実と同じようにマテリアルを層として重ねていくことができます。
strataは層、substateは表面や化学反応を起こす物質などの意味があるので、素材を重ねてマテリアルを作るような部分が名前の由来になっているのかもしれません(ただの私の予想です)
新しいマテリアルシステムではありますが、マテリアルエディタの基本的な使い方などは同じです。
新たなノードや概念が追加されたようなイメージです。
大きな違いとしては紫色の「Substrate BSDFs」というノードとそれが繋がる簡素化されたリザルトノードです。

詳しくは後述しますが、この紫色ノードが今までのリザルトノードに近い役割(どちらかと言うとMaterial Attribute)をしており、ここに色やラフネス、ノーマルなどの計算結果を繋いでいきます。
このようにリザルトノードが変わるので、従来のマテリアルと一緒に使うことはできず、Substrateの機能を有効にすると、今までのマテリアルは、Substrateのノードを使ったものに変換されます。

UE5.4の時点では、まだ実験的機能なので、実際の制作への使用は非推奨です。
今後は、徐々にSubstrateに置き換わっていくのではないかと思います。
Substrate の使い方

ここからは、基本となるノードや各インプット、その使い方などを紹介していきます。
Substrate を有効にする

デフォルトでは無効になっているので、自身で有効化する必要があります。
「Project Settings(プロジェクト設定)」→「Engine – Rendering」→「Substrate materials」にチェックを入れることで有効にできます。
チェックを入れたら再起動をします。
設定が3つありますが、機能別サンプルでは3つとも使用すると書いてあるので、テストをする分には、とりあえず3つも有効で良いと思います。
その他の設定の意味としては…
Substrate Opaque material rough refraction
より物理的に正しくコーティングの下の層(マテリアル)のラフネスを計算します。
ただ、より重たい計算となるので、パフォーマンスに影響します。
まだ、深く検証できていませんが、映像などでは有効にすると良いのかもしれません。
Strata advanced visualization shaders
「r.Strata.Debug.VisualizeMode 3」でデバッグ表示を使用できるようになります。
こちらが有効だとパフォーマンスに影響があることがあるため、デフォルトは無効ないようです。
Substrate BSDFs ノード の概要

こちらの「Substrate BSDFs」という種類のノードが従来のマテリアルドメインやシェーディングモデルの役割を果たすイメージです。
なので、Substrate Unlit BSDF、Substrate Hair BSDF、Substrate Single Layer Water BSDFなどがあります。
今までだとResultノードにBasecolorやラフネスなどの計算結果を繋いでいましたが、基本的にこのSubstrate BSDFs に繋いでいきます。
そして、その結果をリザルトノードの「Front Material」に繋ぎます(基本的に)
ちなみに…BSDF(双方向散乱分布関数)は、簡単に言うと、CGなどの空間上で光の散乱を計算する方法です。
現実では、物体に光が反射して、その物体の色や質感を知覚できるわけですが、それをCG上でも可能な限り再現したようなものです。
BlenderにもPrincipled BSDFというシェーダーがあり、同じようなことをしています。
色々なSubstrate BSDFsノードがありますが「Substrate Slab BSDF」がベーシックなもので、こちらのノードでプラスチック、金属、ガラス、木などほぼあらゆる質感を表現できます。
その他のノードは以下のような用途で使用します。
ノード名 | 用途 |
---|---|
Substrate Slab BSDF | プラスチック、金属、ガラス、木などほぼあらゆる質感に |
Substrate Simple Clear Coat BSDF | Clearcoatを安価に表現するためのもの。Slab BSDFでもクリアコートを表現できるかより手軽に表面のつるつるを表現したいときに |
Substrate Unlit BSDF | 従来のUnlitと同じようなもの。ライティングの影響を受けない。 |
Substrate Eye BSDF | 目の表現に特化したもの |
Substrate Hair BSDF | 毛の表現に特化したもの |
Substrate Single Layer Water BSDF | 水の表現に特化したもの。(見た目的な)深さなども表現できる |
Substrate Volumetric-Fog-Cloud BSDF | ボリュメトリックフォグやボリュメトリック クラウドで使用するもの |
Substrate Slab BSDF のインプットと使い方

ほとんどの質感は、この「Substrate Slab BSDF」で表現していきます。
従来のマテリアルと異なり戸惑うところとしては、メタリックのインプット(Specularなども)がなくなっていることかなと思います。
その代わりに「F0」、「F90」というインプットがあります。
この2つのインプットで物体を垂直に見たときと物体のエッジ部分(接線方向)の反射率を操作します。
F0
物体を垂直に見たときの反射率(色)を調整します。
下記の画像はあくまでイメージですが、球を見たときは白い部分で、このF0に入力した反射率が使用されるイメージです。

値が高くなるほど、光が反射します。
プラスチックなどの非金属(誘導体)の場合は0~0.08程度になるようです。
金属では最大で1を入力します(Dev Communityより引用)
ただ、0だと反射が全くなくなります。
F0の値が1に近づくほど金属の見た目になっていきます。
色の付いた金属を作りたい場合は、ここに1に近い値の色を入れます。
デフォルト値(何も入力しない状態)は、0.04でプラスチックの値となっています。

F90
物体に対して接線方向の反射率(色)です。なので、物体のエッジの色、反射率を調整するインプットです。

こちらの画像はF90に1に近いピンクの色を入れています。
なので、エッジの部分がメタリックなピンクになってるのがわかるかと思います。
値と入れ方としては、F0と同じように非金属なら0~0.08、金属なら1などです。
デフォルト値は、1です。
F0とF90が反映される割合を調整したい場合は「Substrate FlipFlop」ノードを使用することで調整できます。

FicingColorにF0の部分の値、TangentColorのF90の部分の値を入れて、Falloffで割合、ブレンド具合を調整できます。
従来のフレネルノードのような感じですね。
Diffuse Albedo
Diffuse Albedoは、素材の色になります。
今までのBasecolorとほぼ同じようなものですが、金属では黒を使用します。
また、色の付いた金属(=反射される色)は、こちらではなく、F0などで色を設定します。
デフォルト値は、0.18(おそらく18%グレー)です。
ここまでで、よくわからん、従来のBasecolor、Metallic、Specularを使いたい!!
という方は「Substrate Metalness-To-DiffuseAlbedo-F0」という今までのBasecolor、Metallic、Specularの値をDiffuse AlbeodとF90に変化してくれる便利なノードがあります。

Roughness とNormal と Emissive Color
これらのRoughness、Normal、Emissive Colorのインプットは、従来と変わらずです。
Anisotropy と Tangent

こちらの2つは、異方性反射を表現するのに使用します。
Anisotropy:-1~1の値を入れることができます。
1で入力したTangent方向にスペキュラ(ラフネスによりう反射のボケ)が伸びて、-1ではTangentの垂直方向にスペキュラが伸びます。
Anisotropy と Tangentについては、UE4の時のものですが、こちらの記事が参考になりました。

SSS MFP
MFP(the mean-free-path)=平均自由行程という意味で、色々と難しいですが
UE5のこのインプットとしては、簡単に言うと
光の吸収や散乱を制御するインプットでSSSや半透明でどのような色で透過するかやその透過具合を調整することができます。
SSSの使用方法としては
SSS MFPにSSSの色を入れることで表現できます。

SSS MFP ScaleでSSSの具合を調整できます。
こちらはデフォルトで1になっているので、Maxで効かせたい場合は入力しないでも大丈夫です。
サブサーフェス プロファイルを使用している場合は、これらのインプットは使用されず、プロファイルの値を使用します。
Second Roughness
スペキュラを調整するのに使用します。
(詳しくは調査中…)
例えば「Substrate Heziness-To-Secondary-Roughness」ノードを使用することで、拡散したスペキュラにすることができます。


布やタイヤなどに使用すると、より幅広く、説得力のある表現ができます。
Fuzz

布を表現するために使用するのインプットです。
布の毛羽立ち感やベルベットのような素材を表現にするのに役立ちます。
FuzzColor:布の表面、毛羽立ち部分の色を設定します。
FuzzAmount:Fuzzの強さを調整します。
FuzzColorが強くなり、ベルベットのような質感に近くなります。
Fuzz Roughness Weight: Fuzz部分のラフネスを調整できます。
こちらを入力しない場合は、通常のラフネスが使用されます。
Glint

車のペイントや雪などの表現に便利なキラキラを表現するための機能です。
Glint Density: キラキラの密度
Glint UV: メッシュにキラキラをどのようにマッピングするか(タイリング数など)
また、Roughnessの値が大きいほど、キラキラの1粒1粒の明るさにばらつきがでてきます。
逆にRougnessが0だとキラキラの1粒1粒が同じラフネス0の見た目になります。
Substrate Operator ノードの使い方とインプット

Substrate Operator は、2つのSubstrate BSDFsを重ねたり、ブレンドするためのノードです。
例えば、最初に少し紹介したように1つのSlab BSDFでSSSが効いたマテリアル(A)を作成し、もう1つのSlab BSDFでつるつるな質感(B)を作成し、Aの上にBを重ねることでSSSの効いた質感の上にクリアコートを重ねるといったことができます。
いくつか種類があり、それぞれブレンドの仕方が異なります。
Substrate Horizontal Blend

Substrate Horizontal Blendは、単純に2つのマテリアルをブレンドします。
Mixに0~1の値やテクスチャを入れます。
0でBackgroundの値、1でForegroundの値が使用されます。
従来のLerpノードに近い挙動です。

Substrate Vertical Layer

Substrate Vertical Layer は、マテリアルを別のマテリアルでコーティング(=上に乗せる)します。
Top と Bottom に Slab BSDFなどのアウトプットを入力します。
Top Tickness で Topの厚みを調整します。
車の塗装やニスなどクリアコートなどを表現するのに便利です。
ちなみにクリコートを表現するときは「Substrate Transmittance-To-MeanFreePath」ノードを使用し、それをSSS MFPに入力することで透過色を直感的に制御することができます。

Substrate Coverage Weight

AにSlabなどで作成した素材を入力し、Weightでその重量を調整します。
これ単体で使用するというよりは、Vertical Layerの前に挟んで、ここで重量(どれくらいの量を乗せるかのようなイメージ)を設定して使用します。
埃などを乗せるのに使用します。

Substrate Add

単純に2つのSlabを足し合わせます。

物理的に正しくなるため、基本的には使わないようです(じゃあ何に使うんだ?)
Substrate の半透明とマスク

Substrate Materialも従来のマテリアル同様にBlend Modeを変更することでいくつかのタイプの半透明やマスク(アルファ抜き)が扱えます。
Substrate のブレンドモード
- Opaque: 不透明マテリアル
- Masked:0か1で不透明と透明を表現する。葉っぱなどをアルファ抜きしたりするのに使う。
- TranslucentGreyTransmittance:従来のTranslucentにあたるもの。ガラスなどの半透明を表現できる
- Additive:従来と同じ
- ColoredTransmittanceOnly:従来のModulateに近しいもの
- AlphaHoldout:従来と同じ
- TranslucentColoredTransmittance:従来のThinTranslucentに近しいもの。薄い半透明のプラスチックなどを表現するのに便利。
Substrate の半透明

従来と異なりOpacityのインプットがなくなっています。
透明度はクリアコートと同じようにSSS MFPで調整します。
0に近づくほど不透明に近くなっていきます。
単純にSSS MFPに値を入れて調整もできますが、「Substrate Transmittance-To-MeanFreePath」を挟んだ方が調整しやすいです。
ちなみに上記の画像の下記のマテリアル設定です。
- Blend Mode:TranslucentGreyTransmittance
- Lighting Mode: SurfaceFowardShading
「Refraction Method」をNone以外に設定することでResultノードでRefractionを設定できます。
また、ラフネスの値に応じて、曇りガラスを表現することができるようになります。

Substrate のマスク

こちらは従来と同じようブレンドモードを「Masked」にします。
リザルトノードの「Opacity Mask」インプットが使用できるようになるので、そちらに白黒のマップなどを入力することで、マスクで抜くことができます。
まとめ

Substrate Materialの入門ということで基本的なノードやインプットなどを紹介しました。
従来のマテリアルとSubstrateの大きな違いとしては
- レイヤーベースでマテリアルを作成できる
- シェーデングモデルという概念がない
というところです。
カーペイントのような多層構造の質感や半透明やSSSの質感は見た目がより改善される質感かと思います!
個人的にメタリックがなくなり、F0とF90の関係性、操作性が難しく感じ、慣れるのに時間がかかりそうな部分です。
その他にもMFPやSecopnd Roughnessなど新しいインプットが増えており、理解するのが少し大変です。
Blenderなどを使っている方であれば、割と親しみやすいのではないかと思います。
Substrateを使い始める際の参考になれば幸いです。
このサイトでは、この他にもUE5の使い方やおすすめチュートリアルなどを紹介しています。
最後までご覧いただき、ありがとうございました!
コメント