Freigeben über


texcrd – ps

Kopiert Texturkoordinatendaten aus dem Quelltexturkoordinaten-Iteratorregister als Farbdaten im Zielregister.

Syntax

texcrd dst, src

 

where

  • dst ist das Zielregister.
  • src ist ein Quellregister.

Bemerkungen

Pixel-Shaderversionen 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texcrd x

 

Diese Anweisung interpretiert Koordinatendaten als Farbdaten (RGBA).

In dieser Anweisung wird keine Textur abgetastet. Nur Texturkoordinaten, die in dieser Texturphase festgelegt sind, sind relevant.

Beachten Sie bei Verwendung von texcrd folgendes Detail darüber, wie Daten aus dem Quellregister in das Zielregister kopiert werden. Das Quelltexturkoordinatenregister (t#) enthält Daten im Bereich [-D3DCAPS9. MaxTextureRepeat, D3DCAPS9. MaxTextureRepeat], während das Zielregister (r#) Daten nur im (wahrscheinlich kleineren) Bereich [-D3DCAPS9] enthalten kann. PixelShader1xMaxValue, D3DCAPS9. PixelShader1xMaxValue]. Beachten Sie, dass für Pixel-Shader version 1_4 D3DCAPS9. PixelShader1xMaxValue muss mindestens acht sein. Die texcrd-Anweisung verhält sich beim Klemmen von Quelldaten außerhalb des Bereichs des Zielregisters wahrscheinlich auf unterschiedlicher Hardware unterschiedlich. Die erste Pixel-Shader-Version 1_4-Hardware auf dem Markt wird eine spezielle Klemme für Werte außerhalb des Bereichs ausführen. Diese Klemme soll eine Zahl erzeugen, die in das Zielregister passen kann, aber auch das Texturadressierungsverhalten für Daten außerhalb des Bereichs beibehalten (siehe D3DTEXTUREADDRESS), wenn die Daten anschließend für die Textursampling verwendet werden sollen. Neue Hardware verschiedener Hersteller weist dieses Verhalten jedoch möglicherweise nicht auf und kann daten einfach so hacken, dass sie dem Zielregisterbereich entsprechen. Daher besteht die sicherste Vorgehensweise bei Verwendung von Pixel-Shader Version 1_4 texcrd darin, Texturkoordinatendaten nur in den Pixel-Shader bereitzustellen, der sich bereits innerhalb des Bereichs [-8,8] befindet, sodass Sie sich nicht auf die Art und Weise verlassen, wie Hardware-Klemmungen verwendet werden.

Im Gegensatz zu texcoord_ klemmt texcrd keine Werte zwischen 0 und 1.

Regeln für die Verwendung von texcrd:

  1. Derselbe .xyz- oder .xyw-Modifizierer muss auf jeden Lesevorgang eines einzelnen t(n)-Registers innerhalb einer texcrd- oder texld-Anweisung angewendet werden.
  2. Das vierte Kanalergebnis von texcrd ist in allen Fällen nicht festgelegt/undefiniert.
  3. Der dritte Kanal ist für den xyw_dw Fall nicht festgelegt/undefiniert.

Beispiele

Der vollständige Satz zulässiger Syntax für texcrd unter Berücksichtigung aller gültigen Kombinationen aus Quellmodifizierer/-selektor und Zielschreibmaske ist unten dargestellt. Beachten Sie, dass die RGBA- und XYZW-Notation austauschbar verwendet werden können.

Kopiert die ersten drei Kanäle des Texturkoordinaten-Iteratorsregisters t(n) in r(m). Der vierte Kanal von r(m) ist nicht initialisiert.

texcrd  r(m).rgb, t(n).xyz  

// Produces the same result as the previous instruction
texcrd  r(m).rgb, t(n)

Fügt die ersten, zweiten und vierten Komponenten von t(n) in die ersten drei Kanäle von r(m) ein. Der vierte Kanal von r(m) ist nicht initialisiert.

texcrd  r(m).rgb, t(n).xyw

Hier sehen Sie ein projektives Trennbeispiel mit dem _dw-Modifizierer.

In diesem Beispiel werden x/w und y/w aus t(n) in die ersten beiden Kanäle von r(m) kopiert. Der dritte und vierte r(m)-Kanal sind nicht initialisiert. Alle Daten, die zuvor in den dritten Kanal von r(m) geschrieben wurden, gehen verloren. Daten im vierten Kanal von r(m) gehen aufgrund der Phasenmarkierung verloren. Bei Version 1_4 wird das D3DTTFF_PROJECTED-Flag ignoriert.

texcrd  r(m).rg,  t(n)_dw.xyw

Pixel-Shaderanweisungen