Ausgaberegister

  • Vertexfarbregister
  • Nebelregister
  • Position_Register
  • Point_Size_Register
  • Texture_Coordinate_Register

Den Registernamen wird ein Kleinbuchstabe o vorangestellt, der angibt, dass die Ausgaberegister schreibgeschützt sind.

Vertexfarbregister – oD0, oD1

oD0 ist das diffuse Farbregister. oD1 ist das Glanzfarbregister. Der oD0-Wert wird interpoliert und in das Eingabefarbregister 0 (v0) des Pixelshaders geschrieben. Der oD1-Wert wird interpoliert und in das Eingabefarbregister 1 (v1) des Pixelshaders geschrieben. Weitere Informationen zu Pixelshaderfarbregistern finden Sie unter Register.

Vertexshaderversionen 1_1 2_0 2_sw 2_x 3_0 3_sw
Vertexfarbregister x x x x

 

Nebelregister – oFog

Der Ausgabenebelwert wird registriert. Der Wert ist der Nebelfaktor, der interpoliert und dann an die Nebeltabelle weitergeleitet werden soll. Es wird nur die skalare x-Komponente des Nebels verwendet. Werte werden zwischen 0 und 1 eingeklemmt, bevor sie an den Rasterizer übergeben werden.

Vertexshaderversionen 1_1 2_0 2_sw 2_x 3_0 3_sw
Nebelregister x x x x

 

Positionsregister – oPos

Die Ausgabeposition wird registriert. Der Wert ist die Position im homogenen Beschneidungsraum. Dieser Wert muss vom Vertex-Shader geschrieben werden.

Vertexshaderversionen 1_1 2_0 2_sw 2_x 3_0 3_sw
Positionsregister x x x x

 

Punktgrößenregister – oPts

Die Ausgabepunktgröße wird registriert. Es wird nur die skalare x-Komponente der Punktgröße verwendet.

Vertexshaderversionen 1_1 2_0 2_sw 2_x 3_0 3_sw
Punktgrößenregister x x x x

 

Texturkoordinatenregister – oT0 bis oT7

Die Ausgabetexturkoordinaten werden registriert. Insbesondere handelt es sich dabei um ein Array von Ausgabedatenregistern, die durchlaufen und als Texturkoordinaten von den Textursamplingphasen verwendet werden, die Daten an den Pixelshader weiterleiten.

Vertexshaderversionen 1_1 2_0 2_sw 2_x 3_0 3_sw
Texturkoordinatenregister x x x x

 

Beim Schreiben in ein Texturkoordinatenregister wird empfohlen, nur so viele Gleitkommawerte wie die Dimension der entsprechenden Texturkarte zu übergeben. Steuern Sie die Werte, die mit einem -Modifizierer übergeben werden. Verwenden Sie z. B. .xy für eine 2D-Texturzuordnung.

Wenn die Texturprojektion für eine Texturphase aktiviert ist, müssen alle vier Gleitkommawerte in das entsprechende Texturregister geschrieben werden.

Jedes der D3DTTFF*-Texturtransformationsflags sollte null sein, wenn die programmierbare Pipeline verwendet wird.

Texturkoordinatenbereich

Objektvertexdaten liefern Eingabetexturkoordinaten. Objekte, die keine Kacheltexturen verwenden, weisen häufig Texturkoordinaten im Bereich [0,1] auf. Objekte, die kachelfarbene Texturen verwenden, z. B. Gelände, weisen in der Regel Texturkoordinaten auf, die von [-?,+?] liegen. Wo? kann eine große Gleitkommazahl sein.

Die Texturkoordinateninterpolation wird für Vertexdaten zur Rasterisierung ausgeführt. Während der Rasterung werden Texturkoordinaten zwischen Objektvertices interpoliert, durch Texturumbruch geändert und durch die Texturgröße skaliert (auch unter Berücksichtigung des Texturadressmodus), um einen ganzzahligen Index zu erzeugen. Der Index wird dann verwendet, um eine Textursuche durchzuführen. MaxTextureRepeat kann verwendet werden, um zu bestimmen, wie oft eine Textur gekachelt werden kann.

Wenn Texturkoordinaten direkt in einen Pixelshader gelesen werden (mit texcoord oder texcrd), hängt der Texturkoordinatenbereich von der Anweisung und der Pixelshaderversion ab.

Vertex-Shaderregister