texm3x2tex – ps

Führt die letzte Zeile einer 3x2-Matrixmultiplikation aus und verwendet das Ergebnis für eine Textursuche. texm3x2tex muss in Verbindung mit der texm3x2pad - ps-Anweisung verwendet werden.

Syntax

texm3x2tex dst, src

where

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

Hinweise

Pixel-Shaderversionen 1_1 1_2 1 _ 3 1_4 2 _ 0 2 _ x 2 _ sw 3 _ 0 3 _ sw
texm3x2tex x x x

Die -Anweisung wird als eine von zwei Anweisungen verwendet, die einen 3x2-Matrixmultiplikationsvorgang darstellen. Diese Anweisung muss mit der texm3x2pad - ps-Anweisung verwendet werden.

Wenn Sie diese beiden Anweisungen verwenden, müssen Texturregister die folgende Sequenz verwenden.

 
tex t(n)                      // Define tn as a standard 3-vector (tn must 
                              // be defined in some way before it is used)
texm3x2pad  t(m),   t(n)      // where m > n
                              // Perform first row of matrix multiply
texm3x2tex  t(m+1), t(n)      // Perform second row of matrix multiply 
                              // to get (u,v) to sample texture 
                              // associated with stage m+1

Hier finden Sie weitere Details dazu, wie die 3x2-Multiplikation erreicht wird.

Die Texm3x2pad-Anweisung führt die erste Zeile der Multiplikation aus, um u' zu finden.

u' = t(n)RGB * TextureCoordinates(stage m)UVW

Die texm3x2tex-Anweisung führt die zweite Zeile der Multiplikation aus, um v' zu finden.

v' = t(n)RGB * TextureCoordinates(stage m+1)UVW

Die texm3x2tex-Anweisung untersucht die Textur auf der Stufe (m+1) mit (u',v') und speichert das Ergebnis in t(m+1).

t(m+1)RGB = TextureSample(Stage m+1)RGB using (u', v' ) as coordinates

Beispiele

Hier ist ein Beispiel-Shader mit den Texturzuordnungen und den identifizierten Texturstufen.

ps_1_1
tex t0                // Bind texture in stage 0 to register t0
texm3x2pad  t1,  t0   // First row of matrix multiply
texm3x2tex  t2,  t0   // Second row of matrix multiply to get (u,v)
                      // with which to sample texture in stage 2
mov r0, t2            // Output result

Für dieses Beispiel sind die folgenden Texturen in den folgenden Texturphasen erforderlich.

  • Phase 0 nimmt eine Karte mit (x,y,z)-Stördaten an.
  • Phase 1 enthält Texturkoordinaten. In der Texturphase ist keine Textur erforderlich.
  • Phase 2 enthält sowohl Texturkoordinaten als auch eine 2D-Textur, die in dieser Texturphase festgelegt ist.

Anweisungen für Pixel-Shader