新しいグループを作成する:
- グループ ビューを表示するには、グループ ノードで をクリックします。
- [Hw シェーダ ノード](Hw Shader Nodes) [計算](Math) [追加](Add)および [Hw シェーダ ノード](Hw Shader Nodes) [値](Value) [カラー](Color)を選択して[追加](Add)ノードと[カラー](Color)ノードをそれぞれ作成します。
- 次のようにノードを接続します。
- [カラー](Color)の[RGB]アトリビュートを[追加](Add)の最初の[値](Value)アトリビュートに接続します。
- [乗数](Multiply)の[結果](Result)アトリビュートを[追加](Add)の 2 つ目の[値](Value)アトリビュートに接続します。
- [追加](Add)の[結果](Result)アトリビュートをグループ ノードの[拡散反射光カラー](Diffuse Color)アトリビュートに接続します。
- 新しく作成された[カラー](Color)ノードを選択します。[プロパティ](Properties)パネルで、OffsetColor と名前を入力し、[UI の順番](UI Order)の値を 3 に変更します。
マテリアル エディタ [パラメータ](Parameters)ロールアウトに OffsetColor が表示されるようになります。
[パラメータ](Parameters)ロールアウトの[OffsetColor]アトリビュート
グループを関数に変換する:
- [乗数](Multiply)ノードと[追加](Add)ノードを選択し、[グループ](Group)メニュー [グループを作成](Create Group)を選択します。
- 新しく作成されたグループの をクリックします。グループ ビューで、グループ ノードを選択し、[プロパティ](Properties)パネルで[名前](Name)フィールドを MyColorFunction に変更します。
- また、[プロパティ](Properties)パネルで[グループを関数として扱う](Group Is A Function)をオンにします。このオプションを使用すると、これらのノードの出力はシェーダ コードの関数としてカプセル化されます。
- グループ ノード ポートに固有の名前を付けます。現在はすべてのポートに Value という名前が付いているため、シェーダは無効となっています。(マテリアル エディタを確認すると、[パラメータ](Parameters)ロールアウトにエラー メッセージが表示されています。)
[プロパティ](Properties)パネルで次のように変更します。
- [アクティブ ソケット](Active Socket): 0
[アクティブ ソケット ラベル](Active Socket Label): [ColorA]
- [アクティブ ソケット](Active Socket): 1
[アクティブ ソケット ラベル](Active Socket Label): [強度](Multiplier)
- [アクティブ ソケット](Active Socket): 2
[アクティブ ソケット ラベル](Active Socket Label): [ColorB]
注: グループを関数に変換するときは、すべてのグループ ノード ポートに固有の名前を付ける必要があります。名前が固有でない場合は、シェーダが無効になります。
- グループ ビューを閉じ、[ツール](Tools)メニュー [グラフを計算](Compute Graph)を選択します。
シェーダが再び有効になりました。
マテリアル エディタでは、このシェーダの[パラメータ](Parameters)ロールアウトが再度表示されます。
シェーダ ファイルを保存し、シェーダ コードを確認します。
- グループ ビューを閉じます。
- [マテリアル](Material)ノードを選択します。[プロパティ](Properties)パネルで、シェーダ ファイルのファイル名を[HwShader / ファイル名](HwShader / Filename)フィールドに入力し、[Enter]を押します。
- [HwShader / ディスクに保存](HwShader / Save To Disk)をクリックします。
作業領域の下部に、シェーダ ファイルの保存先のパスがツールチップとして表示されます。
注: ShaderFX はグループをファイルとして
¥users¥<username>¥my documents¥3dsmax¥shaderfx¥shaders¥
フォルダに保存します。
シェーダを FX ファイルとして保存した場合、ShaderFX を使用せずに FX シェーダを DirectX シェーダとしてロードできるようになりました。
いくつかの異なるシェーダ形式で保存することができます。「HLSL、CgFX、GLSL に書き出す」を参照してください。
シェーダ コードを確認して合理化する:
- テキスト エディタを使用してシェーダ ファイルを確認します。「MyColorFunction」で検索します。
MyColorFunction はシェーダ ファイル内で関数として定義されています。SHADERDATA 構造が入力として一覧表示されます。これが既定の設定です。
- この設定を無効にしてコードを簡潔にするには、MyColorFunction のグループ ビューに移動し、グループ ノードを選択して、[プロパティ](Properties)パネルで [DATA 構造を関数入力として追加しない](Don't Add DATA Struct As Function Input)をオンにします。
シェーダ ファイルを再度保存し、SHADERDATA 構造が入力パラメータとして一覧表示されなくなっていることを確認します。