Asm-Shaderreferenz
Shader sind die Steuerung der programmierbaren Grafikpipeline.
Vertex-Shaderreferenz
Vertex-Shader-Unterschiede fasst die Unterschiede zwischen Vertex-Shaderversionen zusammen.
Pixel-Shaderreferenz
Unter Unterschiede zwischen Pixel-Shadern werden die Unterschiede zwischen den Shaderversionen von Pixeln zusammengefasst.
Shadermodell 4- und 5-Referenz
In den Abschnitten Shader Model 4 Assembly und Shader Model 5 Assembly werden die Anweisungen beschrieben, die shader model 4 und 5 unterstützen.
Verhalten konstanter Register in Assembly-Shadern
Es gibt zwei Möglichkeiten zum Festlegen konstanter Register in einem Assembly-Shader:
- Deklarieren Sie eine Shaderkonstation im Assemblycode mithilfe einer der * Def-Anweisungen.
- Verwenden Sie eine der Set * * * ShaderConstant-API-Methoden. *
Direct3D 9 Shader-Konstanten
In Direct3D 9 ist die Lebensdauer definierter Konstanten in einem bestimmten Shader auf die Ausführung dieses Shaders beschränkt (und nicht überschreibbar). Definierte Konstanten in Direct3D 9 haben keine Nebeneffekte außerhalb des Shaders.
Hier ist ein Beispiel mit Direct3D 9:
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1:
Call Set***Shader shader1
Call Set***ShaderConstant* to set c4
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 1 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 2:
Call Set***Shader shader2
Call Draw
Result: The shader will see the value last set in c4 by
Set***ShaderConstant* in scenario 1. This is because shader 2
didn't def c4.
In Direct3D 9 ruft der Aufruf von Get ShaderConstant nur konstante Werte ab, die über * * * * Set * * * ShaderConstant festgelegt * wurden.
Direct3D 8 Shader-Konstanten
Dieses Verhalten ist in Direct3D 8.x anders.
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1 (repeated with Direct3D 8):
Call Set***Shader with shader1
Call Set***ShaderConstant to set c4
Call Draw
Result: The shader will see the value in c4 from Set***ShaderConstant
In Direct3D 8.x wird * * * Set ShaderConstant sofort wirksam. Betrachten Sie folgendes Szenario:
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 3:
Call Set***Shader with shader1
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 3 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 4 :
Call Set***Shader with shader2
Call Draw
Result: The shader will see the def'd value in c4 (set by def in shader 1)
Das unerwünschte Ergebnis ist, dass sich die Reihenfolge, in der die Shader festgelegt werden, auf das beobachtete Verhalten einzelner Shader auswirken kann.
Anforderungen an das Shadertreibermodell
Direct3D 9-Schnittstellen sind auf DDI-Treiber (Device Driver Interface) beschränkt, bei denen es sich um DirectX 7-Treiber oder höher handelt. Um die DDI-Ebene zu überprüfen, führen Sie das DirectX-Diagnosetool aus, und untersuchen Sie die gespeicherte Textdatei.
Als Referenz können Direct3D 8-Schnittstellen nur auf DDI-Treibern mit DirectX 6-Ebene und höher verwendet werden.
Shader-Binärformat
Das bitweise Layout des Shaderanweisungsstreams wird in D3d9types.h definiert. Wenn Sie Ihren eigenen Shadercompiler oder Ihre eigenen Konstruktionstools entwerfen möchten und weitere Informationen zum Shadertokenstream wünschen, lesen Sie das Direct3D 9 Driver Development Kit (DDK).
C-like Shader Language
Informationen zu einer C- like-Shader-Sprache finden Sie in der HLSL-Referenz.