ピクセル シェーダーの違い
命令スロット
各バージョンでは、異なる数の最大命令スロットがサポートされています。
バージョン | 命令スロットの最大数 |
---|---|
ps_1_1 | 4 テクスチャ + 8 算術 |
ps_1_2 | 4 テクスチャ + 8 算術 |
ps_1_3 | 4 テクスチャ + 8 算術 |
ps_1_4 | 6 テクスチャ + フェーズあたり 8 算術 |
ps_2_0 | 32 テクスチャ + 64 算術 |
ps_2_x | D3DCAPS9 のスロット数まで、最小 96 個。D3DPSHADERCAPS2_0.NumInstructionSlots。 「D3DPSHADERCAPS2_0」を参照してください。 |
ps_3_0 | 512 以上で、D3DCAPS9 のスロット数までです。MaxPixelShader30InstructionSlots。 「D3DPSHADERCAPS2_0」を参照してください。 |
ソフトウェア シェーダーの制限事項については、「ソフトウェア シェーダー」を参照してください。
フロー制御の入れ子の制限
- 「フロー制御の制限事項」を参照してください。
ps_1_x機能
新しい手順:
「ps_1_1、ps_1_2、ps_1_3、ps_1_4手順」を参照してください。
新しいレジスタ:
「ps_1_1__ps_1_2__ps_1_3__ps_1_4 レジスタ」を参照してください。
ps_2_0機能
新機能:
- 3 つの新しいスウィズル - .yzxw、.zxyw、.wzyx
- 一時レジスタ (r#) の数が 12 に増加しました
- 定数 Float Register レジスタの数 (c#) が 32 に増加しました
- テクスチャ座標レジスタの数 (t#) が 8 に増加しました
新しい手順:
- セットアップ手順 - dcl - (sm2、sm3 - ps asm)、 dcl_samplerType (sm2、sm3 - ps asm)
- 算術命令 - abs - ps, crs - ps, dp2add - ps, exp - ps, frc - ps, log - ps, m3x2 - ps, m3x3 - ps, m3x4 - ps, m4x3 - ps, m4x4 - ps, max - ps, min- ps, nrm - ps, pow - ps, rcp - ps, rsq - ps, sincos - ps
- テクスチャ命令 - texld - ps_2_0以降 (異なる構文)、 texldb - ps、 texldp - ps
新しいレジスタ:
ps_2_x機能
新機能 ( 「D3DPSHADERCAPS2_0」を参照)。
- 動的フロー制御
- 静的フロー制御
- 動的および静的フロー制御命令の入れ子
- 一時レジスタの数 (r#) を増やしました
- 任意のソーススウィズル
- グラデーションの手順
- プレディケーション
- 依存テクスチャの読み取り制限なし
- テクスチャ命令の制限なし
新しい手順:
- 静的フロー制御命令 - bool - ps、call - ps、callnz bool - ps、else - ps、endif - ps、rep - ps、endrep - ps、label - ps、ret - ps の場合
- 動的フロー制御命令 - break - ps、 break_comp - ps、 breakp - ps、 callnz pred - ps、 if_comp - ps、 pred の場合は ps、 setp_comp - ps
- 算術命令 - dsx - ps、 dsy - ps
- テクスチャ命令 - texldd - ps
新しいレジスタ:
- 述語レジスタ (p0)
ps_3_0機能
新機能:
- 統合された 10 個の入力レジスタ(v#)
- ループ カウンター レジスタ (aL) を使用したインデックス可能な入力カラー レジスタ (v#)
- 一時レジスタの数 (r#) が 32 に増加しました
- 定数浮動小数点レジスタの数 (c#) が 224 に増加しました
新しい手順:
- セットアップ命令 - dcl_semantics (sm3 - ps asm)
- 静的フロー命令 - ループ - ps、 endloop - ps
- 算術命令 - sincos - ps (新しい構文)
- テクスチャ命令 - texldl - ps
新しいレジスタ:
- 入力レジスタ (v#)
- Position Register (vPos)
- Face Register (vFace)
関連トピック