texbem-PS
Anwenden einer gefälschten Bump Environment-Map-Transformation. Dies wird erreicht, indem die Textur Adressdaten des Ziel Registers mithilfe von Adress Erstellungs Daten (du, DV) und einer 2D-Bump-Umgebungs Matrix geändert werden.
Syntax
| texbem DST, src |
|---|
where
- DST ist das Ziel Register.
- src ist ein Quell Register.
Bemerkungen
| Pixel-Shader-Versionen | 1_1 | 1_2 | 1 _ 3 | 1_4 | 2 _ 0 | 2 _ x | 2 _ SW | 3 _ 0 | 3 _ SW |
|---|---|---|---|---|---|---|---|---|---|
| texbem | x | x | x |
Die roten und grünen Farbdaten im src-Register werden als Perturbation-Daten (du, DV) interpretiert.
Diese Anweisung transformiert rote und grüne Komponenten im Quell Register mithilfe der 2D-Bump-Umgebungs mappingmatrix. Das Ergebnis wird dem Texturkoordinaten Satz hinzugefügt, der der Ziel Registernummer entspricht, und wird zum Beispiel für die aktuelle Textur Phase verwendet.
Mit diesem Vorgang werden du und DV immer als signierte Mengen interpretiert. Für die Versionen 1 _ 0 und 1 _ 1 ist der Eingabe Modifizierer für die Quell Registrierung mit signierter Skalierung ( _ bx2) für das Eingabe Argument nicht zulässig.
Diese Anweisung erzeugt definierte Ergebnisse, wenn Eingabe Texturen signierte Formatierungsdaten enthalten. Daten im gemischten Format funktionieren nur, wenn die ersten beiden Kanäle signierte Daten enthalten. Weitere Informationen zu Oberflächen Formaten finden Sie unter D3DFORMAT.
Dies kann für eine Vielzahl von Techniken verwendet werden, die auf der Adress Umgebung basieren, einschließlich gefälschter Umgebungs Zuordnung pro Pixel und diffuses Beleuchtung (Bump-Zuordnung).
Bei der Verwendung dieser Anweisung müssen Textur Register der folgenden Sequenz folgen.
// The texture assigned to stage t(n) contains the (du,dv) data
// The texture assigned to stage t(m) is sampled
tex t(n)
texbem t(m), t(n) where m > n
Die Berechnungen in der Anweisung sind unten dargestellt.
// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
u ' = TextureCoordinates (Stufe m)u + D3DTSS _ BUMPENVMAT00 (Phase m) * t (n)R + D3DTSS _ BUMPENVMAT10 (Phase m) * t (n)G v ' = TextureCoordinates (Phase m)v + D3DTSS _ BUMPENVMAT01 (Stufe m) * t (n)R + D3DTSS _ BUMPENVMAT11 (Phase m) * t (n)G t (m)RGBA = texturesample (Stufe m)
Verwenden von (u ', v ') als Koordinaten
Das Registrieren von Daten, die von einer texbem-PS -oder texbeml-PS- Anweisung gelesen wurden, kann später nicht mehr gelesen werden, außer von anderen texbem-PS oder texbeml-PS.
// This example demonstrates the validation error caused by t0 being reread:
ps_1_1
tex t0
texbem t1, t0
add r0, t1, t0
(Instruction Error) (Statement 4) Register data that has been read by
texbem or texbeml instruction cannot be read by other instructions
Beispiele
Hier ist ein Beispiel-Shader mit den identifizierten Textur Zuordnungen und den identifizierten Textur Stufen.
ps_1_1
tex t0 ; Define t0 to get a 2-tuple DuDv
texbem t1, t0 ; Compute (u',v')
; Sample t1 using (u',v')
mov r0, t1 ; Output result
texbem erfordert die folgenden Texturen in den folgenden Textur Phasen.
- Phase 0 wird eine Bump Map mit (du-, DV-) perturingdaten zugewiesen.
- Phase 1 verwendet eine Textur Zuordnung mit Farbdaten.
- Diese Anweisung legt die Matrix Daten auf der Textur Stufe fest, für die ein Sampling durchgeführt wird.
- Dies unterscheidet sich von der Funktionalität der Fixed-Funktions Pipeline, bei der die Leistungsdaten und Matrizen dieselbe Textur Phase belegen.
Zugehörige Themen