シェーダー デザイナー ノードとは?

Visual Studio のシェーダー デザイナーでは、視覚的効果はグラフとして表されます。 これらのグラフは、意図した効果を実現するために注意深く選択し接続されたノードから構築されます。 各ノードは特定の情報または数学関数のいずれかを表し、それらの間の接続は結果を生成するためにグラフ内を情報がどのように流れるかを表します。 ノードの種類には、フィルターテクスチャパラメーター定数ユーティリティ、および数学ノードが含まれます。

ノードの構造

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

入力の上位変換

シェーダー デザイナーは効果をゲームまたはアプリで使うことができるように最終的に HLSL ソース コードを生成する必要があるため、シェーダー デザイナーのノードは HLSL が使う型の上位変換ルールの対象になります。 グラフィックス ハードウェアは主に浮動小数点値で動作するため、異なる型の間の上位変換 (例: int から float、または float から double) は一般的ではありません。 代わりに、グラフィックス ハードウェアは複数の情報に対して同じ演算を同時に使用するため、多くの入力の中の短い入力が最長の入力のサイズと一致するように延長されるという異なる種類の上位変換が発生する可能性があります。 延長方法は次のように入力の型および演算自体に依存します。

  • 小さい方の型がスカラー値の場合:

    スカラーの値が、大きい方の入力と同じサイズのベクターにレプリケートされます。 たとえば、演算の最大の入力が 3 要素のベクターである場合は、演算の種類に関係なく、スカラー入力 5.0 はベクター (5.0, 5.0, 5.0) になります。

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

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

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

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

ノードとノードの種類

シェーダー デザイナーには、6 つの異なるノード型 (フィルター、テクスチャ ノード、パラメーター、定数、ユーティリティ ノード、数値演算ノード) と、各型に属する複数の個別ノードが用意されています。

定数ノード

シェーダー デザイナーにおいて、定数ノードは、ピクセル シェーダー計算でのリテラル値および補間された頂点属性を表します。 頂点属性は補間され、したがってピクセルごとに異なるので、各ピクセル シェーダー インスタンスは異なるバージョンの定数を受け取ります。 これにより、各ピクセルに固有の外観が与えられます。

頂点属性の補間

ゲームやアプリの 3D シーンの画像は、頂点、頂点属性、およびプリミティブ定義によって定義されている多くのオブジェクトを画面上のピクセルに数学的に変換することで作成されます。 ピクセルに独自の外観を与えるために必要なすべての情報は、頂点属性によって提供されます。頂点属性は、プリミティブを構成する異なる頂点へのピクセルの近接性に従ってブレンドされます。 プリミティブは、基本的なレンダリング要素です。つまり、点、線、三角形などの単純な図形です。 頂点の 1 つだけに非常に近いピクセルはその頂点とほぼ同じ定数を受け取るのに対し、プリミティブのすべての頂点との間隔が等しいピクセルはそれらの頂点の平均値である定数を受け取ります。 グラフィックス プログラミングでは、ピクセルが受け取る定数は補間されたものです。 この方法でピクセルに定数データを提供すると、画質がよくなるだけでなく、メモリ占有領域と帯域幅の必要量が減少します。

各ピクセル シェーダー インスタンスが受け取る定数値セットはただ 1 つで、それらの値を変更することはできませんが、別のピクセル シェーダー インスタンスは異なる定数データ セットを受け取ります。 このような設計により、シェーダー プログラムはプリミティブの各ピクセルに対して異なる色出力を生成できます。

定数ノード リファレンス

Node 詳細 プロパティ
カメラ ベクター 現在のピクセルからワールド空間のカメラに向かうベクター。

これを使って、ワールド空間内の反射を計算できます。

出力

Output: float3
現在のピクセルからカメラまでのベクター。
なし
カラー定数 定数のカラー値。

出力

Output: float4
カラー値です。
出力
カラー値です。
定数 定数のスカラー値。

出力

Output: float
スカラー値。
出力
スカラー値。
2D 定数 2 成分のベクター定数。

出力

Output: float2
ベクターの値です。
出力
ベクターの値です。
3D 定数 3 成分のベクター定数。

出力

Output: float3
ベクターの値です。
出力
ベクターの値です。
4D 定数 4 成分のベクター定数。

出力

Output: float4
カラー値です。
出力
ベクターの値です。
正規化された位置 正規化されたデバイス座標で表された、現在のピクセルの位置。

x 座標と y 座標の値の範囲は [-1, 1]、z 座標の値の範囲は [0, 1] で、w 成分にはビュー空間でのポイント深度値が含まれます。w は正規化されません。

出力

Output: float4
現在のピクセルの位置。
なし
ポイントの色 現在のピクセルの拡散色。素材の拡散色と頂点の色属性の組み合わせです。

出力

Output: float4
現在のピクセルの拡散色。
なし
ポイントの深度 ビュー空間の現在のピクセルの深度。

出力

Output: float
現在のピクセルの深度。
なし
正規化されたポイントの深度 正規化されたデバイス座標で表された、現在のピクセルの深度。

結果の値の範囲は [0, 1] です。

出力

Output: float
現在のピクセルの深度。
なし
画面の位置 画面座標で表された、現在のピクセルの位置。

画面座標は、現在のビューポートに基づいています。 X および Y 成分には画面座標、Z 成分には範囲 [0, 1] に正規化された深度、W 成分にはビュー空間での深度値が、それぞれ含まれます。

出力

Output: float4
現在のピクセルの位置。
なし
表面法線 オブジェクト空間での現在のピクセルの表面法線。

これを使用して、オブジェクト空間における光源の効果や反射を計算できます。

出力

Output: float3
現在のピクセルの表面法線。
なし
接空間カメラ ベクター 現在のピクセルから接空間のカメラに向かうベクター。

これを使って、接空間内の反射を計算できます。

出力

Output: float3
現在のピクセルからカメラまでのベクター。
なし
接空間の光の方向 現在のピクセルの接空間で光源から光を当てる方向を定義するベクター。

このパラメーターを使用して、接空間における光源や反射の効果を計算できます。

出力:

Output: float3
現在のピクセルから光源までのベクター。
なし
ワールド法線 ワールド空間での現在のピクセルの表面法線。

これを使用して、ワールド空間における光源の効果や反射を計算できます。

出力

Output: float3
現在のピクセルの表面法線。
なし
ワールド位置 ワールド空間における現在のピクセルの位置です。

出力

Output: float4
現在のピクセルの位置。
なし

パラメーター ノード

シェーダー デザイナーで、パラメーター ノードは、素材のプロパティ、指向性ライト、カメラの位置、時刻など、描画ごとのベースのアプリで制御されるシェーダーへの入力を表します。 各描画呼び出しでこれらのパラメーターを変更できるため、同じシェーダーを使用してオブジェクトに異なる外観を与えることができます。

パラメーター ノードの参照

Node 詳細 プロパティ
カメラのワールド位置 ワールド空間におけるカメラの位置です。

出力:

Output: float4
カメラの位置。
なし
光の方向 ワールド空間で光源から光を当てる方向を定義するベクターです。

このパラメーターを使用して、ワールド空間における光源や反射の効果を計算できます。

出力:

Output: float3
現在のピクセルから光源までのベクター。
なし
素材: アンビエント 間接光に基づく、現在のピクセルによる拡散色の効果です。

ピクセルによる拡散色は、光源と粗いサーフェイスとの相互作用をシミュレートします。 [素材: アンビエント] パラメーターを使用して、実際のオブジェクトの外観に対する間接光のおおよその効果を確認できます。

出力:

Output: float4
間接光 (環境光) による、現在のピクセルの拡散色です。
Access (アクセス)
このプロパティをモデル エディターから設定できるようにする場合は Public、それ以外の場合は Private です。

Value
間接光 (環境光) による、現在のピクセルの拡散色です。
素材: 拡散 現在のピクセルによる直接光の拡散を示す色。

ピクセルによる拡散色は、光源と粗いサーフェイスとの相互作用をシミュレートします。 [素材: 拡散] パラメーターを使用し、現在のピクセルが直接光 (指向性ライト、ポイント ライト、スポット ライト) を拡散する方法を変更できます。

出力:

Output: float4
現在のピクセルによる直接光の拡散を示す色。
Access (アクセス)
このプロパティをモデル エディターから設定できるようにする場合は Public、それ以外の場合は Private です。

Value
現在のピクセルによる直接光の拡散を示す色。
素材: 放射 それ自体に放たれる光に基づく、現在のピクセルによる色の効果です。

このパラメーターを使用して、オブジェクトの光彩 (そのオブジェクト自体が放つ光) をシミュレートできます。 この光源は他のオブジェクトには影響しません。

出力:

Output: float4
オブジェクト自体から放射される光による、現在のピクセルの色の効果です。
Access (アクセス)
このプロパティをモデル エディターから設定できるようにする場合は Public、それ以外の場合は Private です。

Value
オブジェクト自体から放射される光による、現在のピクセルの色の効果です。
素材: 鏡面 現在のピクセルによる直接光の反射を示す色。

ピクセルによる反射色は、鏡面のような滑らかなサーフェイスと光源との相互作用をシミュレートします。 [素材: 鏡面] パラメーターを使用し、現在のピクセルが直接光 (指向性ライト、ポイント ライト、スポット ライト) を反射する方法を変更できます。

出力:

Output: float4
現在のピクセルによる直接光の反射を示す色。
Access (アクセス)
このプロパティをモデル エディターから設定できるようにする場合は Public、それ以外の場合は Private です。

Value
現在のピクセルによる直接光の反射を示す色。
素材: 反射の度合い 反射の光源の輝度を示すスカラー値です。

反射の度合いが大きいほど、反射の光源は強く遠くまで届くようになります。

出力:

Output: float
現在のピクセルに対する反射の光源の輝度を示す指数項。
Access (アクセス)
このプロパティをモデル エディターから設定できるようにする場合は Public、それ以外の場合は Private です。

Value
現在のピクセルに対する反射の光源の輝度を定義する指数です。
正規化された時間 1 秒になると 0 秒にリセットされるように [0, 1] の範囲に正規化された時間 (秒) です。

この値をシェーダーの計算でパラメーターとして使用して、テクスチャ座標やカラー値などの属性のアニメーションを実行できます。

出力:

Output: float
正規化された時間 (秒)。
なし
Time 時間 (秒単位)。

この値をシェーダーの計算でパラメーターとして使用して、テクスチャ座標やカラー値などの属性のアニメーションを実行できます。

出力:

Output: float
時間 (秒単位)。
なし

テクスチャ ノード

シェーダー デザイナーのテクスチャ ノードでは、さまざまなテクスチャの種類とジオメトリのサンプルが提供され、テクスチャ座標を生成または変換します。 テクスチャは、オブジェクトの色と光の詳細を提供します。

テクスチャ ノード リファレンス

Node 詳細 プロパティ
キューブ マップのサンプル 指定した座標で、キューブ マップから色のサンプルを取得します。

キューブ マップを使用すると、反射の効果に対して色の詳細を指定したり、2D テクスチャよりもゆがみの少ないテクスチャを球形オブジェクトに適用したりできます。

入力:

UVW: float3
テクスチャ キューブ上の、サンプルを取得する位置を指定するベクター。 サンプルは、このベクターとキューブが交差する位置から取得されます。

出力:

Output: float4
色のサンプル。
テクスチャ
サンプラーに関連付けられているテクスチャ レジスタ。
法線マップのサンプル 指定した座標で、2D 法線マップから法線のサンプルを取得します

法線マップを使用すると、オブジェクトの表面で、追加のジオメトリ詳細の外観をシミュレートできます。 法線マップには、色データではなく、単位ベクターを表すデータがパックされています

入力:

UV: float2
サンプルを取得する位置の座標。

出力:

Output: float3
法線のサンプル。
軸の調整
法線マップ サンプルの使いやすさを調整するために使用される係数。

テクスチャ
サンプラーに関連付けられているテクスチャ レジスタ。
UV のパン 指定したテクスチャ座標を時間関数としてパンします。

これを使用して、オブジェクトの表面上でテクスチャまたは法線マップを移動できます。

入力:

UV: float2
パンする座標。

Time: float
パンする時間の長さ (秒)。

出力:

Output: float2
パンされた座標。
速度 X
X 軸方向のパンの 1 秒あたりのテクセル数です。

速度 Y
Y 軸方向のパンの 1 秒あたりのテクセル数です。
UV の視差効果 指定したテクスチャ座標を、高さと視野角の関数として変位させます。

これによって生成される効果のことを、視差マッピングまたは仮想変位マッピングと呼びます。 これを使用して、フラットな面に奥行があるように見せることができます。

入力:

UV: float2
変位させる座標。

Height: float
UV 座標と関連付けられている高さマップの値。

出力:

Output: float2
変位させられた座標。
深度平面
視差効果の参照の深度。 既定では、値は 0.5 です。 これよりも値が小さいとテクスチャが浮き上がり、大きいと表面に沈み込みます。

深度スケール
視差効果のスケール。 これにより、視差効果の強度が調整されます。 典型的な値は 0.02 から 0.1 です。
UV の回転 指定したテクスチャ座標を、中心点を基準に時間関数として回転させます。

これを使用して、オブジェクトの表面上でテクスチャまたは法線マップを回転させることができます。

入力:

UV: float2
回転させる座標。

Time: float
パンする時間の長さ (秒)。

出力:

Output: float2
回転させられた座標。
X 中心
回転の中心を定義する X 座標です。

Y 中心
回転の中心を定義する Y 座標です。

速度
テクスチャが回転する 1 秒あたりの角度 (ラジアン) です。
テクスチャ座標 現在のピクセルのテクスチャ座標。

テクスチャ座標は、隣接する頂点間のテクスチャ座標の属性を補間することで求められます。 これはテクスチャ空間における現在のピクセルの位置と見なすことができます。

出力:

Output: float2
テクスチャ座標。
なし
テクスチャの大きさ 2D テクスチャ マップの幅と高さを出力します。

テクスチャの大きさを使用して、シェーダー内のテクスチャの幅と高さを検討することができます。

出力:

Output: float2
ベクターとして表される、テクスチャの幅と高さ。 幅は、ベクターの最初の要素に格納されます。 高さは、2 番目の要素に格納されます。
テクスチャ
テクスチャの大きさに関連付けられているテクスチャ レジスタ。
テクセル デルタ 2D テクスチャ マップのテクセル間のデルタ (間隔) を出力します。

テクセル デルタを使用して、シェーダー内の隣接するテクセル値をサンプリングすることができます。

出力:

Output: float2
正規化されたテクスチャ空間でのベクターとして表した、あるテクセルから次のテクセルまで (正の方向に斜めに移動) のデルタ (間隔)。 デルタの U 座標または V 座標を選択的に無視または否定することで、隣接するすべてのテクセルの位置を導出できます。
テクスチャ
テクセル デルタに関連付けられているテクスチャ レジスタ。
テクスチャ サンプル 指定した座標で、2D テクスチャ マップから色のサンプルを取得します。

テクスチャ マップでは、オブジェクトの表面に適用される色の詳細を指定できます。

入力:

UV: float2
サンプルを取得する位置の座標。

出力:

Output: float4
色のサンプル。
テクスチャ
サンプラーに関連付けられているテクスチャ レジスタ。

数値演算ノード

シェーダー デザイナーでは、代数演算、論理演算、三角関数演算などの数値演算が演算ノードによって実行されます。

注意

シェーダー デザイナーで演算ノードを使用する際には、型の上位変換が特に顕著に見られます。 型の上位変換がどのように入力パラメーターに影響するかの詳細については、「入力の上位変換」セクションを参照してください。

数値演算ノードの参照

Node 詳細 プロパティ
Abs 指定された入力の要素ごとの絶対値を計算します。

入力 X の要素ごとに、結果のすべての要素が正の値になるように負の値が正の値に変換されます。

入力:

X: floatfloat2float3、または float4
絶対値を決定する値。

Output:

Output: 入力 X と同じ
要素ごとの絶対値。
なし
追加 指定された入力の要素ごとの合計を計算します。

結果の要素ごとに、入力 X と入力 Y の対応する要素が合計されます。

入力:

X: floatfloat2float3、または float4
合計する値のいずれか。

Y: 入力 X と同じ
合計する値のいずれか。

出力:

Output: 入力 X と同じ
要素ごとの合計。
なし
Ceil 指定された入力の要素ごとの切り上げを計算します。

各値は、その値以上の最も近い整数に切り上げられます。

入力:

X: floatfloat2float3、または float4
切り上げを計算する値。

出力:

Output: 入力 X と同じ
要素ごとの切り上げ。
なし
Clamp 指定された入力の各要素を定義済みの範囲にクランプします。

結果の要素ごとに、定義済みの範囲に満たない値が範囲内の最小値に変更され、定義済みの範囲を超える値が範囲内の最大値に変更されます。範囲内の値は変更されません。

入力:

X: floatfloat2float3、または float4
クランプする値。

出力:

Output: 入力 X と同じ
要素ごとのクランプされた値。
Max (最大値)
範囲内の最大有効値。

Min (最小値)
範囲内の最小有効値。
Cos 指定された入力の要素ごとのコサイン (ラジアン) を計算します。

結果の要素ごとに、対応する要素のコサイン (ラジアン) が計算されます。 結果の要素の値の範囲は [-1, 1] です。

入力:

X: floatfloat2float3、または float4
コサイン (ラジアン) を計算する値。

出力:

Output: 入力 X と同じ
要素ごとのコサイン。
なし
Cross 指定された 3 要素のベクターのクロス積を計算します。

クロス積を使用して、2 つのベクターで定義される表面の法線を計算できます。

入力:

X: float3
クロス積の左側のベクター。

Y: float3
クロス積の右側のベクター。

出力:

Output: float3
クロス積。
なし
距離 指定したポイント間の距離を計算します。

正のスカラー値が返されます。

入力:

X: floatfloat2float3、または float4
相互間の距離を特定するポイントのいずれか。

Y: 入力 X と同じ
相互間の距離を特定するポイントのいずれか。

出力:

Output: 入力 X と同じ
距離。
なし
除算 指定された入力の要素ごとの商を計算します。

結果の要素ごとに、入力 X の対応する要素が入力 Y の対応する要素で除算されます。

入力:

X: floatfloat2float3、または float4
除算される値。

Y: 入力 X と同じ
除数の値。

出力:

Output: 入力 X と同じ
要素ごとの商。
なし
ドット 指定されたベクターのドット積を計算します。

スカラー値が返されます。 ドット積を使用して、2 つのベクター間の角度を特定できます。

入力:

X: floatfloat2float3、または float4
項のいずれか。

Y: 入力 X と同じ
項のいずれか。

出力:

Output: float
ドット積。
なし
Floor 指定された入力の要素ごとの切り下げを計算します。

結果の要素ごとに、入力の対応する要素以下の最も近い整数に値が切り下げられます。 結果のすべての要素が整数になります。

入力:

X: floatfloat2float3、または float4
切り下げを計算する値。

出力:

Output: 入力 X と同じ
要素ごとの切り下げ。
なし
Fmod 指定された入力の要素ごとの剰余を計算します。

結果の要素ごとに、入力 Y の対応する要素の整数倍の値 m が入力 X の対応する要素から除算され、その剰余が返されます。 倍数 m には、剰余が入力 Y の対応する要素より小さくなり、符号が入力 X の対応する要素と同じになる値が選択されます。 たとえば、fmod(-3.14, 1.5) は -0.14 を返します。

入力:

X: floatfloat2float3、または float4
除算される値。

Y: 入力 X と同じ
除数の値。

出力:

Output: 入力 X と同じ
要素ごとの剰余。
なし
Frac 指定された入力の要素ごとの整数部分を削除します。

結果の要素ごとに、入力の対応する要素の整数部分が削除されます。小数部分と符号は変更されません。 この小数値の範囲は [0, 1) です。 たとえば、値 -3.14 は値 -0.14 になります。

入力:

X: floatfloat2float3、または float4
小数部分を計算する値。

出力:

Output: 入力 X と同じ
要素ごとの小数部分。
なし
Lerp 線形補間。 指定された入力の要素ごとの加重平均を計算します。

結果の要素ごとの、入力 X と入力 Y の対応する要素の加重平均。 重みは Percent (スカラー) で指定され、すべての要素に均一に適用されます。 この演算を使用して、ポイント、色、属性などの値を補間できます。

入力:

X: floatfloat2float3、または float4
開始値。 Percent がゼロの場合、結果は入力と同じです。

Y: 入力 X と同じ
終了値。 Percent が 1 の場合、結果は入力と同じです。

Percent: float
入力 X から入力 Y までの距離に対する割合として表されるスカラーの重み。

出力:

Output: 入力 X と同じ
指定された入力に対して共線的である値。
なし
Multiply Add 指定された入力の要素ごとの積和演算を実行します。

結果の要素ごとに、入力 M と入力 A の対応する要素の積が、入力 B の対応する要素に加算されます。 この演算は、直線のポイントとスロープの数式や、スケールの後にバイアスを適用する数式など、一般的な数式で使用されます。

入力:

M: floatfloat2float3、または float4
積和演算する値のいずれか。

A: 入力 M と同じ
積和演算する値のいずれか。

B: 入力 M と同じ
他の 2 つの入力の積に加算する値。

出力:

Output: 入力 M と同じ
要素ごとの積和演算の結果。
なし
Max (最大値) 指定された入力の要素ごとの最大値を計算します。

結果の要素ごとに、入力の対応する要素の大きい方の値が取得されます。

入力:

X: floatfloat2float3、または float4
最大値を計算する値のいずれか。

Y: 入力 X と同じ
最大値を計算する値のいずれか。

出力:

Output: 入力 X と同じ
要素ごとの最大値。
なし
Min (最小値) 指定された入力の要素ごとの最小値を計算します。

結果の要素ごとに、入力の対応する要素の小さい方の値が取得されます。

入力:

X: floatfloat2float3、または float4
最小値を計算する値のいずれか。

Y: 入力 X と同じ
最小値を計算する値のいずれか。

出力:

Output: 入力 X と同じ
要素ごとの最小値。
なし
Multiply 指定された入力の要素ごとの積を計算します。

結果の要素ごとに、入力 X と入力 Y の対応する要素が乗算されます。

入力:

X: floatfloat2float3、または float4
積和演算する値のいずれか。

Y: 入力 X と同じ
積和演算する値のいずれか。

出力:

Output: 入力 X と同じ
要素ごとの積。
なし
Normalize 指定されたベクターを正規化します。

正規化されたベクターは、元のベクターの向きを保持しますが、大きさは保持しません。 正規化されたベクターを使用すると、ベクターの大きさが重要でない場合の計算を簡単にできます。

入力:

X: float2float3、または float4
正規化するベクトル。

出力:

Output: 入力 X と同じ
正規化後のベクトル。
なし
One Minus 1 と指定された入力の差を要素ごとに計算します。

結果の要素ごとに、入力の対応する要素が 1 から減算されます。

入力:

X: floatfloat2float3、または float4
1 から減算される値。

出力:

Output: 入力 X と同じ
1 と指定された入力との、要素ごとの差。
なし
電源 指定された入力の要素ごとの指数演算 (累乗近似) を実行します。

結果の要素ごとに、入力 X の対応する要素が入力 Y の対応する要素で累乗されます。

入力:

X: floatfloat2float3、または float4
底の値。

Y: 入力 X と同じ
指数の値。

出力:

Output: 入力 X と同じ
要素ごとの指数演算。
なし
Saturate 指定された入力の各要素を [0, 1] の範囲にクランプします。

この範囲は、パーセンテージなどの相対単位を表すために計算で使用できます。 結果の要素ごとに、入力の対応する要素の 0 未満の値が 0 に変更され、1 を超える値が 1 に変更されます。範囲内の値は変更されません。

入力:

X: floatfloat2float3、または float4
飽和させる値。

出力:

Output: 入力 X と同じ
要素ごとの飽和させられた値。
なし
Sin 指定された入力の要素ごとのサイン (ラジアン) を計算します。

結果の要素ごとに、対応する要素のサイン (ラジアン) が計算されます。 結果の要素の値の範囲は、[-1, 1] です。

入力:

X: floatfloat2float3、または float4
サイン (ラジアン) を計算する値。

出力:

Output: 入力 X と同じ
要素ごとのサイン。
なし
Sqrt 指定された入力の要素ごとの平方根を計算します。

結果の要素ごとに、対応する要素の平方根が計算されます。

入力:

X: floatfloat2float3、または float4
平方根を計算する値。

出力:

Output: 入力 X と同じ
要素ごとの平方根。
なし
Subtract 指定された入力の要素ごとの差を計算します。

結果の要素ごとに、入力 Y の対応する要素が入力 X の対応する要素から減算されます。 この演算を使用して、1 つ目の入力から 2 つ目の入力までのベクターを計算できます。

入力:

X: floatfloat2float3、または float4
減算元の値。

Y: 入力 X と同じ
入力 X から減算する値。

出力:

Output: 入力 X と同じ
要素ごとの差。
なし
Transform 3D Vector 指定された 3D ベクターを別の空間に変換します。

この演算を使用すると、ポイントまたはベクターを共通の空間に移して、重要な計算の実行に使用することができます。

入力:

Vector: float3
変換するベクトル。

出力:

Output: float3
変換されたベクトル。
システムから
ベクターのネイティブ空間です。

システムへ
ベクターを変換する空間です。

ユーティリティ ノード

シェーダー デザイナーのユーティリティ ノードは、その他のカテゴリにはぴったり当てはまらないような、一般的で役に立つシェーダー計算を表します。 ユーティリティ ノードには、ベクターをまとめて追加したり、条件付きで結果を選択したりするといった単純な操作を実行するものや、一般的な光源モデルに従った光源の効果の計算など、複雑な処理を実行するものがあります。

ユーティリティ ノード リファレンス

Node 詳細 プロパティ
ベクターの追加 指定された入力をまとめて追加することによって、ベクターを作成します。

入力:

Vector: floatfloat2、または float3
追加する値。

Value to Append: float
追加する値。

出力:

Output: 入力 Vector の種類に応じて、float2float3、またはfloat4
新しいベクター。
なし
フレネル 指定された表面法線に基づいたフレネルの減衰を計算します。

フレネルの減衰の値は、現在のピクセルの表面法線がビューのベクターと一致する度合いを表します。 この関数の結果は、ベクターが一直線になる場合に 0 になります。ベクターの差異が大きくなるほど結果が大きくなり、ベクターが直交すると最大になります。 これを使用して、現在のピクセルとカメラの向きの関係に基づいて効果の強度を調整できます。

入力:

Surface Normal: float3
現在のピクセルの接空間で定義される、現在のピクセルの表面法線。 通常のマップと同様に、外見上の表面法線を摂動する際にこれを使用できます。

出力:

Output: float
現在のピクセルの反射率。
指数
フレネルの減衰の計算に使用される指数。
If 成分ごとに、可能性がある 3 つの結果のうちのいずれかを条件付きで選択します。 この条件は、指定された他の 2 つの入力間の関係によって定義されます。

結果の成分ごとに、最初の 2 つの入力の対応する成分間の関係に基づいて、可能性がある 3 つの結果のうちのいずれかの対応する成分が選択されます。

入力:

X: floatfloat2float3、または float4
比較する左側の値。

Y: 入力 X と同じ型
比較する右側の値。

X > Y: 入力 X と同じ型
XY より大きい場合に選択される値。

X = Y: 入力 X と同じ型
XY と等しい場合に選択される値。

X < Y: 入力 X と同じ型
XY より小さい場合に選択される値。

出力:

Output: float3
成分ごとに選択される結果。
なし
ランバート 指定された表面法線を使用することによって、ランバート光源モデルに応じた現在のピクセルの色を計算します。

この色は、直接光におけるアンビエント色と拡散光の効果の合計です。 アンビエント色は、間接光の効果の合計を概算したものですが、他の光源がないとフラットで曇ったような効果になります。 拡散光を使用すると、オブジェクトに形状や奥行を追加できます。

入力:

Surface Normal: float3
現在のピクセルの接空間で定義される、現在のピクセルの表面法線。 通常のマップと同様に、外見上の表面法線を摂動する際にこれを使用できます。

Diffuse Color: float3
現在のピクセルの拡散色で、通常はポイントの色。 入力が指定されない場合の既定値は白です。

出力:

Output: float3
現在のピクセルの拡散色。
なし
ベクターのマスク 指定されたベクターの成分をマスクします。

これを使用すると、カラー値から特定のカラー チャネルを削除したり、特定の成分がその後の計算に影響を与えないようにしたりすることができます。

入力:

Vector: float4
マスクするベクター。

出力:

Output: float4
マスクされるベクター。
赤 / X
赤 (x) 成分をマスクアウトする場合は False、それ以外の場合は True です。

緑 / Y
緑 (y) 成分をマスクアウトする場合は False、それ以外の場合は True です。

青 / Z
青 (z) 成分をマスクアウトする場合は False、それ以外の場合は True です。

アルファ / W
アルファ (w) 成分をマスクアウトする場合は False、それ以外の場合は True です。
反射ベクター カメラの位置に基づいて、接空間における現在のピクセルの反射ベクターを計算します。

反射、キューブ マップ座標、および反射光の効果を計算するために使用します

入力:

Tangent Space Surface Normal: float3
現在のピクセルの接空間で定義される、現在のピクセルの表面法線。 通常のマップと同様に、外見上の表面法線を摂動する際にこれを使用できます。

出力:

Output: float3
反射ベクター。
なし
反射 指定された表面法線を使用することによって、フォン光源モデルに応じた反射光の効果を計算します。

反射光を使用すると、水、プラスチック、金属などの光沢や反射を、オブジェクトに与えられます。

入力:

Surface Normal: float3
現在のピクセルの接空間で定義される、現在のピクセルの表面法線。 通常のマップと同様に、外見上の表面法線を摂動する際にこれを使用できます。

出力:

Output: float3
反射の光源の色の効果。
なし

フィルター ノード

Shader Designer では、フィルター ノードは入力 (色やテクスチャのサンプルなど) を比喩色値に変換します。 この比喩色値は、一般的に非写実的なレンダリングや、他の視覚効果のコンポーネントとして使用されます。

フィルター ノードの参照

Node 詳細 プロパティ
ぼかし ガウス関数を使用して、テクスチャのピクセルをぼかします。

テクスチャ内の色の詳細やノイズを軽減するために使用できます。

入力:

UV: float2
テストするテクセルの座標。

出力:

Output: float4
ぼかした色の値。
テクスチャ
ぼかし適用時に使用されるサンプラーに関連付けられているテクスチャ レジスターです。
再度を下げる 指定した色の色の量を減らします。

色を削除すると、色の値はグレースケール相当に近づきます。

入力:

RGB: float3
彩度を下げる色。

Percent: float
削除する色の割合。範囲 [0, 1] の正規化された値として表現されます。

出力:

Output: float3
再度が下げられた色。
輝度
赤、緑、青の色要素に対する重みです。
境界の検出 キャニー境界検出を使用して、テクスチャの境界を検出します。 境界のピクセルは白で出力されます。境界以外のピクセルは黒で出力されます。

テクスチャの境界を識別し、境界のピクセルを扱う他の効果を適用するために使用できます。

入力:

UV: float2
テストするテクセルの座標。

出力:

Output: float4
境界にテクセルがある場合は白、それ以外の場合は黒です。
テクスチャ
境界検出で使用されるサンプラーに関連付けられているテクスチャ レジスターです。
シャープにする テクスチャをシャープにします。

テクスチャの詳細を強調表示するために使用できます。

入力:

UV: float2
テストするテクセルの座標。

出力:

Output: float4
ぼかした色の値。
テクスチャ
シャープにするときに使用されるサンプラーに関連付けられているテクスチャ レジスターです。

次のステップ

詳細については、「Visual Studio のシェーダー デザイナーを使用したシェーダーの作成」を参照してください。