vs_3_0
Ein programmierbarer Vertex-Shader besteht aus einer Reihe von Anweisungen, die mit Vertexdaten arbeiten. Register übertragen Daten in und aus der ALU. Ein zusätzliches Steuerelement kann angewendet werden, um die Anweisung, die Ergebnisse oder die ausgeschriebenen Daten zu ändern.
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 Obergrenze festgelegt werden muss, ist in vs_3_0 verfügbar, ohne dass die Obergrenze erforderlich ist.
- Anweisungen: vs_3_0 enthält eine Liste der verfügbaren Anweisungen.
- Register: vs_3_0 listet die verschiedenen Typen von Registern auf, die vom Vertex-Shader ALU verwendet werden.
- Vertex-Shaderregistermodifizierer werden verwendet, um die Funktionsweise einer Anweisung zu ändern.
- Vertex-Shader-Quellregistermodifizierer ändern die Quellregisterdaten, bevor die Anweisung ausgeführt wird.
- Source Register Swizzling gibt zusätzliche Kontrolle darüber, welche Registerkomponenten gelesen, kopiert oder geschrieben werden.
- Zielregistermaskierung bestimmt, welche Komponenten des Zielregisters geschrieben werden.
Neue Funktionen
Die neuen 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#)
Scheitelpunkttexturen
Dieses Shadermodell unterstützt die Textursuche im Vertex-Shader mithilfe von texldl. Die Vertex-Engine verfügt über vier Textur-Samplerstufen (die sich vom Displacement Map-Sampler und den Textur-Samplern in der Pixel-Engine unterscheiden), die zum Beispiel für Texturen verwendet werden können, die in diesen Phasen festgelegt sind. Siehe Vertextexturen in vs_3_0 (DirectX HLSL).
Scheitelstromhäufigkeit
Mit diesem Feature kann eine Teilmenge der Eingaberegister mit einer anderen Rate als einmal pro Scheitelpunkt initialisiert werden. Weitere Informationen finden Sie unter Zeichnen von nicht indizierten Geometrien.
Shaderausgabe
Ähnlich wie vs_2_0 kann die Ausgabe des Shaders mit der statischen Flusssteuerung variieren. Seien Sie beim dynamischen Verzweigen vorsichtig, 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 Wert der Schachtelungstiefe ist 24. (Weitere Informationen finden Sie unter Schachtelungsgrenzwerte für Flusssteuerung .)
Temporäre Register
Insgesamt werden 32 temporäre Register (r#) unterstützt.
Statische Flusssteuerung
Die maximale Schachtelungstiefe für Schleife ( vs/. rep ) ist 4. Die maximale Schachtelungstiefe für Aufrufe ( vs/callnz bool - vs/callnz pred - vs callnz pred ) ist 4. Wenn bool – vs, ist der maximal zulässige Wert für die Schachtelungstiefe 24. (Weitere Informationen finden Sie unter Schachtelungsgrenzwerte für Flusssteuerung .)
Prädikation
Die Anweisungsvorbehandlung wird unterstützt. Verwenden Sie setp_comp – vs , um das Prädikatregister festzulegen.
Anweisungsanzahl
Jeder Vertex-Shader ist von 512 bis zur Anzahl der Slots in MaxVertexShader30InstructionSlots in D3DCAPS9 zulässig. Die Anzahl der ausgeführten Anweisungen kann aufgrund der Unterstützung von Schleifen/Wiederholungen viel höher sein. Dies wird jedoch von MaxVShaderInstructionsExecuted in D3DCAPS9 begrenzt, die mindestens 0xFFFF sein sollte.
Gerätekappen
Wenn Vertex Shader 3_0 unterstützt wird, werden die folgenden Obergrenzen (mindestens) in der Hardware unterstützt:
Cap | Funktion |
---|---|
Shader-Obergrenzen |
|
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom | 8 KB |
VertexShaderVersion | 3_0 |
MaxVertexShaderConst | 256 |
MaxVertexShader30InstructionSlots | 512 |
Nebelunterstützung | D3DPRASTERCAPS_FOGVERTEX |
VertexTextureFilterCaps | |
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET | Vertexelemente in einer Vertexdeklaration können denselben Streamoffset verwenden. |
Vertexformate |
|
Zugehörige Themen