シェーダー デザイナー ノード

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

ドキュメントのこのセクションのトピックでは、グラフィックスの効果を作成するために使用できるさまざまなシェーダー デザイナーのノードの詳細について説明します。

ノードとノードの種類

シェーダー デザイナーは、グラフ形式で視覚効果を表現します。 これらのグラフは、的確な方法で特別に選択して接続されたノードでビルドされ、目的の効果を実現します。 各ノードは、情報または数値関数のいずれかと、情報がグラフ内を移動して結果を生成する方法を表すノード間の接続を表します。 シェーダー デザイナーには、フィルター ノード、テクスチャ ノード、パラメーター ノード、定数ノード、ユーティリティ ノード、数値ノードの 6 種類のノードと、各種類に属する個別のノードがいつくかあります。 これらのノードとノードの種類については、このセクションのその他のトピックで説明します。このドキュメントの末尾にあるリンクを参照してください。

ノードの構造

すべてのノードは、共通の要素の組み合わせで構成されています。 シェーダーの出力を表す最終的な色のノードを除き、各ノードには、少なくとも 1 つの出力ターミナルがノードの右側にあります。 計算またはテクスチャ サンプルを表すノードにはノードの左側に入力ターミナルがありますが、情報を表すノードに入力ターミナルはありません。 出力ターミナルは入力ターミナルと接続され、ノード間で情報をやり取りします。

入力の上位変換

シェーダー デザイナーは効果がゲームまたはアプリで使用できるように最終的に HLSL ソース コードを生成する必要があるため、シェーダー デザイナーのノードは HLSL が使用する型の上位変換規則の対象になります。 グラフィックス ハードウェアは主に浮動小数点の値で機能するため、int から floatfloat から double など、異なる型の間での型の上位変換はまれです。 代わりに、グラフィックス ハードウェアは複数の情報に対して一度に同一の処理を行うため、複数の短小な入力が延長されて最長の入力サイズとつりあったときに、種類の異なる上位変換が発生する可能性があります。 延長方法は、入力の種類と演算そのものによって異なります。

  • 小さい種類がスカラー値である場合:

    スカラー値は、大きい入力とサイズが等しいベクターにレプリケートされます。 たとえば、演算の最大入力が 3 つの要素のベクターである場合、演算の内容にかかわらずスカラー入力 5.0 がベクター (5.0、5.0、5.0) になります。

  • 小さい型がベクターであり、演算が乗算 (*、\/、% など) である場合:

    ベクター値は大きい入力とサイズが等しいベクターの先頭の要素にコピーされ、末尾の要素は 1.0 に設定されます。 たとえば 4 つの要素のベクターで乗算した場合、ベクター入力 (5.0、5.0) はベクター (5.0、5.0、1.0、1.0) になります。 これによって、乗法単位元 1.0 を使用し、出力の 3 番目と 4 番目の要素が保持されます。

  • 小さい型がベクターであり、演算が加算 (+、- など) である場合:

    ベクター値は大きい入力とサイズが等しいベクターの先頭の要素にコピーされ、末尾の要素は 0.0 に設定されます。 たとえば 4 つの要素のベクターに加算された場合、ベクター入力 (5.0、5.0) はベクター (5.0、5.0、0.0、0.0) になります。 これによって、加法単位元 0.0 を使用し、出力の 3 番目と 4 番目の要素が保持されます。

関連トピック

タイトル 説明
定数ノード シェーダーの計算でリテラル値と補間済み頂点の状態の情報を表現するときに使用できるノードについて説明します。 頂点の状態は補間されているためピクセルごとに異なり、各ピクセル シェーダーのインスタンスはバージョンが異なる定数を受け取ります。
パラメーター ノード カメラの位置、素材プロパティ、光源パラメーター、時刻、およびその他のアプリ状態の情報をシェーダー計算で表現するときに使用できるノードについて説明します。
テクスチャ ノード さまざまな種類のテクスチャおよびジオメトリをサンプリングしたり、一般的な方法でテクスチャ座標を生成または変換するときに使用できるノードについて説明します。
数値演算ノード HLSL 命令に直接マップする、代数演算、論理演算、三角関数演算、およびその他の数値演算を実行するときに使用できるノードについて説明します。
ユーティリティ ノード HLSL 命令に直接マップしない、一般的な光源の計算およびその他の一般的な演算を実行するときに使用できるノードについて説明します。
フィルター ノード テクスチャのフィルター処理と色のフィルター処理を実行するときに使用できるノードについて説明します。