このセクションでは、シェーダ コンパウンドを作成する方法について簡単に説明します。これは、ICE コンパウンドの作成手順に非常によく似ています。
ICEコンパウンドの詳細については、「ICE コンパウンドを構築する」を参照してください。
Render Treeで、コンパウンド内に格納するシェーダノードをすべて選択します。
コンパウンドに汎用性を持たせるために、[Material]ノードは使用せず、すべてのオブジェクトのマテリアルノードに適用できるようにします。
Render Treeのツールバーで、[Compounds] [Create Shader Compound]を選択します。
選択したシェーダノードがビューから消え、[ShaderCompound]という名前の汎用コンパウンドが残ります。この中に、今消えたすべてのシェーダが含まれています。
編集するには、新しいコンパウンドの左上にある小さな[e]をクリックします。コンパウンドが開き、このコンパウンドのポートの外部公開を開始できます。
ここで、シェーダの個別のポートを公開して、それらのパラメータだけを編集可能にできます。
左側の灰色の帯状の部分(バー)には、コンパウンドのシェーダポートを公開する場所が示されます。ポートを公開する前に、コンパウンド内で他のユーザが変更できる部分や接続できる部分について決めておく必要があります。
公開されたポートを示すバーの一番上にある矢印をクリックすると、公開された入力パラメータのリストを展開したり折りたたんだりできます。リストが集約されている場合、マウス ポインタを接続に重ねるとポートの名前が表示されます。
公開されたポートを示すバーにポートを含めるには、このバーの一番上にある黒い丸(外部公開入力)をクリックして、公開するノードのポートにドラッグします。すると、そのポートは帯状の部分に表示されます。公開するすべてのポートについてこれを行います。
この外部公開されたポートの名前は変更することができます。変更する場合は、ポートを右クリックして[プロパティ](Properties)を選択し、[外部に公開されたポートのプロパティ](Exposed Port Properties)エディタを開きます。次に新しい名前を入力します。詳細については、この後の「外部に公開されたポートのプロパティを編集する」を参照してください。
ここの外部公開されたポートをダブルクリックするか、右クリックして[名前の変更](Rename)を選択した場合は、スクリプト名のみが設定され、表示名は設定されません。
一番右のシェーダ(他のすべてのシェーダがこれに接続されている)の出力ポートを、右側にある灰色の公開された出力バー上の黒丸にドラッグして、出力ポートを作成します。
公開された出力を示すバーの一番上にある矢印をクリックすると、公開された出力ポートのリストを展開したり折りたたんだりできます。リストが集約されている場合、マウス ポインタを接続に重ねるとポートの名前が表示されます。
公開された出力ポートの名前は、公開された入力ポートの場合と同じ方法で変更できます。
コンパウンド編集画面の一番上にあるバーで、[ShaderCompound]と書かれた部分をダブルクリックし、コンパウンドに[クラス](class)名を付けます(この例では「Bonfire」)。
クラス名は、コンパウンドプロパティ、Preset Managerのスクリプト、Shader Version Managerの[クラス名]列で使用されます(書き出した後)。
[カテゴリ]についても同様のことを行います。ここに指定したカテゴリで、Preset Managerのグループに表示されます。「Particle」などのカテゴリを指定します。カテゴリ名を入力しない場合は、コンパウンドは[シェーダコンパウンド]カテゴリ内に表示されます。
この場合は、コンパウンドにコメントを追加して、どのように動作するのかについて説明を記入します。「Render Tree にコメントを追加する」を参照してください。
コンパウンド内部で指定した名前と同じになるように、シェーダ コンパウンド ノードの名前を変更することができます。コンパウンドノードをダブルクリックして、新しい名前を入力します。
Render Tree ツールバーの[Compounds] [Export Shader Compound]を選択し、他のユーザが使用できるようにコンパウンドを書き出します。詳細については、コンパウンドを書き出すを参照してください。
シェーダ コンパウンドの外部に公開されたポートのプロパティを編集する
外部公開されたポートの名前を定義することができます。また、Render Tree のコンパウンドのノードおよびコンパウンドのプロパティ エディタでのポートの表示方法も定義できます。