DirectX 11 Shader

 
 
 

以下に、MayaUberShader シェーダ ファイルが割り当てられている DirectX 11 Shader ノードのアトリビュートを示します。

このシェーダを使用するためには、ビューポート 2.0 の DirectX 11 環境で作業し、dx11Shader.mll プラグインを有効にしている必要があります。詳細については、「ビューポート 2.0 で DirectX 11 を使用する」を参照してください。

ハイパーシェード(Hypershade) の作成バーDirectX 11 Shader を見つけることができます。シェーダが作成されると、MayaUberShader.fx ファイルが自動的にロードされます。

dx11Shader.mll プラグインを使用して、Maya ビューポート 2.0 に独自の HLSL シェーダをロードおよび表示できます。ハイパーシェードを使用して DirectX 11 シェーダを作成すると、MayaUberShader.fxo ファイルが自動的に接続されます。ただし、カスタムの HLSL シェーダをロードすることもできます。または、その他のサンプル HLSL シェーダが <maya directory>¥presets¥HLSL11¥examples¥ に用意されています。

dx11Shader_defaults プリセットが提供されます。このプリセットを使用して、パラメータをシェーダに最初にコンパイルされた値に戻すことができます。

ヒント:MayaUberShader.fxo ファイルの自動ロードをオーバーライドするには、ウィンドウ > 設定/プリファレンス > プリファレンス > DX 11 シェーダ(Windows > Settings/Preferences > Preferences > DX 11 Shader)に移動し、既定でロードするエフェクト ファイルを設定します。
注:以下に、MayaUberShader.fx ファイルのアトリビュートを示します。アトリビュート エディタシェーダ(Shader) セクションに、すべての DirectX 11 シェーダのアトリビュートがあります。ただし、使用できるオプションは異なる場合があります。たとえば、すべての DirectX 11 シェーダにライト アトリビュートがある場合でも、ライトの数やライトのタイプの選択肢は異なる場合があります。パラメータ(Parameters)セクションにあるアトリビュートは、MayaUberShader.fx ファイルに固有です。

Shader

シェーダ ファイル(Shader File)
シェーダ ファイルに移動し、そのシェーダ ファイルを DirectX11 Shader に割り当てます。

DirectX 11 Shader では、.fx ファイルが次の場所および次の順序で検索されます。

  • `workspace -q -rd`
  • `workspace -q -rd` + "/renderData/shaders"
  • `workspace -fre shaders`
  • `getenv("DX11SHADER_ROOT")`
  • `getenv("DX11SHADER_ROOT")` + "/shaders"
  • ${MAYA_LOCATION}/presets/HLSL11/examples

` は、MEL または C 関数を実行して必要な値を取得することを示します。

注:MayaUberShader.fx ファイルおよびその他のサンプルの HLSL11 シェーダは、<maya directory>¥presets¥HLSL11¥examples¥ で提供されます。

をクリックして .fx ファイルを再ロードし、 をクリックして既定のテキスト エディタでファイルを編集します。

テクニック(Technique)
これらのオプションを指定して、同じシェーディング マテリアル内で異なるシェーディング方法を使用できます。
注:次に、MayaUberShader のさまざまなテクニックを示します。シェーダごとに異なるテクニックで、さまざまなエフェクトを実現します。
ヒント:チャネル ボックスを使用するか、 アトリビュート スプレッドシートテクニック(Technique)の値を設定して、1 つの手順で複数の DirectX 11 シェーダのテクニックを変更できます。アトリビュート スプレッドシートでは、整数を使用してテクニック(Technique)値を設定します。テッセレーション オフ(TessellationOFF) = 0、テッセレーション オン(TessellationON) = 1、およびワイヤフレーム =2 です。このショートカットは、同じ fx シェーダの複数のインスタンスを変更する場合にのみ適用できます。
  • テッセレーション オフ(TessellationOFF): これは既定のオプションで、テッセレーションを使用せず、単にワークスペースにメッシュを表示します。

  • テッセレーション オン(TessellationON): このオプションでは、シェーディング レベルのテッセレーションを使用してよりスムーズなモデルを提供します。追加のジオメトリは必要ありません。

  • ワイヤフレーム(WireFrame): このオプションでは、テッセレーションしたメッシュのワイヤフレーム バージョンを提供し、テッセレーション オン(TessellationON)機能のテッセレーションを確認できます。

ライト 0(Light0)/ライト 1(Light 1)/ライト 2(Light 2)

自動バインド(Automatic Bind)オプションを選択すると、シーンのライトがシェーダに自動的に割り当てられます。シーン内のライトが 3 つ未満の場合、ライト 1(Light 1)またはライト 2(Light 2)(あるいはその両方)は、新しいライトが作成されるまでバインドされません。このオプションを選択すると、ライト 0(Light0)/ライト 1(Light 1)/ライト 2(Light 2)それぞれに対してバインドされるライトが示されます。

ナビゲーション アイコン を使用して、アトリビュート エディタで接続されているライト シェイプにアクセスします。

シェーダ設定を使用(Use Shader Settings)を選択し、ライトがバインドされないようにすることもできます。このように、DirectX 11 Shader のアトリビュート エディタライト 0(Light0)/ライト 1(Light 1)/ライト 2(Light 2)アトリビュートを使用してライトのプロパティを微調整できます。

また、ライトを手動でバインドすることもできます。ドロップダウン リストで、シェーダのバインド先となるシーンからのライトを選択します。

現在、MayaUberShader は 3 つのポイント ライト、スポット ライト、アンビエント ライトまたはディレクショナル ライトをサポートします。
重要:ライトをバインドした後に、dx11 シェーダのアトリビュート エディタでそのパラメータを変更することはできません。代わりに、ライトのアトリビュート エディタで変更する必要があります。
注:DirectX 11 Shader がロードされると、自動バインド(Automatic Bind)に設定されたライトが自動的にバインドされます。同じオブジェクトアトリビュートを共有しているすべてのパラメータは 1 つのライトを定義していると見なされます。特定のライト キーワード(アンビエント/ポイント/スポット/ディレクショナル)がオブジェクトアトリビュート文字列で見つかると、Maya ではシーンで見つかったこのタイプの最初のライトに接続します。これが実行されると、接続されていないライトは、位置/方向パラメータの互換性に基づいて残りのシーン ライトに接続されます。

パラメータ

ライティング

リニア スペース ライト(Linear Space Lighting)
テクスチャでガンマを修正しないようにする場合は、このオプションを無効にします。このオプションを有効にすると、テクスチャにガンマが適用されていると見なされ、このガンマは除去されて、後から再適用されます。
シャドウ(Shadows)
シャドウの投影を有効にする場合は、このオプションを選択します。
シャドウの強度(Shadow Strength)
シャドウの強度を制御するには、このスライダを使用します。
シャドウ バイアス(Shadow Bias)

リアルタイムのシャドウでは、シャドウ マップの制限された精度またはシーン スケールの差によりオブジェクト上にアーティファクトが生じることがあります。オブジェクト上のシャドウ アーティファクトを除去するには、このアトリビュートを使用します。

両面ライティング(Double Sided Lighting)
両面の透明オブジェクトのバック フェース法線を逆にしてそのライティングを改善するには、このオプションを選択します。
リム ライト最小(Rim Light Min)/リム ライト最大(Rim Light Max)/リム ライト輝度(Rim Light Brightness)
シーンでリム ライトをシミュレートしてオブジェクトのエッジをハイライトするには、これらのオプションを使用します。明から暗への減衰を設定するには、リム ライト最小(Rim Light Min)リム ライト最大(Rim Light Max)を使用します。リム ライト最大(Rim Light Max)は、減衰が開始されるエッジからの距離を表します。リム ライト最小(Rim Light Min)は、減衰が終了するエッジからの距離を表します。

ライト 0

ライト 0 を有効にする(Enable Light 0)
シェーダで指定されたライトを有効にするには、このオプションを選択します。
注:ライト 0、ライト 1 およびライト 2 で次のパラメータが繰り返されます。
ライト 0 の位置(Light 0 Position)
ライトの位置を設定するには、このアトリビュートを使用します。
注:ライトが Maya ライトにバインドされていない場合は、 を使用して既存のライト、カメラ、ロケータなどを手動でこのアトリビュートに接続できます。
注:シーンのライトの場合は[7]を押します。
ライト 0 のカラー(Light 0 Color)
ライトのカラーをカスタマイズします。カラー サンプルをクリックし、カラー チューザ(Color Chooser)でライトのカラーを変更するか、ライトにテクスチャをマップします。
ライト 0 の強度(Light 0 Intensity)
ライトの輝度を設定するには、このアトリビュートを使用します。強度の値が 0 のライトは発光しません。強度の値が負であるライトは、そのライトの影響が及ぶ領域でシーンからライトを除去します。
ライト 0 の方向(Light 0 Direction)
ライトの方向を設定するには、このアトリビュートを使用します。
ライト 0 の円錐角度(Light 0 Cone Angle)
スポットライトの円錐角度を設定するには、このアトリビュートを使用します。これは、スポット ライトのビームのエッジからエッジまでの角度(度単位)です。
ライト 0 の周縁部の角度(Light 0 Penumbra Angle)
スポットライトの周縁部の角度を設定するには、このアトリビュートを使用します。これは、スポット ライトの強度が 0.0 に減衰する時点における、スポット ライトのビームのエッジからの角度(度単位)です。
ライト 0 の減衰(Light 0 Decay)
ライトの強度が距離に伴って減衰する程度を制御するには、このアトリビュートを使用します。詳細については、「減衰率(Decay Rate)」を参照してください。

アンビエントと放出性

アンビエント放出マップ(Ambient Emissive Map)
このオプションを有効にして、ファイル テクスチャをアンビエント放出マップ(Ambient Emissive Map)に接続し、光源のように明るい放出テクスチャを適用します。テクスチャの使用を停止するには、アンビエント放出マップ(Ambient Emissive Map)を無効にします。
アンビエント スカイ カラー(Ambient Sky Color)/アンビエント グラウンド カラー(Ambient Ground Color)
地面または空からのライトをシミュレートしてオブジェクトを輝かせるには、これらのオプションを使用します。

拡散

拡散マップ(Diffuse Map)/拡散マップ アルファ(Diffuse Map Alpha)
拡散マップ(Diffuse Map)を選択し、拡散マップをオブジェクトに適用し、オブジェクトを明るくします。テクスチャを拡散マップ(Diffuse Map)アトリビュートに接続します。拡散マップ アルファ(Diffuse Map Alpha)を選択し、テクスチャのアルファ情報をオブジェクトの不透明度に適用します。
拡散カラー(Diffuse Color)
拡散カラー(Diffuse Color)を使用してオブジェクトの色合いを調整することもできます。
ライトマップ マップ(Lightmap Map)
ライトマップ マップ(Lightmap Map)を選択し、ベイク処理されたシャドウマップを適用します。シャドウマップに拡散が乗算されて、ベイク処理されたシャドウを作成します。
スキン用に拡散を和らげ(Soften Diffuse for Skin)
和らげられた拡散(またはブレンドされた法線拡散光)を適用するには、このオプションを選択します。この機能により、オブジェクトの拡散ライトは、スキンをシミュレートする際によりリアルになります。
拡散を和らげマスク(Soften Diffuse Mask)
オブジェクトのパーツごとに異なる量の和らげられた拡散を適用するには、このオプションを使用します。
拡散を和らげ(Soften Diffuse)
このオプションは、ブレンドされた法線拡散光です。反射する光のエフェクトを作成し、スキンの表示を和らげる場合は、この値を増やします。

不透明度

不透明度(Opacity)
オブジェクトの透明度を制御するには、このアトリビュートを使用します。
不透明度マスク(Opacity Mask)
完全に透明なオブジェクトの領域を指定するテクスチャを適用するには、このアトリビュートを使用します。
不透明度マスクのバイアス(Opacity Mask Bias)
不透明度マスクのピクセルが完全に透明になるしきい値を設定するには、このアトリビュートを使用します。たとえば、0.5 で設定すると、不透明度マスクで 0.5 を下回る値のすべてのピクセルが完全に表示されなくなります。

スペキュラ

スペキュラ マップ(Specular Map)
テクスチャの値に基づいて、オブジェクトの鏡面反射性の量を増減するには、スペキュラ マップ(Specular Map)を選択します。スペキュラ マップの RGB チャネルでスペキュラ カラー(Specular Color)を制御し、スペキュラ マップのアルファ チャネルでスペキュラ パワー(Specular Power)を制御します。
スペキュラ カラー(Specular Color)
スペキュラ カラー(Specular Color)で、鏡面反射性の輝度とカラーを制御します。
スペキュラ パワー(Specular Power)
スペキュラ パワー(Specular Power)で、スペキュラ ハイライトのシェイプを制御します。
スキンの Kelemen-Szirmaykalos (Kelemen-Szirmaykalos For Skin)
Kelemen-Szirmaykalos スペキュラ計算を実行して、人間の肌をより的確にシミュレートするには、このオプションを選択します。このオプションを無効にすると、スペキュラの計算に Blinn シェーダが使用されます。

法線

法線マップ(Normal map)
バンプのライトと、法線マップにベイク処理された詳細からのインデントをシミュレートするには、法線マップ(Normal map)を選択します。
法線の高さ(Normal Height)
法線マップ テクスチャでバンプの高さを変更するには、法線の高さ(Normal Height)オプションを使用します。

反射

反射立方体マップ(Reflection Cube Map)

シーンに反射を含めるには、反射立方体マップ(Reflection Cube Map)オプションを選択します。反射立方体マップ(Reflection Cube Map)を使用すると、よりリアルなあらかじめベイク処理された反射を作成できます。

ヒント:自由に使用できるサード パーティ ツールを使用して、立方体マップを生成できます。
反射強度(Reflection Intensity)
オブジェクト上の反射の強度を調整するには、このスライダを使用します。
反射ブラー(Reflection Blur)
ブラー反射エフェクトを作成するには、このオプションを使用します。このオプションを使用すると、シミュレートしようとしているメタルまたはマテリアルのタイプを制御しやすくなります。
反射フレネル最小(Reflection Fresnel Min)/反射フレネル最大(Reflection Fresnel Max)

フェースがカメラに並行か垂直かに基づいて反射の量を調整するには、反射フレネル最小(Reflection Fresnel Min)および反射フレネル最大(Reflection Fresnel Max)を使用します。

カメラと向き合っているオブジェクトのフェースに反射を追加するには、反射フレネル最小(Reflection Fresnel Min)を使用します。

カメラに垂直なオブジェクトのフェースに反射を追加するには、反射フレネル最大(Reflection Fresnel Max)を使用します。

これらのオプションは、カーブしたオブジェクトで最適に動作します。

反射マスク(Reflection Mask)
テクスチャをマスク領域に適用してそれらの領域が反射を受けないようにするには、これらのオプションを使用します。
反射ブラーのスペキュラ アルファ(Spec Alpha for Reflection Blur)

スペキュラ テクスチャのアルファ チャネルを使用してオブジェクトのブラー パーツに必要な反射の量を決定するには、このオプションを有効にします。オブジェクト上のすべての場所に反射を均等にブラーする場合は、このオプションを無効にします。

反射をティントするスペキュラ カラー(Spec Color to Tint Reflection)
スペキュラ カラーを使用して、立方体マップ反射のカラーをティントするには、このオプションを有効にします。このオプションが無効な場合、立方体マップはティントされません。

テッセレーションとディスプレイスメント

注:テクスチャ マップは、PNG、JPG、BMP、TIF、TGA、EXR の形式で Mudbox から Maya へ書き出すことができます。
ディスプレイスメント マップ(Displacement map)

ディスプレイスメント マップを使用するには、ディスプレイスメント マップ(Displacement map)を選択します。ディスプレイスメント マップは、メッシュの頂点を押し出すか、インデントします。オブジェクトで追加の詳細を生成するためにテッセレーションと組み合わせて使用する場合、ディスプレイスメント マップは特に便利です。

法線マップに比べ、ディスプレイスメント マップには、シャドウでディスプレイスメント マップの新しい詳細が選択されるというメリットがあります。

グレースケールのディスプレイスメント マップを使用している場合は、接線ベクトル ディスプレイスメント(Tangent Vector Displacement)を無効にします。

接線ベクトル ディスプレイスメント(Tangent Vector Displacement)

ベクトル ディスプレイスメント マップを適用するには、このオプションを選択します。Mudbox でベクトル ディスプレイスメント マップを作成できます。ただし、Mudbox で実行するのと同じ低ポリゴン モデルを使用する必要があります。

ベクトル ディスプレイスメント マップの場合は、ディスプレイスメント マップ(Displacement map)および接線ベクトル ディスプレイスメント(Tangent Vector Displacement)の両方を選択します。ベクトル ディスプレイスメント マップを使用している場合、通常は法線マップもシェーダに提供して、ベクトル ディスプレイスメント マップで頂点を移動した後にシェーダに正しい法線を提供します。

注:Mudbox から法線マップを出力する場合は、座標空間(Coordinate Space)として接線(Tangent)を選択します。Mudbox からベクトル ディスプレイスメント マップを出力する場合は、ベクトル空間(Vector Space)として絶対接線(Absolute Tangent)を選択します。
ディスプレイスメントの高さ(Displacement Height)
ディスプレイスメントをスケールするには、このアトリビュートを使用します。
ディスプレイスメント オフセット(Displacement Offset)

ディスプレイスメントのベース値を制御するには、このアトリビュートを使用します。

たとえば、オフセットが 0.5 に設定されている場合、グレイ カラーはディスプレイスされません。オフセットが 0 の場合は、インデントが生成されます。オフセットが 1 の場合は、押し出されます。

同様に、オフセットが 0 に設定されている場合、黒のカラーはディスプレイスされません。オフセットが 0.5 の場合は、1.0 のオフセットの半分が押し出されます。インデントは生成されません。

ディスプレイスメント クリップ バイアス(Displacement Clipping Bias)
極端なディスプレイスメントの場合、フェースは誤ってクリップされる場合があります。これは、長くて広いランドスケープまたはオブジェクトを含むシーンで生じる場合があります。オブジェクトのフェースがビューからクリップされるタイミングを決定する最大ディスプレイスメントを設定するには、このアトリビュートを使用します。バウンディング ボックスの拡張スケール(Bounding Box Extra Scale)を使用して、オブジェクトが誤ってクリップされないようにすることもできます。
バウンディング ボックスの拡張スケール(Bounding Box Extra Scale)
ディスプレイスメントが使用されるときに、オブジェクトが誤ってクリップされないようにバウンディング ボックスを制御するには、このオプションを使用します。
テッセレーション範囲(Tessellation Range)
このアトリビュートを設定すると、テッセレーションは、カメラからのオブジェクトの距離で制御されます。
注:テッセレーション設定を調整する場合、ワイヤフレーム オン(WireFrameON)を有効にするのが最も簡単な方法です。
テッセレーション最小(Tessellation Minimum)

メッシュ全体で一定のテッセレーションの値。1 の値は、テッセレーションがないことを表します。

解像度を上げるには、テッセレーション最小(Tessellation Minimum)の値を大きくします。

フラット テッセレーション(Flat Tessellation)
ポイント法線テッセレーション(オブジェクトのエッジをスムーズにする)をフラット テッセレーション(Flat Tessellation)(面分割のみ行い、オブジェクトをスムーズにしない)とブレンドする場合に、このオプションを選択します。スムージングを無効にする場合は、この値を 1 に設定します。

半透明性

半透明度
半透明度(Translucency)機能では、オブジェクトを通過するライトをシミュレートします。たとえば、人間の肌をシミュレートしている場合、肌は赤色が強くなります。以下のオプションを使用する場合は、このアトリビュートを選択します。
注:オブジェクトに半透明度を追加するには、これらのオプションを使用します。このオプションでは、オブジェクトを通過するライトをシミュレートし、よりリアルな外観にします。
厚みマスク(Thickness Mask)

厚みマスク(Thickness Mask)は、肌の特定の領域を通過するライトの量を制御するためにレンダリングするテクスチャです。たとえば、鼻のように薄い肌で覆われた非骨格領域は、大量の半透明が入ってくるため、赤みを帯びたカラーとなります。一方、骨格領域は、厚みテクスチャで暗めの色になります。

ライト半透明歪み(Light Translucent Distortion)

法線(ピクセル単位)が半透明度に影響する量を設定するには、この値を使用します。

0 に設定すると、半透明度はオブジェクト全体で均等になります。

0 より大きい値(0.5など)に設定すると、半透明エフェクトは均等ではなくなり、法線に基づいて分散され、歪められます。その結果、より自然に見えます。

ライト半透明パワー(Light Translucent Power)
半透明領域のフォーカスまたはサイズを変更するには、このアトリビュートを使用します。
ライト半透明スケール(Light Translucent Scale)
オブジェクトの背後にあるライトで作成される半透明の量を調整するには、このオプションを使用します。スライダを 0 に調整すると、オブジェクトから半透明はなくなります。
半透明最小(Translucent Minimum)
このアトリビュートでは、背後にライトがない場合でも、オブジェクトに常に含まれる半透明の量を設定します。
外側の半透明カラー(Outer Translucent Color)/中間の半透明カラー(Medium Translucent Color)/内側の半透明カラー(Inner Translucent Color)
肌の半透明カラー(肌のカラーが異なる生き物など)を変更する場合に、これらのオプションを使用します。

UV

UV セットを各テクスチャ マップにバインドできます。これを行うには、最初に UV セットを DirectX 11 Shader にバインドします。サーフェス データ(Surface Data)セクションに最大 3 つの UV セットをバインドできます。UV セットを適用可能な各テクスチャ座標 0/1/2 にマップします。このドロップダウン リストを使用して、各テクスチャ マップのマップ先とするテクスチャ座標(つまり UV セット)を選択できます。詳細については、「DX11 MayaUberShader に接続されているテクスチャ マップに UV セットを割り当てる」を参照してください。

注:アトリビュート エディタUV セクションは、MayaUberShader に固有です。ただし、サーフェス データ(Surface Data)および既定のテクスチャ データ(Default Texture Data)機能は、すべてのエフェクト シェーダで一般的です。

サーフェス データ

このセクションでは、シェーダに渡されるジオメトリのチャネル(法線や接線など)を指定します。 を右クリックすると、使用可能なオプションが表示されます。

既定では、テクスチャ座標 0 が UV セットにマップされ、マップ 1テクスチャ座標 1マップ 2 にマップされ、その逆も行われます。UV セットを別の名前で使用する場合は、テクスチャ座標 0/1/2 (TexCoord0/1/2) フィールドでこれらの UV セットを指定してシェーダにバインドします。UV セット名の前に uv: を使用します。詳細については、「DX11 MayaUberShader に接続されているテクスチャ マップに UV セットを割り当てる」を参照してください。

既定のテクスチャ データ

UV セットを選択する場合に UV テクスチャ エディタに表示される既定のテクスチャを選択する場合は、これらのオプションを使用します。たとえば、UV マップ 1テクスチャ座標 0 にマップされ、テクスチャ座標 0拡散マップにマップされている場合、UV テクスチャ エディタで UV マップ 1 を選択すると、拡散マップ テクスチャが表示されます。