DirectX シェーダ マテリアルを使用すると、DirectX (Direct3D)シェーダを使ってビューポートでオブジェクトをシェーディングできます。
DirectX シェーディングを使うと、ビューポート内のマテリアルは、マテリアルが他のアプリケーションやゲーム エンジンなどのハードウェアでどのように表示されるかを、より正確に表現することができます。
Nitrous ドライバ(既定のドライバは Nitrous Direct3D 11)または
古いバージョンの Direct3D ドライバを使用しているときにこのマテリアルを使用できます。
DirectX シェーダ マテリアルは、FX ファイルを使用します。FX ファイルは DirectX (DX9 または DX11)シェーダを定義します。これは、Higher-Level Shading Language (HLSL)標準を使って作成されたテキスト ファイルです。
既定では、DirectX シェーダ(FX ファイルを含む)は 3ds Max のプログラム フォルダの
¥maps¥fx¥
に保存されます。
重要: DirectX シェーダのパラメータが DirectX シェーダ マテリアルのインタフェースに表示されるようにするには、FX ファイルに、パラメータにラベルを付け、そのタイプを定義し、その範囲を制限する(これは省略可能)ためのコードが含まれている必要があります。その他の UI 設定もいくつか利用できます。3ds Max のプログラム フォルダの ¥maps¥fx¥ には、このコードが含まれたサンプル ファイルがあります。
DirectX シェーダ マテリアルでは ShaderFX にアクセスすることができ、ハードウェア シェーダ ツリーを作成して、HLSL、CGFX、または GLSL ファイルとして保存することができます。FX ファイル名拡張子を使用して HLSL ファイルに保存することができます。これにより、保存したファイルは、DirectX シェーダ マテリアルで使用できます。
Quicksilver ハードウェア レンダラーでは、FX ファイルまたは ShaderFX ツリーを使用する DirectX マテリアルをレンダリングできます。
注: DirectX シェーダ マテリアルは、CGFX シェーダ ファイルをロードしません。
注: 3ds Max で他のレンダリング システムとは異なる接線ベースの生成方法を採用していた 2014 より前のバージョンで見られた
法線バンプ マップの問題が、Autodesk 3ds Max 2014 では修正されました。この方法を変更することはできませんでした。バージョン 2014 の時点で、3ds Max には 3ds Max、Maya、DirectX という 3 つのモードがあり、それぞれに特定の方法との互換性がありました。「
[法線バンプ モード](Normal Bump Mode)領域」を参照してください。
ライトのサポート
通常、FX シェーダは、特定の数のライト(多くの場合、単一のライト)を使用するようコード化されています。開いた FX ファイルがこのようにコード化されている場合は、シェーダ固有のロールアウトに、使用するライトを選択するコントロールが表示されます。たとえば、次のように表示されます。
一方 XMSL シェーダは、特定のライトを使用するようコード化されていないため、シーンにあるすべてのアクティブなライトを使用します。
ビットマップのサポート
DirectX シェーダのマップ可能なコンポーネントにマップを割り当てる場合、以下のマップ タイプのいずれかを選択できます。
インタフェース
[DirectX シェーダ](DirectX Shader)ロールアウト
- 方法ドロップダウン リスト
-
DirectX 方法を選択するには、このメニューを使用します。
- [HLSL ファイル](HLSL File)(既定値)。HLSL (FX)ファイルを使用するには、このオプションを選択します。
- [ShaderFX] アクティブな DirectX マテリアルとして現在の ShaderFX シェーダ ツリーを使用する場合に選択します。
[ShaderFX を使用](Use ShaderFX)がオンのとき、ShaderFX ノード ツリーは、現在の FX または XMSL シェーダを上書きします。
注: [ShaderFX を使用](Use ShaderFX)がオンになっていると、マテリアル エディタの[パラメータ](Parameters)ロールアウトに ShaderFX シェーダ ツリー用のコントロールが表示されます。オフになっていると、ロールアウトには別のアクティブな DirectX シェーダ用のコントロールが表示されます。
- [StingRay] Stingray 物理学に基づいたシェーダを使用するには、このオプションを選択します。
Stingray シェーダは、ShaderFX と同様に ShaderFX エディタを使用します。
- シェーダ ボタン
-
HLSL ファイルがアクティブな状態で、このボタンをクリックしてシェーダを開くためのファイル ダイアログ ボックスを表示します。既定では、FX フォーマット(Direct3D Effects)がアクティブであり、シェーダは standardfx11.fx です。
- 再ロード
-
HLSL ファイルがアクティブである間は、このボタンをクリックしてアクティブなシェーダ ファイルを再ロードします。シェーダ ファイルを更新するには、ファイルを編集してから[再ロード](Reload)をクリックします。3ds Max を再起動しなくても、シェーダに加えた変更の効果を確認できます。
- ShaderFX を開く
- ShaderFX または Stingray がアクティブな間は、このボタンをクリックして ShaderFX エディタ ウィンドウを開きます。
シェーダ固有のロールアウト
[DirectX シェーダ](DirectX Shader)ロールアウトと[技法](Technique)ロールアウトの間に表示されるロールアウトは、選択したシェーダに対するインタフェースです。これらのロールアウトは、各シェーダに固有のものです。
default10.fx シェーダ用のパラメータ
[技法](Technique)ロールアウト
FX ファイルには、複数のシェーダを含めることができます。この中から 1 つを開く場合、[技法](Technique)ロールアウトには、マテリアルに使用するシェーダを選択できるドロップダウン リストがあります。
[ソフトウェア レンダリング スタイル](Software Render Style)ロールアウト
DirectX シェーダ マテリアルが適用されているオブジェクトのソフトウェア シェーディングおよびレンダリングを制御するマテリアルを指定します。Nitrous および古いバージョンの Direct3D ビューポートは DX シェーディングを使用します。OpenGL ビューポートは使用しません。Quicksilver ハードウェア レンダラー以外のレンダリングはソフトウェア シェーディングを使用します。
通常は、シーンのどのオブジェクトに DirectX シェーダ マテリアルが適用されているかを明確に識別するマテリアルを選択します。
注: DirectX シェーダ マテリアルには、ソフトウェア シェーディングの固有設定がありません。任意のタイプの 3ds Max マテリアルを使用できます。DX 固有の設定を使用する、前バージョンのシーンには、対応するレンダリング プロパティを含む標準マテリアルが割り当てられます。
システムで DirectX が使用できないにもかかわらず、マテリアル/マップ ブラウザの[互換性なし](Incompatible)オプションを使って DirectX シェーダ マテリアルを割り当てた場合、マテリアル エディタに表示されるのはこのロールアウトだけです。
[Stingray](Stingray)ロールアウト
[Stingray](Stingray)ロールアウトは Stingray シェーダと共に使用します。
- エンジン リソース(Engine Resource)
- マテリアルを Stingray エンジンにマッピングするパスです。これは必須です。なぜなら、すべてのマテリアルが FBX ファイルに含まれているわけではなく、1 つのマテリアルだけがシーン内のノードに適用されるからです。Stingray から 3ds Max にオブジェクトが送信された場合、このオブジェクトのマテリアルはエンジン リソースに自動的にマッピングされます。エンジン リソースがマッピングされた後に Stingray のマテリアルが変更されて、その後で 3ds Max に送信された場合、プロパティは 3ds Max で自動的に更新されます。
- 固有にする(Make Unique)
- シェーダ グラフ エディタを開きます。
- プリセット マテリアル(Preset Material)
- 同じシェーダ グラフを繰り返し作成しないようにするために、プリセット シェーダ グラフを作成および保存して、次に Stingray シェーダを作成するときにプリセットを再利用することができます。
- 親マテリアル(Parent Material)
- プリセット シェーダ グラフを含むマテリアルです。親マテリアルに基づいて子マテリアルを作成できます。子は親マテリアルからシェーダ グラフ アトリビュートおよびマテリアル アトリビュートを継承します。