次の方法で共有


命令トークン

命令トークンは、実行する特定の操作をドライバーに通知し、次のビットで構成されます。

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 オペレーティング システムで使用できます。