Freigeben über


vs_3_0

Ein programmierbarer Vertex-Shader besteht aus einer Reihe von Anweisungen, die mit Vertexdaten arbeiten. Registriert die Übertragung von Daten in und aus dem ALU. Zusätzliches Steuerelement kann angewendet werden, um die Anweisung, die Ergebnisse oder die Daten zu ändern, die ausgeschrieben werden.

Die Vertex-Shaderversion vs_3_0 erweitert den von vs_2_x unterstützten Featuresatz. Jedes der Features in vs_2_X, für die eine Feststelltaste festgelegt werden muss, ist in vs_3_0 verfügbar, ohne dass die Kappe erforderlich ist.

Neue Features

Neue Features der Vertex-Shaderversion vs_3_0 sind in den folgenden Abschnitten aufgeführt.

Indizierungsregister

In den früheren Shadermodellen konnte nur die Konstantenregisterbank indiziert werden. In diesem Modell können die folgenden Registerbanken mithilfe des Schleifenzählerregisters (aL) indiziert werden:

  • Eingaberegister (v#)
  • Ausgaberegister (o#)

Vertextexttexturen

Dieses Shadermodell unterstützt die Textursuche im Vertex-Shader mithilfe von Texldl. Das Vertexmodul verfügt über vier Textur-Samplerphasen (die sich von dem Verdrängungszuordnungs-Sampler und den Textursamplern im Pixelmodul unterscheiden), die zum Beispiel für Texturen verwendet werden können, die in diesen Phasen festgelegt werden. Siehe Vertextexttexturen in vs_3_0 (DirectX HLSL).

Vertexdatenstromhäufigkeit

Mit diesem Feature kann eine Teilmenge der Eingaberegister mit einer anderen Rate als einmal pro Scheitelpunkt initialisiert werden. Siehe Zeichnen nicht indizierte Geometrie.

Shaderausgabe

Ähnlich wie vs_2_0 kann die Ausgabe des Shaders mit der statischen Flusssteuerung variieren. Achten Sie bei dynamischer Verzweigung darauf, da dies dazu führen kann, dass Shaderausgaben pro Scheitelpunkt variieren. Dies führt zu unvorhersehbaren Ergebnissen auf unterschiedlicher Hardware.

Dynamische Flusssteuerung

Alle Anweisungen zur dynamischen Flusssteuerung werden unterstützt. Der maximal zulässige Schachtelungstiefewert beträgt 24. (Weitere Informationen finden Sie unter Schachtelungsgrenzwerte für Flusssteuerungen.)

Temporäre Register

Insgesamt werden 32 temporäre Register (r#) unterstützt.

Statische Flusssteuerung

Die maximale Schachtelungstiefe für Schleife ( vs/Rep - vs ist 4. Die maximale Schachtelungstiefe für Anruf - vs/callnz bool - vs/callnz pred - vs ist 4. Für , wenn bool - vsist der maximal zulässige Schachtelungstiefewert 24. (Weitere Informationen finden Sie unter Schachtelungsgrenzwerte für Flusssteuerungen.)

Aussage

Anweisungsvorgabe wird unterstützt. Verwenden Sie setp_comp - vs, um das Prädikatregister festzulegen.

Anzahl der Anweisungen

Jeder Vertex-Shader ist von 512 bis zur Anzahl der Slots in MaxVertexShader30InstructionSlots in D3DCAPS9zulässig. Die Anzahl der Anweisungen kann aufgrund der Schleifen-/Rep-Unterstützung viel höher sein; Dies wird jedoch von MaxVShaderInstructionsExecuted in D3DCAPS9 begrenzt, das mindestens 0xFFFF sein sollte.

Gerätekappen

Wenn Vertex-Shader 3_0 unterstützt wird, werden die folgenden Großbuchstaben in der Hardware unterstützt (mindestens):

Mütze Fähigkeit
Shaderkappen
  • DynamicFlowControlDepth ist 24
  • NumTemps ist 32
  • StaticFlowControlDepth ist 4
  • Die Prädierung wird unterstützt.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Nebelunterstützung D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Vertexelemente in einer Vertexdeklaration können denselben Datenstromversatz gemeinsam nutzen.
Vertexformate
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

Vertexshader