ピクセル シェーダーの相違点
命令スロット
命令スロットの最大数はバージョンによって異なります。
バージョン | 命令スロットの最大数 |
---|---|
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 | 96 (最小) ~ D3DCAPS9.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 に増加
- 浮動小数点型定数レジスタレジスタ数 (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#) を増加
- 任意のソース スィズル
- グラデーション命令
- プレディケーション
- テクスチャーの依存読み取り制限を廃止
- テクスチャーの命令制限を廃止
新しい命令:
- 静的フロー制御命令 - if 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、if 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)
- 静的フロー命令 - loop - ps、endloop - ps
- 算術命令 - sincos - ps (新構文)
- テクスチャー命令 - texldl - ps
新しいレジスタ :