宛先レジスタ マスク
マスクは、命令の結果で更新される宛先レジスタのコンポーネントを指定します。 テクスチャ レジスタには 1 つのルール セットがあり、非テクスチャ レジスタには別のルール セットがあります。
- dx9_graphics_reference_asm_vs_registers_modifiers_masking - このセクションには、宛先レジスタにマスクを適用するための規則が含まれています。
- Texture_Register_Masks - テクスチャ レジスタには一意の規則がいくつかあります。
宛先レジスタ マスク
次の表に示すように、マスク (は有効な頂点シェーダー 頂点シェーダー レジスタの 1 つです) をベクター データの個々のコンポーネントに適用できます。
コンポーネント修飾子 | 説明 |
---|---|
r.{x}{y}{z}{w} | 宛先マスク |
- 一般に、宛先レジスタの書き込みマスクを指定することは、適切なコーディング スタイルです。 これにより、コードの読み取りと保守が容易になります。
- x が y より前、y が z より前、z が w より前である限り、コンポーネントの任意の組み合わせを指定できます (none を含む)。
- oPts および oFog 出力レジスタでは、マスクを 1 つだけ使用する必要があります。
- 特定の命令では、宛先レジスタで exp、expp、log、logp、pow、rcp、rsq の 1 つの書き込みマスクを使用する必要があります。
- バージョン 1.0 では、frc 命令には、.x または .y または .xy のいずれかのマスクの組み合わせが必要でした。 バージョン 2.0 にはマスク制限はありません。
- sincos には、.x または .y または .xyz のいずれかのマスクの組み合わせが必要です。
- m3x2 には .xy 書き込みマスクが必要です。
- m3x3 と m4x3 には、.xyz 書き込みマスクが必要です。
- m3x4 と m4x4 には、.xyz 書き込みマスクまたは既定の書き込みマスク (xyzw) のいずれかが必要です。
テクスチャ レジスタ マスク
テクスチャ座標レジスタで修飾子を使用するための検証規則は、他のレジスタの検証規則よりも厳密です。
- oTn が書き込まれる場合は、以前のすべてのレジスタ (oTn-1 ~ oT0) も書き込む必要があります。
- oT# レジスタの "結合された" 書き込みマスクは、次のいずれかである必要があります。
- .x
- 。Xy
- 。Xyz
- .xyzw (コンポーネント修飾子を使用しないのと同じです)
たとえば、頂点シェーダーは、別の手順でテクスチャ レジスタに出力できます。
oT1.y
oT0.y
oT2
oT0.xz
oT1.x
または、命令を組み合わせることができます。
oT0.xyz
oT1.xy
oT2.xyzw
これらの制限は、テクスチャ座標レジスタにのみ適用されます。
関連トピック