From Material Expression シェーディング モデルは、マテリアル グラフ内のロジックを通じて、複数のシェーディング モデルを単一のマテリアル (またはマテリアル インスタンス) に結合できる上級者向けの機能です。
From Material Expression シェーディング モデルを有効にすると、アルファ マスク、または Switch 式 や If 文などの条件付きロジックを使用して、ピクセルごとにシェーディング モデル間をブレンドすることができます。
使用方法
複数のシェーディング モデルを単一のマテリアルで使用するには、まず [Details (詳細)] パネルで [Shading Model] プロパティを [From Material Expression] に設定する必要があります。
マテリアル グラフの背景の任意の箇所をクリックするか、 Main Material Node を選択すると、マテリアルのプロパティが [Details] パネルに表示されます。
[Details] パネル の [Shading Model (シェーディング モデル)] ドロップダウン メニューで[From Material Expression] を選択します。From Material Expression が選択されると、Main Material ノードの Shading Model ピンが白に変わり、有効であることが示されます。
マテリアル グラフで 右クリック し、コンテキスト メニューで「Shading Model」を検索します。Shading Model マテリアル式をグラフに追加します。
グラフで Shading Model ノードを選択します。[Details] パネルで、ドロップダウン メニューを使用して、使用するシェーディング モデルを選択します。
Shading Model ノードを Main Material ノードの Shading Model 入力ピンに接続します。これで、このマテリアルが Shading Model マテリアル式**から派生している Clear Coat** シェーディング モデルを使用するようになりました。
このワークフローの主なメリットは、単一のマテリアル内で複数のシェーディング モデルをブレンドできることです。使用例については、以下のセクションを参照してください。
Material (マテリアル) の Used Shading Models (使用したシェーディング モデル)
マテリアル グラフで複数のシェーディング モデルを使用している場合、操作しやすいように、それらのシェーディング モデルが、[Details] パネルの [Used Shading Models] プロパティの横に表示されます。
なお、このリストにはマテリアル グラフ内に設定されているシェーディング モデルのみが含まれており、必ずしも実際にコンパイルされているものを示すものではありません。これは、Switch ノードを使用して、シェーディング モデルを含むグラフのパーツ全体を削除することができるためです。この例については、以下の「Material Switch ノード」セクションを参照してください。
複数のシェーディング モデルをブレンドする
以下のセクションでは、単一のマテリアルで複数のシェーディング モデルをブレンドする 3 通りの方法について説明します。
マテリアル属性をブレンドする
2 種類のシェーディング モデルをピクセル単位でもっとも簡単にブレンドするには、Set Material Attributes 式を使用して各サーフェスを定義し、BlendMaterialAttriutes ノードを使用してそれらのサーフェスをブレンドします。
この例は、マテリアルの物理属性を定義するための マテリアル属性 ワークフローの使用方法を理解していることを前提としています。このプロセスを確認する必要がある場合は、「マテリアル属性式」を参照してください。
以下の例では、チェッカーボード テクスチャを BlendMaterialAttriubtes ノードの Alpha 入力に接続することにより、マテリアル属性の各セットで Default Lit および Clear Coat シェーディング モデル間をマスクしています。
マテリアルの設定
上記のようなマテリアルを作成するには、次の手順を使用します。
[Details] パネルで、[Shading Model] を[From Material Expression] に設定します。同じセクションで、[Use Material Attributes] オプションをオンにします。このオプションをオンにすると、Main Material ノードが表示されなくなり、Material Attributes 出力ノードに置き換わります。
SetMaterialAttributes 式を使用して、2 つのそれぞれのサーフェス タイプを定義します。マテリアル グラフで SetMaterialAttributes ノードを選択し、[Details] パネルで [Add Element (要素を追加)] アイコンをクリックします。グラフの両方の SetMaterialAttributes ノードに Shading Model 入力ピンを追加します。両方のマテリアルを定義したら、BlendMaterialAttributes ノードを追加して、2 つの属性セットをブレンドします。BlendMaterialAttributes 式を Material Attributes 出力ノードに接続します。以下のビデオで、このプロセスをご覧ください。
この例で使用している完全なマテリアル グラフを、以下の画像に示します。グラフの Clear Coat 部分で使用されている炭素繊維の法線マップ テクスチャは、「Clear Coat with Dual Normals (2 つ目の法線を使用したクリア コート)」ページでダウンロードできます。
このマテリアルがスタティック メッシュに適用されると、これら両方のシェーディング モデルをレンダリングする際に、ドローコールを 2 回ではなく 1 回のみ行います。アルファ マスクが適用され、2 つのシェーディング モデルが球体上の異なる領域にマッピングされているのが明確にわかります。
If 文
If マテリアル式を使用して、マテリアル属性の同じセット内でシェーディング モデルをブレンドすることもできます。If 式は、A 入力と B 入力の浮動小数値を比較し、A の値が B より大きいか、等しいか、小さいかに基づいて、異なる結果を出力します。以下の例では、このロジックを使用して、グラフで 2 つのシェーディング モデルのいずれかを選択します。
B に値が設定されていない場合、デフォルトでは値が「0」に設定されます。この場合、これをマテリアル インスタンス内で制御するためには、ハードコード化された値を [Details] パネルで設定するか、B 入力のテクスチャ、定数、または Scalar パラメータから派生した別の浮動小数値を使用します。この例では、B 値に「0.5」の定数値を使用しています。
下の比較画像では、If 式によって B と A の値が評価され、シェーディング モデルが Default Lit または Clear Coat のいずれかに設定されます。A の浮動小数値が B の値より大きい場合は Default Lit が使用され、A の値が B の値より小さい場合は Clear Coat が使用されます。
Switch ノード
次の使用可能な Switch ノードを使用すると、マテリアルの機能と品質を制御できます。
Shading Path Switch は、マテリアル ロジックのどの部分をレンダリング パスに使用するかを指定する場合に役立ちます。
Quality Switch は、エンジンの品質レベルを使用してマテリアル ロジックを制御する場合に役立ちます。
Feature Level Switch は、さまざまなデバイスでの使用に向けてマテリアルを設定する場合に便利です。
Static Switch または Static Switch Parameter は、ベース マテリアルに含まれるマテリアルのブランチ全体を除外する場合、またはマテリアル インスタンスを通じてコントロール可能にする場合に役立ちます。
以下の比較画像では、Static Switch 式によって、True
の場合はシェーディング モデルが Default Lit に、False
の場合は Clear Coat に設定されています。
マテリアルをインスタンス化する
マテリアルのインスタンス化がサポートされているため、マテリアル グラフ内でロジックを設定して使用し、パラメータと変数を利用して、使用するシェーディング モデルを設定することができます。
なお、Material Instances シェーディング モデルは From Material Expression として表示され、スタティック シェーディング モデルにオーバーライドすることができます。ただし、Material Instances シェーディング モデルを From Material Expression にオーバーライドすることはできません。実行しても失敗し、オーバーライドされません (メッセージも表示されません)。
追加情報
シェーディング モデル入力が常に有効であると表示される
[Use Material Attributes (マテリアル属性を使用)] が有効になっており、Set、Get、Make、または Break のいずれかの Material Attributes ノードを使用した場合、From Material Expression を シェーディング モデル**として選択していない状態であっても、Shading Model 入力は常に有効 (グレーアウトされない状態) であると表示されます。From Material Expression** がマテリアルのシェーディング モデルとして設定されていない限り、ピンは機能しません。これは、デフォルトである Main Material Inputs ノードには影響しません。
マテリアル インスタンス オーバーライド
マテリアル インスタンスの Shading Model のオーバーライドは想定どおりに機能しますが、これを From Material Expression に設定しようとしても、親マテリアルで使用されていない限り、失敗して設定は変更されません (メッセージも表示されません)。
Unlit シェーディング モデル
膨大な量の情報がコンパイルされるため、Regression (回帰) を導入しない限り、シェーディング パスは正しくサポートされません。