シェーダー デザイナー ノードShader Designer Nodes

ドキュメントのこのセクションの記事には、グラフィックス効果を作成するために使うことができるさまざまなシェーダー デザイナー ノードについての情報が含まれています。The articles in this section of the documentation contain information about the various Shader Designer nodes that you can use to create graphics effects.

ノードとノードの種類Nodes and node types

シェーダー デザイナーでは、視覚的効果はグラフとして表されます。The Shader Designer represents visual effects as a graph. これらのグラフは、意図した影響を実現するために明示的に選ばれて正確な方法で接続されたノードから構築されます。These graphs are built from nodes that are specifically chosen and connected in precise ways to achieve the intended affect. 各ノードは特定の情報または数学関数のいずれかを表し、それらの間の接続は結果を生成するためにグラフ内を情報がどのように流れるかを表します。Each node represents either a piece of information or a mathematical function, and the connections between them represent how the information flows through the graph to produce the result. シェーダー デザイナーには、6 つの異なるノード型 (フィルター、テクスチャ ノード、パラメーター、定数、ユーティリティ ノード、数値演算ノード) と、各型に属する複数の個別ノードが用意されています。The Shader Designer provides six different node types—filters, texture nodes, parameters, constants, utility nodes, and math nodes—and several individual nodes belong to each type. これらのノードとノード型についてはこのセクションの他の記事で説明されています。このドキュメントの末尾にあるリンクをご覧ください。These nodes and node types are described in the other articles in this section—see the links at the end of this document.

ノードの構造Node structure

すべてのノードは共通の要素の組み合わせで構成されます。All nodes are made up of a combination of common elements. すべてのノードの右側には少なくとも 1 つの出力ターミナルがあります (シェーダーの出力を表している最後のカラー ノードは除きます)。Every node has at least one output terminal on its right-hand side (except the final color node, which represents the output of the shader). 計算またはテクスチャ サンプラーを表すノードの左側には入力ターミナルがありますが、情報を表すノードには入力ターミナルはありません。Nodes that represent calculations or texture samplers have input terminals on their left-hand sides, but nodes that represent information have no input terminals. 出力ターミナルは入力ターミナルに接続されており、それに沿ってノード間を情報が移動します。Output terminals are connected to input terminals to move information from one node to another.

入力の上位変換Promotion of inputs

シェーダー デザイナーは効果をゲームまたはアプリで使うことができるように最終的に HLSL ソース コードを生成する必要があるため、シェーダー デザイナーのノードは HLSL が使う型の上位変換ルールの対象になります。Because the Shader Designer must ultimately generate HLSL source code so that the effect can be used in a game or app, Shader Designer nodes are subject to the type-promotion rules that HLSL uses. グラフィックス ハードウェアは主に浮動小数点値で動作するため、異なる型の間の上位変換 (例: int から float、または float から double) は一般的ではありません。Because graphics hardware operates primarily on floating-point values, type promotion between different types—for example, from int to float, or from float to double—is uncommon. 代わりに、グラフィックス ハードウェアでは情報の複数の部分に対して同じ演算が同時に使われるため、短い入力値が最長の入力のサイズと一致するように延長される、異なる種類の上位変換が発生する可能性があります。Instead, because graphics hardware uses the same operation on multiple pieces of information at once, a different kind of promotion can occur in which the shorter of a number of inputs is lengthened to match the size of the longest input. 延長方法は入力の型および演算自体に依存します。How it is lengthened depends on the type of the input, and also on the operation itself:

  • 小さい方の型がスカラー値の場合:If the smaller type is a scalar value, then:

    スカラーの値が、大きい方の入力と同じサイズのベクターにレプリケートされます。The value of the scalar is replicated into a vector that is equal in size to the larger input. たとえば、演算の最大の入力が 3 要素のベクターである場合は、演算の種類に関係なく、スカラー入力 5.0 はベクター (5.0, 5.0, 5.0) になります。For example, the scalar input 5.0 becomes the vector (5.0, 5.0, 5.0) when the largest input of the operation is a three-element vector, regardless of what the operation is.

  • 小さい方の型がベクターで、演算が乗法 (*、/、% など) である場合:If the smaller type is a vector, and the operation is multiplicative (*, /, %, and so on), then:

    ベクターの値が、大きい方の入力のサイズに等しいベクターの先頭要素にコピーされ、後続の要素は 1.0 に設定されます。The value of the vector is copied into the leading elements of a vector that is equal in size to the larger input, and the trailing elements are set to 1.0. たとえば、ベクター入力 (5.0, 5.0) は、4 要素のベクターによって乗算されるときは、ベクター (5.0, 5.0, 1.0, 1.0) になります。For example, the vector input (5.0, 5.0) becomes the vector (5.0, 5.0, 1.0, 1.0) when it's multiplied by a four-element vector. これにより、出力の 3 番目と 4 番目の要素は乗法の単位元 1.0 を使うことによって維持されます。This preserves the third and fourth elements of the output by using the multiplicative identity, 1.0.

  • 小さい方の型がベクターで、演算が加法 (+、- など) である場合:If the smaller type is a vector, and the operation is additive (+, -, and so on), then:

    ベクターの値が、大きい方の入力のサイズに等しいベクターの先頭要素にコピーされ、後続の要素は 0.0 に設定されます。The value of the vector is copied into the leading elements of a vector that is equal in size to the larger input, and the trailing elements are set to 0.0. たとえば、ベクター入力 (5.0, 5.0) は、4 要素のベクターに加算されるときは、ベクター (5.0, 5.0, 0.0, 0.0) になります。For example, the vector input (5.0, 5.0) becomes the vector (5.0, 5.0, 0.0, 0.0) when it's added to a four-element vector. これにより、出力の 3 番目と 4 番目の要素は加法の単位元 0.0 を使うことによって維持されます。This preserves the third and fourth elements of the output by using the additive identity, 0.0.

タイトルTitle 説明Description
定数ノードConstant Nodes シェーダーの計算でリテラル値および補間された頂点状態の情報を表すために使うことができるノードについて説明します。Describes nodes that you can use to represent literal values and interpolated vertex-state information in shader calculations. 頂点状態は補間され、ピクセルごとに異なるので、各ピクセル シェーダー インスタンスは異なるバージョンの定数を受け取ります。Because vertex-state is interpolated—and therefore, is different for each pixel—each pixel-shader instance receives a different version of the constant.
パラメーター ノードParameter Nodes シェーダーの計算でカメラの位置、素材のプロパティ、ライティング パラメーター、時刻、およびその他のアプリの状態情報を表すために使うことができるノードについて説明します。Describes nodes that you can use to represent camera position, material properties, lighting parameters, time, and other app-state information in shader calculations.
テクスチャ ノードTexture Nodes さまざまなテクスチャの種類とジオメトリのサンプリング、および一般的な方法でのテクスチャ座標の生成または変換に使うことができるノードについて説明します。Describes the nodes that you can use to sample various texture types and geometries, and to produce or transform texture coordinates in common ways.
数値演算ノードMath Nodes HLSL の命令に直接マップする、代数演算、論理演算、三角関数演算、その他の算術演算を実行するために使うことができるノードについて説明します。Describes the nodes that you can use to perform algebraic, logic, trigonometric, and other mathematical operations that map directly to HLSL instructions.
ユーティリティ ノードUtility Nodes HLSL の命令に直接マップしない、一般的なライティング計算や他の一般的な演算を実行するために使うことができるノードについて説明します。Describes the nodes that you can use to perform common lighting calculations and other common operations that do not map directly to HLSL instructions.
フィルター ノードFilter Nodes テクスチャ フィルター処理とカラー フィルター処理の実行に使うことができるノードについて説明します。Describes the nodes that you can use to perform texture filtering and color filtering.