texm3x2depth – ps
Berechnen Sie den Tiefenwert, der bei Tiefentests für dieses Pixel verwendet werden soll.
Syntax
texm3x2depth 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 |
---|---|---|---|---|---|---|---|---|---|
texm3x2depth | x |
Diese Anweisung muss mit der anweisung texm3x2pad - ps 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
// Calculate z value
texm3x2depth t(m+1), t(n) // Calculate w value; use both z and w to
// find depth
Die Tiefenberechnung erfolgt nach Verwendung eines Punktproduktvorgangs zum Ermitteln von z und w. Hier finden Sie weitere Details zur Ausführung der Tiefenberechnung.
Die texm3x2pad-Anweisung berechnet z.
z = TextureCoordinates(stage m)UVW * t(n)RGB
Die texm3x2depth-Anweisung berechnet w.
w = TextureCoordinates(stage m+1)UVW * t(n)RGB
Berechnen Sie die Tiefe, und speichern Sie das Ergebnis in t(m+1).
if (w == 0)
t(m+1) = 1.0
else
t(m+1) = z/w
Die berechnete Tiefe wird so markiert, dass sie im Tiefentest für das Pixel verwendet wird, wodurch der vorhandene Tiefentestwert für das Pixel ersetzt wird.
Stellen Sie sicher, dass z/w im Bereich von (0-1) liegt. Wenn sich z/w außerhalb dieses Bereichs befindet, wird das im Tiefenpuffer gespeicherte Ergebnis nicht definiert.
Nach dem Ausführen von texm3x2depth ist register t(m+1) nicht mehr für die Verwendung im Shader verfügbar.
Beim Multisampling beseitigt die Verwendung dieser Anweisung den größten Vorteil des Tiefenpuffers mit höherer Auflösung. Da der Pixel-Shader einmal pro Pixel ausgeführt wird, wird der einzelne Tiefenwert von texm3x2depth oder texdepth - ps für jeden Der Subpixel-Tiefenvergleichstests verwendet.
Zugehörige Themen