グループを関数に変換してシェーダ コードを検証する

新しいグループを作成する:

  1. グループ ビューを表示するには、グループ ノードで をクリックします。
  2. [Hw シェーダ ノード](Hw Shader Nodes) [計算](Math) [追加](Add)および [Hw シェーダ ノード](Hw Shader Nodes) [値](Value) [カラー](Color)を選択して[追加](Add)ノードと[カラー](Color)ノードをそれぞれ作成します。
  3. 次のようにノードを接続します。
    • [カラー](Color)の[RGB]アトリビュートを[追加](Add)の最初の[値](Value)アトリビュートに接続します。
    • [乗数](Multiply)の[結果](Result)アトリビュートを[追加](Add)の 2 つ目の[値](Value)アトリビュートに接続します。
    • [追加](Add)の[結果](Result)アトリビュートをグループ ノードの[拡散反射光カラー](Diffuse Color)アトリビュートに接続します。
  4. 新しく作成された[カラー](Color)ノードを選択します。[プロパティ](Properties)パネルで、OffsetColor と名前を入力し、[UI の順番](UI Order)の値を 3 に変更します。

    マテリアル エディタ [パラメータ](Parameters)ロールアウトに OffsetColor が表示されるようになります。

    [パラメータ](Parameters)ロールアウトの[OffsetColor]アトリビュート

グループを関数に変換する:

  1. [乗数](Multiply)ノードと[追加](Add)ノードを選択し、[グループ](Group)メニュー [グループを作成](Create Group)を選択します。
  2. 新しく作成されたグループの をクリックします。グループ ビューで、グループ ノードを選択し、[プロパティ](Properties)パネルで[名前](Name)フィールドを MyColorFunction に変更します。
  3. また、[プロパティ](Properties)パネルで[グループを関数として扱う](Group Is A Function)をオンにします。このオプションを使用すると、これらのノードの出力はシェーダ コードの関数としてカプセル化されます。
  4. グループ ノード ポートに固有の名前を付けます。現在はすべてのポートに Value という名前が付いているため、シェーダは無効となっています。(マテリアル エディタを確認すると、[パラメータ](Parameters)ロールアウトにエラー メッセージが表示されています。)

    [プロパティ](Properties)パネルで次のように変更します。

    • [アクティブ ソケット](Active Socket): 0

      [アクティブ ソケット ラベル](Active Socket Label): [ColorA]

    • [アクティブ ソケット](Active Socket): 1

      [アクティブ ソケット ラベル](Active Socket Label): [強度](Multiplier)

    • [アクティブ ソケット](Active Socket): 2

      [アクティブ ソケット ラベル](Active Socket Label): [ColorB]

    注: グループを関数に変換するときは、すべてのグループ ノード ポートに固有の名前を付ける必要があります。名前が固有でない場合は、シェーダが無効になります。
  5. グループ ビューを閉じ、[ツール](Tools)メニュー [グラフを計算](Compute Graph)を選択します。

    シェーダが再び有効になりました。

    マテリアル エディタでは、このシェーダの[パラメータ](Parameters)ロールアウトが再度表示されます。

シェーダ ファイルを保存し、シェーダ コードを確認します。

  1. グループ ビューを閉じます。
  2. [マテリアル](Material)ノードを選択します。[プロパティ](Properties)パネルで、シェーダ ファイルのファイル名を[HwShader / ファイル名](HwShader / Filename)フィールドに入力し、[Enter]を押します。
  3. [HwShader / ディスクに保存](HwShader / Save To Disk)をクリックします。

    作業領域の下部に、シェーダ ファイルの保存先のパスがツールチップとして表示されます。

    注: ShaderFX はグループをファイルとして ¥users¥<username>¥my documents¥3dsmax¥shaderfx¥shaders¥ フォルダに保存します。

    シェーダを FX ファイルとして保存した場合、ShaderFX を使用せずに FX シェーダを DirectX シェーダとしてロードできるようになりました。

    いくつかの異なるシェーダ形式で保存することができます。「HLSL、CgFX、GLSL に書き出す」を参照してください。

シェーダ コードを確認して合理化する:

  1. テキスト エディタを使用してシェーダ ファイルを確認します。「MyColorFunction」で検索します。

    MyColorFunction はシェーダ ファイル内で関数として定義されています。SHADERDATA 構造が入力として一覧表示されます。これが既定の設定です。

  2. この設定を無効にしてコードを簡潔にするには、MyColorFunction のグループ ビューに移動し、グループ ノードを選択して、[プロパティ](Properties)パネルで [DATA 構造を関数入力として追加しない](Don't Add DATA Struct As Function Input)をオンにします。

    シェーダ ファイルを再度保存し、SHADERDATA 構造が入力パラメータとして一覧表示されなくなっていることを確認します。