ピクセル シェーダ 2_0 拡張

ピクセル シェーダ 2_0 拡張

プログラマブル ピクセル シェーダは、ピクセル データを処理する一連の命令から成る。レジスタは、ALU との間でデータをやり取りする。追加の制御を適用して、命令、結果、書き込むデータを変更できる。

  • 利用可能な命令の一覧を、「命令 - ps_2_x」に示す。
  • ピクセル シェーダの演算論理単位 (ALU) で使われる各種レジスタの一覧を、「レジスタ - ps_2_x」に示す。
  • 命令修飾子を使って、命令の機能を変更する。
  • マスキングは、出力レジスタのどの成分に書き込むかを決定する。
  • 入力修飾子は、命令の実行前に入力レジスタのデータを変更する。
  • 入れ換えによって、読み取り先、コピー先、書き込み先となるレジスタ成分をさらに制御できる。

動的フロー制御

D3DCAPS9.PS20Caps.DynamicFlowControlDepth は、動的フロー制御命令ifif_compif_predbreakbreak_comp のネストの深さを表す。この値は、if_comp ブロックのネストの深さと等しい。この能力の値の範囲は 0 ~ 24 である。この能力が 0 の場合、デバイスは動的フロー制御命令をサポートしない。

テンポラリ レジスタの数

デバイスがサポートするテンポラリ レジスタの数。12 ~ 32 の範囲である。

静的フロー制御のネストの深さ

D3DCAPS9.PS20Caps.StaticFlowControlDepth は、2 種類の静的フロー制御命令loop/rep および call/callnz のネストの深さを表す。この能力の値の範囲は 1 ~ 4 である。loop/rep 命令は、StaticFlowControlDepth の深さまでネストできる。またこれとは別に、call/callnz 命令は StaticFlowControlDepth の深さまでネストできる。

命令スロットの数

命令スロットの数の範囲は、96 個から最大で 512 個までであり、D3DCAPS9.PS20Caps.MaxPixelShaderInstructionSlots 能力で指定される。実行可能な命令の総数は、D3DCAPS9.MaxPixelShaderInstructionsExecuted で定義される。ループやサブルーチン呼び出しがあると、この数は命令スロットの数よりも大きくなる。

任意の入れ換え

D3DPS20CAPS_ARBITRARYSWIZZLE フラグが設定されている場合、任意の入れ換えがサポートされている。「任意の入れ換え」を参照すること。

グラデーション命令

D3DPS20CAPS_GRADIENTINSTRUCTIONS が設定されている場合、グラデーション命令がサポートされている。「dsx」、「dsy」、「texldd」を参照すること。

プレディケーション

D3DPS20CAPS_PREDICATION フラグが設定されている場合、命令のプレディケーションがサポートされている。「プレディケーション」を参照すること。

従属読み取りの制限

D3DPS20CAPS_NODEPENDENTREADLIMIT が設定されている場合、従属読み取りに制限はない。

テクスチャ命令の制限

D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT フラグが設定されている場合、テクスチャ命令に制限はない。