ShaderFX エディタを使用して Stingray 物理ベース シェーダを構築する

注: 以前、Maya 2016 および Maya 2016 Extension 1 では、プリセット マテリアル(Preset Material)ドロップダウン リストに親マテリアル(Parent Material)という名前が付いていて、親マテリアル(Parent Material)アトリビュートにはエンジン マテリアル内(In Engine Material)という名前が付いていました。

ShaderFX エディタ ウィンドウと利用可能な ShaderFX ノードを使用して、Stingray 物理ベース シェーダを構築することができます。

開始するにはまず、ハイパーシェード(Hypershade)または新しいマテリアルの割り当て(Assign New Material)ウィンドウから Stingray PBS ノードを作成します。

プリセット シェーダ グラフを作成する

シェーディング ネットワークを作成するときに、グラフをプリセットとして保存し、次に新しい Stingray PBS ノードを作成するときに再使用することができます。これにより、同じシェーダ グラフを繰り返し作成してゲームのパフォーマンスが下がることを避けることができます。

新しいカスタム プリセットを作成するには、Stingray PBS アトリビュート エディタ(Attribute Editor)プリセット マテリアル(Preset Material)ドロップダウン リストにある カスタム(Custom)を選択します。「Stingray 物理ベース シェーダ用のカスタム プリセットを作成する」を参照してください。

ShaderFX を開いてシェーダ グラフを編集するには

ShaderFX を開く(Open ShaderFX)をクリックして ShaderFX エディタ ウィンドウを開きます。

任意の ShaderFX ネットワークにノードを作成して接続します。ShaderFX エディタの作業領域で右クリックし、マーキング メニューから追加(Add)を選択して利用可能なノードから選択します。または、ノード ブラウザ(Node Browser)からドラッグ&ドロップすることもできます。

注:

Shaderfx シェーダ(Shaderfx Shader)ネットワークを作成する方法と同様に ShaderFX エディタから Stingray PBS シェーダ ネットワークを作成することもできますが、前者から .sfx ファイルを保存して後者でそのファイルを使用することや、その逆はできません。ShaderFX エディタ インタフェースは似ていますが、利用可能なノードのセットは異なり、互換性はありません。

シェーディング ネットワークで float またはカラー値を作成するには

float を作成するには、マテリアル変数(Material Variable)ノードを作成し、アトリビュート エディタ(Attribute Editor)タイプ(Type)ドロップダウン リストからスカラー(Scalar)またはベクトル 3(Vector 3)またはベクトル 4(Vector 4)を選択して、float、float3、float4 をそれぞれ作成します。

カラーを作成するには、マテリアル変数(Material Variable)ノードを作成し、アトリビュート エディタ(Attribute Editor)タイプ(Type)ドロップダウン リストからベクトル 3(Vector 3)を選択して、ベクトル(Vector)アトリビュート カラー ポットからカラーを選択します。

float1 から 4 までの任意の組み合わせを接続することができます。つまり、float3 ポートを float4 ポートに接続することなどができます。

テクスチャ マップを作成するには

テクスチャ マップを作成するには、サンプル テクスチャ(Sample Texture)ノードを作成し、ファイル テクスチャに接続します。

UV セット ノード(Texcoord 0 など)をサンプル テクスチャ(Sample Texture)UV アトリビュートに接続して、オブジェクトのテクスチャ座標を設定する必要があります。

次の単純なネットワークに、リニア補間を混合(Linear Interpolate Mix)ノードを使用して 2 つのテクスチャを結合し、スカラー値を使用して各テクスチャの影響をコントロールする方法を示します。

テクスチャ提供: www.cgtextures.com

アトリビュート エディタ(Attribute Editor)に ShaderFX ノードをエクスポーズする

グラフにノードを追加して、ShaderFX エディタを閉じたときに Stingray PBS アトリビュート エディタ(Attribute Editor)でこれらのノードがアトリビュートとしてエクスポーズされるようにすることができます。これにより、同じカスタム プリセットを再使用しながら、ShaderFX エディタを開くことなくこれらのアトリビュートを調整することができます。

ノードには以下があります。

アトリビュート名は、ノードの名前から取得されます。そのため、ノードの既定の名前を変更する必要がある場合があります。上の例では、既定の名前 texture map 5881422Grass に変更され、ShaderFX エディタが閉じたときに(texture map 5881422 の代わりに) Grass がアトリビュートとしてアトリビュート エディタ(Attribute Editor)に表示されています。ノードの名前を変更するには、ノードを選択してアトリビュート エディタ(Attribute Editor)名前(Name)フィールドに新しい名前を入力します。

シェーダのライティングを調整する

いくつかのライトを配置してシェーダ内にシャドウを投じることができます。シェーダ内のライトの数が多すぎるとシェーダの計算処理速度が低下する場合があるため、適切な数のライトを配置するようにしてください。ShaderFX エディタで標準ベース(Standard Base)ノードを選択してアトリビュート エディタ(Attribute Editor)を開き、Num Shadow Lights ドロップダウン リストから 1 ~ 3 までの数、または「なし」あるいは「すべて」を選択します。

さらに、Stingray PBS ノードのライトの強度は、Stingray ゲーム エンジンの照度計算と一致させるために消灯状態で計測されます。結果として、ライトの強度が同じであっても、Maya のシェーダより Stingray PBS マテリアルのほうがより明るく表示されます。

このシェーダを Maya 内部でのみ使用するものとし、シェーディング ネットワークに書き出して Stingray ゲーム エンジンで使用する予定がない場合は、標準ベース(Standard Base)ノードのアトリビュート エディタ(Attribute Editor)で、消灯状態のライト強度(Light Intensity in Stops)オプションをオフにすることができます。

IBL カラー エンコーディング

IBL 立方体マップ(シェーダ内のグローバル拡散テクスチャとグローバル スペキュラ テクスチャ)が使用するエンコーディングのタイプを、標準ベース(Standard Base)ノードのアトリビュート エディタ(Attribute Editor)IBL エンコーディング(IBL Encoding)ドロップダウン リストから選択します。

粗さと反射

スペキュラ反射のホットネスを減らすには、標準ベース(Standard Base)ノードのアトリビュート エディタ(Attribute Editor)で、粗さのホットネスを再マップ(Remap Roughness hotness)オプションを無効にします。

関連項目