次の方法で共有


宛先レジスタ マスク

マスクは、命令の結果で更新される宛先レジスタのコンポーネントを指定します。 テクスチャ レジスタには 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    

これらの制限は、テクスチャ座標レジスタにのみ適用されます。

頂点シェーダー レジスタモディファイヤ