Freigeben über


Anweisungstoken

Ein Anweisungstoken informiert den Treiber eines bestimmten auszuführenden Vorgangs und besteht aus den folgenden Bits:

Bits

[15:00] Bits 0 bis 15 geben einen Vorgangscode an. D3DSIO_* ist ein Beispiel für einen Vorgangscode, wobei * die Anweisung darstellt. Der folgende Codeausschnitt zeigt beispielsweise eine ADD-Anweisung:

// D3DSIO_ADD d, s1, s2

[23:16] Bits 16 bis 23 geben bestimmte Steuerelemente im Zusammenhang mit dem Vorgangscode an.

[27:24] Bei Pixel- und Vertex-Shaderversionen vor 2_0 sind Bits 24 bis 27 reserviert und auf 0x0 festgelegt.

Bei Pixel- und Vertex-Shaderversionen 2_0 und höher geben Bits 24 bis 27 die Größe in DWORDs der Anweisung mit Ausnahme des Anweisungstokens selbst an (d. r. die Anzahl der Token, die die Anweisung mit Ausnahme des Anweisungstokens umfassen).

[28] Für Pixel- und Vertex-Shaderversionen vor 2_0 ist Bit 28 reserviert und auf 0x0 festgelegt.

Bei Pixel- und Vertex-Shaderversionen 2_0 und höher gibt Bit 28 an, ob die Anweisung prädiziert ist (d. h. enthält ein zusätzliches Prädikatquelltoken am Ende des Shadercodes. Wenn dieses Bit auf 0x1 gesetzt ist, ist die Anweisung prediziert.

[29] Reserviert. Dieser Wert wird auf 0x0 festgelegt.

[30] Bei Pixel-Shaderversionen vor 2_0 ist Bit 30 der Co-Problembit. Wenn diese Anweisung auf 1 festgelegt ist, führen Sie diese Anweisung mit vorherigen Anweisungen aus. andernfalls wird separat ausgeführt.

Für Pixelshaderversion 2_0 und höher und alle Vertex-Shaderversionen ist Bit 30 reserviert und auf 0x0 festgelegt.

[31] Bit 31 ist null (0x0).

Kommentare

In der aktuellen DirectX SDK-Dokumentation finden Sie unter der Pixel-Shaderreferenz und der Vertex-Shaderreferenz weitere Informationen zu Vorgängen, die in Bits 0 bis 15 von Anweisungstoken angegeben werden können.

Nachdem die DirectX3D-Laufzeit Shadercode von einer Anwendung empfängt, überprüft die Laufzeit den Code, bevor der Code an den Treiber übergeben wird. In der Regel versieht die Laufzeit Assembleranweisungen mit dem Präfix "D3DSIO_", um den Opcode zu erstellen. Die folgenden Assembleranweisungen entsprechen z. B. Kernelmodusvorgängen:

Assemblerbefehl Betrieb im Kernelmodus

hinzufügen

D3DSIO_ADD

mov

D3DSIO_MOV

sub

D3DSIO_SUB

TeX

D3DSIO_TEX

texcoord

D3DSIO_TEXCOORD

Beachten Sie, dass in allen Vertex-Shaderversionen die Subassembler-Anweisung als D3DSIO_ADD-Vorgang mit dem Quellmodifizierer (Bits 27:24) der zweiten Quelle implementiert wird, die auf "negate" (0x1) festgelegt ist.

Die Tex - und Texcoord-Anweisungen gelten für Pixel-Shaderversionen 1_0 bis 1_3; jeder Anweisung ist ein Zielparameter zugeordnet.

Die Texld - und texcrd-Anweisungen sind neu bei Pixelshader Version 1_4 und höher; jeder Anweisung sind Ziel- und Quellparameter zugeordnet.

Die Laufzeit konvertiert die Tex - und Texld-Assembleranweisungen in den D3DSIO_TEX Kernelmodusvorgang. Die Laufzeit konvertiert die Texcoord - und texcrd-Assembleranweisungen in den D3DSIO_TEXCOORD Kernelmodus-Vorgang. Treiber überprüfen zuerst die Pixelshaderversion des Shadercodes und verarbeiten dann die Anweisungen entsprechend. Wenn ein Treiber beispielsweise überprüft, ob er Version 1_4-Pixelshadercode mit einem D3DSIO_TEX Vorgang empfangen hat, bestimmt der Treiber, dass ziel- und quellparameter dem Anweisungstoken folgen.

Anforderungen

Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.