命令トークン
命令トークンは、実行する特定の操作をドライバーに通知し、次のビットで構成されます。
Bits
[15:00] ビット 0 から 15 は 操作コードを示します。 D3DSIO_* は操作コードの例であり、ここで* は命令を表します。 たとえば、次のコード スニペットは ADD命令を示しています。
// D3DSIO_ADD d, s1, s2
[23:16] ビット 16 から 23 は、操作コードに関連する特定のコントロールを示します。
[27:24] 2_0 より前のバージョンのピクセル シェーダーと頂点シェーダーの場合、ビット 24 から 27 は予約され、0x0に設定されます。
ピクセル および頂点シェーダー バージョン 2_0 以降の場合、ビット 24 から 27 では、命令トークン自体を除く命令の DWORD 単位のサイズ (つまり、命令トークンを除く命令を構成するトークンの数) を指定します。
[28] 2_0 より前のバージョンのピクセル シェーダーと頂点シェーダーでは、ビット 28 は予約され、0x0に設定されます。
ピクセル シェーダー と頂点シェーダー バージョン 2_0 以降の場合、ビット 28 は命令が述語化されているかどうかを示します (つまり、シェーダー コードの末尾に追加の述語ソース トークンが含まれています)。 このビットが 0x1 に設定されている場合、命令は述語化されます。
[29] 予約。 この値は 0x0 に設定されます。
[30] 2_0 より前のバージョンのピクセル シェーダーでは、ビット 30 が併発行ビットです。 1 に設定されている場合は、前の手順でこの命令を実行します。それ以外の場合は、個別に実行します。
ピクセル シェーダー バージョン 2_0 以降とすべての頂点シェーダー バージョンの場合、ビット 30 は予約され、0x0 に設定されます。
[31] ビット 31 はゼロ (0x0) です。
コメント
命令トークンのビット 0 から 15 で指定できる操作の詳細については、最新の DirectX SDK ドキュメントのピクセル シェーダーリファレンスと頂点シェーダーリファレンスをご参照ください。
DirectX3D ランタイムがアプリケーションからシェーダー コードを受け取った後、ランタイムはコードを検証してから、コードをドライバーに渡します。 通常、ランタイムはアセンブラー命令に 「D3DSIO_」 というプレフィックスを付けて操作コードを作成します。 たとえば、次のアセンブラー命令はカーネル モード操作に対応しています。
アセンブラー命令 | カーネル モード操作 |
---|---|
add |
D3DSIO_ADD |
mov |
D3DSIO_MOV |
sub |
D3DSIO_SUB |
テキスト |
D3DSIO_TEX |
texcoord |
D3DSIO_TEXCOORD |
すべての頂点シェーダー バージョンでは、 サブ アセンブラー命令は、2 つ目のソースセットのソース修飾子 (ビット 27:24) をネゲート (0x1) してD3DSIO_ADD操作として実装されることに注意してください。
tex 命令 と texcoord 命令は、ピクセル シェーダー バージョン 1_0 から 1_3 に適用されます。各命令には、1 つの 宛先パラメーター が関連付けられています。
texld 命令と texcrd 命令は、ピクセル シェーダー バージョン 1_4 以降の新機能です。各命令には、宛先パラメーターと ソース パラメーター の両方が関連付けられています。
ランタイムは、 tex および texld アセンブラー命令をD3DSIO_TEXカーネル モード操作に変換します。 ランタイムは、 texcoord および texcrd アセンブラー命令をD3DSIO_TEXCOORDカーネル モード操作に変換します。 ドライバーはまずシェーダー コードのピクセル シェーダー バージョンを確認し、それに応じて命令を処理します。 たとえば、ドライバーが D3DSIO_TEX 操作でバージョン 1_4 ピクセル シェーダー コードを受信したことを確認した場合、ドライバーは、変換先パラメーターとソース パラメーターが命令トークンに従うと判断します。
要件
Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。