初めて Render Tree を使用して作業するとき、 ノードの数と、多数のシェーダへの接続方法の数に少し戸惑うかもしれません。
しかし、シェーダをどこに接続し、そのシェーダにどのような機能があるのかを理解すれば、迷うことはありません。まずは、[Material]ノード、[Camera]ノード、[Light]ノードに接続できるものについて説明します。
[Material]ノードは、オブジェクトに適用できるすべてのシェーダのコンテナの役割を果たします。すべてのオブジェクトにはマテリアル ノードがあります。マテリアル ノードがないと、オブジェクトはレンダリングされません。シェーダは、1 つまたは複数のシェーダ入力タイプを呼び出すことにより、オブジェクトを変化させることができます。
入力タイプ(Input Type) |
機能(Function) |
---|---|
サーフェイス |
オブジェクトの基本カラーのほか、反射レイ、屈折レイ、透明度レイの投射を決定します。通常、これらのレイはテクスチャ シェーダを使用してマテリアルをさらに細かく定義します。「Working with Surface Shaders(サーフェイス シェーダを操作する)」を参照してください。 |
ボリューム |
オブジェクトまたはシーン全体を通過するレイを修正します。雲、煙、炎などのエフェクトをシミュレートできます。「Volume(ボリューム)」(「Shader Reference(シェーダ リファレンス)」)を参照してください。 |
環境 |
視線レイがシーンから完全に離れた場合に、サーフェイス シェーダの代用として使用されます。背景や無限遠に何が見えるかを定義します。「Environment(環境)」(「Shader Reference(シェーダ リファレンス)」)を参照してください。 |
輪郭 |
カートゥーン エフェクト シェーダなどのように、オブジェクトのエッジに輪郭エフェクトを追加します。 |
ディスプレイスメント |
オブジェクトのポイントを移動させることによりサーフェイスを変化させます。結果として、バンプは盛り上がって見え、シャドウを投影できるようになります。ディスプレイスメントはレンダリングでのみ表示されます。「ディスプレイスメント マップ」(「テクスチャリング」)を参照してください。 |
シャドウ |
光源から投射された光がオブジェクトに遮られた場合にどのように変化するかを決定します。シャドウ シェーダは、不透明度やカラーなど、オブジェクトのシャドウが投影される方法を定義するために使用されます。 |
フォトン |
グローバル イルミネーションおよびコースティクス エフェクトで使用します。この接続がないと、オブジェクトはフォトンの受け渡しができません。「フォトン エフェクトを制御する」(「間接照明」)を参照してください。 |
フォトン ボリューム |
フォトン エフェクトの量を定義します。 |
バンプマップ |
オブジェクト サーフェイスにバンプ マップを表示する方法と場所を決定します。「Render Tree のバンプマップの作成」(「テクスチャリング」)を参照してください。 |
ライトマップ |
オブジェクト サーフェイスのサンプリングのために使用するライトマップ シェーダからの接続の入力に使用します。 |
RealTime |
リアルタイム シェーダからの接続の入力に使用します。他のすべてのリアルタイム レンダリング オブジェクトの属性は、このポートに接続するリアルタイム シェーダ ツリーで設定、調整します。「Realtime Shaders(リアルタイム シェーダ)」を参照してください。 |
マテリアル |
マテリアル フェノメナからの接続の入力に使用します。マテリアル フェノメナは、単一ノードとしてパッケージングされた、定義済みのシェーダの組み合わせです。高速サブサーフェイス スキャッタリング シェーダはマテリアル フェノメナの例です。 注: フェノメナをこの入力に接続すると、マテリアル ノードのその他すべての入力への接続が無効になります。 |
[Camera]ノードは、カメラ オブジェクトに適用できるすべてのシェーダのコンテナの役割を果たします。どのカメラにも、[Lens Shaders]ポート グループにさまざまなレンズ シェーダを接続できるカメラ ノードがあります。
入力タイプ(Input Type) |
機能(Function) |
---|---|
レンズ シェーダ |
レンズ シェーダからの接続の入力に使用します。レンズ シェーダは、カメラから 1 次レイを投射する際に使用されます。レンズシェーダを使用してレイのオリジンと方向を修正すると、標準ピンホール カメラ以外のカメラを実装できます。また、1 次レイの結果が修正され、レンズ フレアやカートゥーンなどのエフェクトを実装できます。「カメラへレンズ シェーダを適用する」を参照してください。 |
[Light]ノードは、ライト オブジェクトに適用できるすべてのシェーダのコンテナの役割を果たします。どのライトにも、入力ポートにさまざまなライト シェーダを接続できるライト ノードがあります。
入力タイプ(Input Type) |
機能(Function) |
---|---|
ライト シェーダ |
ライト シェーダからの接続の入力に使用します。ライト シェーダは、光源の特性を実装します。たとえば、ライト シェーダはイルミネーションの方向を利用して放出される光の量を調整します。サーフェイス シェーダが組み込み機能を使用してライトを評価するときは、必ずライト シェーダが使用されます。 シャドウが使用されている場合、通常はライト シェーダがシャドウ レイを投射し、光源と光の照射ポイントの間にある暗いオブジェクトを検出します。「Light(ライト)」(「Shader Reference(シェーダ リファレンス)」)を参照してください。 |
ライト フォトン放出シェーダ |
フォトンを放出するライト シェーダからの接続の入力に使用します。オブジェクトのサーフェイス シェーダを使用してフォトン エネルギーを計算するのではなく、このポートに接続してライト カラーをエネルギーとして使用することによって、ライト シェーダに必要な計算を実行させることができます。「ライト シェーダを使用してフォトンを作成する」を参照してください。 |
Render Tree に表示される各ノードは、特定の[シェーダ ファミリ](shader family)のメンバーとして色分けされ、識別できます。シェーダ ファミリは、Render Tree 内でのシェーダの使用方法を示しています。シェーダ ファミリごとに、接続の制限も異なります。たとえば、シェーダがライト ファミリに属している場合は、Render Tree でライト ノードにのみ接続できます。
Render Tree の規模や複雑さが増しても、色分けによりノードの機能を容易に判別できます。ノード カラーによる色分けは以下のとおりです。
マテリアル フェノメナ |
|
サーフェイス マテリアル シェーダおよびシャドウ マテリアル シェーダ |
|
テクスチャ シェーダ |
|
ライトマップ シェーダ |
|
環境シェーダ |
|
リアルタイム シェーダ |
|
ボリューム シェーダ |
|
アウトプット シェーダ |
|
レンズ シェーダ |
|
ライト シェーダおよびフォトン ライト シェーダ |
|
フォトン マテリアル シェーダおよびフォトン ボリューム シェーダ |
|
ジオメトリ シェーダ |
|
輪郭シェーダ |
|
イメージ クリップ シェーダ 標準のイメージ クリップ シェーダは、書き込み可能なイメージ クリップ シェーダと同じカラーですが、出力ポートのカラーが異なるため、特定の機能の違いを識別できます。詳細については、「[Image Clip]プロパティエディタ」および「[Image Source]プロパティエディタ」を参照してください。 |
|
書き込み可能なイメージ クリップ シェーダ 書き込み可能なイメージ クリップ シェーダは、標準のイメージ クリップ シェーダと同じカラーですが、出力ポートのカラーが異なるため、特定の機能の違いを識別できます。詳細については、「[Writable Image Source]プロパティエディタ」を参照してください。 |
各シェーダのポート(パラメータ)はすべて色分けされています。ノードの出力ポートはノードの右側の接続ポイント(色のついた丸印)で示され、入力ポートはノードの左側の接続ポイントで示されます。この丸印の色によって、そのポートに接続できる入力または出力のデータ タイプがわかります。
次の表は、各入力/出力ポートで使用するデータ タイプを示しています。
カラー(Color) |
入力/出力(Input/Output) |
結果(Result) |
---|---|---|
カラー |
RGBA チャンネルを示す 4 つのスカラ値で表されるカラー値。 |
|
スカラ |
小数値として表される実数。たとえば、3.14。 |
|
2D ベクトル |
スカラ値で表される 2 次元ベクトル[x, y]。たとえば、UV 座標。 |
|
3D ベクトル |
スカラ値で表される 3 次元ベクトル[x, y, z]。たとえば、サーフェイス法線。 |
|
4D ベクトル |
スカラ値で表される 4 次元ベクトル[w, x, y, z]。 |
|
ブール |
ブール値。True または False。 |
|
整数値 |
小数部分のない正または負の数値。たとえば、7、–2、0。 |
|
イメージ |
テクスチャ/イメージ クリップのデータの入出力に使用します。 詳細については、「[Image Clip]プロパティエディタ」および「[Image Source]プロパティエディタ」を参照してください。 |
|
イメージ |
書き込み可能なテクスチャ/イメージ クリップのデータの入出力に使用します。たとえば、このデータ タイプはライトマップ シェーダ ノード上のライトマップおよびデプスマップの入力ポートに入力されます。書き込み可能なイメージ出力ポートは、標準のイメージ入力ポートにも接続できます。 詳細については、「[Writable Image Source]プロパティエディタ」を参照してください。 |
|
RealTime |
リアルタイム シェーダのデータの入出力に使用します。 |
|
ライトマップ |
ライトマップ シェーダのデータの入出力に使用します。たとえば、このデータ タイプはライトマップ シェーダ ノード上の出力ポートから出力され、[Material]ノードのライト マップの入力ポートに入力されます。 |
|
マテリアル フェノメナ |
マテリアル フェノメナ シェーダの結果の入出力に使用します。 |
|
3x3 マトリクス |
実数で表される 3x3 マトリクス。3x3 マトリクスは多くの場合、回転およびスケーリングを表すために使用します。 |
|
4x4 マトリクス |
実数で表される 4x4 マトリクス。4x4 マトリクスは多くの場合、変換(スケーリング、回転、移動)を表すために使用します。 |
|
クォータニオン |
クォータニオン[x, y, z, w]。クォータニオンは通常、向きを表すために使用します。 |
|
リファレンス |
シーン内のオブジェクト、パラメータ、属性へのリファレンスであり、文字列として表されます。 |
|
文字列 |
文字列。ファイル パスなどの保存に使用します。 |
|
カスタム |
さまざまなデータ タイプの入力に使用します。 |
Render Tree では、各シェーダ ノードにはパラメータがポートとして表示されます。シェーダを接続するには、1 つのノードの出力ポートを別のノードの入力ポートに接続しますが、それぞれのポートはパラメータを表します。
ノードの出力タイプが接続先ポートの入力タイプと一致している限り、その 2 つのノードを接続できます。ノード接続の効果は、出力ノードの値、入力ノードの設定、およびノードを接続する場所によって変わります。Render Tree を使用してシェーダを接続する方法の詳細については、「ノードを接続する」を参照してください。
一部のシェーダ ノードには複数の出力ノードがあります(マルチ出力ノードともいう)。これらのノードにより、Render Tree の効果を大幅に高めることができます。シェーダによって計算された情報は複数のデータ チェンネルに抽出され、各チャンネルは、1 つの出力に統合されるのではなく、(独自のデータ タイプで)別々に使用されるためです。カラーと密度の両方を同時に出力して、ポイント クラウドのボリュームを定義する[Particle Density]シェーダや、テクスチャのカラーとアルファを別々の出力に分割して、Render Tree の別の場所で使用できるようにする[RGBA Split]シェーダなど、マルチ出力ノードはさまざまな機能を果たします。
大量のパラメータがシェーダにあると、パラメータのポートはシェーダの Render Tree のノード内でグループ化されます。これは、指定ノードに追加したテクスチャ レイヤにも当てはまり、各テクスチャ レイヤは固有のポート グループに属します。
ポート グループおよびテクスチャ レイヤの集約および展開の詳細については、「ポート グループとテクスチャ レイヤを集約/展開する」を参照してください。
ノードをグループ内のパラメータに接続する方法の詳細については、「ノードを挿入する」を参照してください。
Render Tree でのテクスチャレイヤの操作については、「Render Tree でテクスチャ レイヤを操作する」を参照してください。
シェーダ ノードの多くは、入力ポートおよびポート グループを Render Tree のシェーダ ノードから直接追加できます。このとき、シェーダのプロパティ エディタを開いてこれらのコントロールにアクセスする必要はありません。ただし、固定値を設定する場合は、他のシェーダで入力値を操作する場合とは異なり、プロパティ エディタを開く必要があります。ワークフローは任意に選択できます。
Render Tree で、レンズ シェーダ スタック、パス シェーダ スタック、テクスチャ レイヤ、レンダ チャンネル(共有シェーダを参照)、およびさまざまな入力値(スイッチシェーダを参照)に対して動的なポートおよびポート グルーブを作成できます。