texbem - ps
Aplicar una transformación de mapa de entorno de impacto falso. Esto se logra modificando los datos de dirección de textura del registro de destino, utilizando los datos de perturbación de direcciones (du,dv) y una matriz de entorno de parachoques 2D.
Sintaxis
texbem dst, src |
---|
where
- dst es el registro de destino.
- src es un registro de origen.
Comentarios
Versiones del sombreador de píxeles | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texbem | x | x | x |
Los datos de color rojo y verde del registro src se interpretan como los datos de perturbación (du,dv).
Esta instrucción transforma los componentes rojos y verdes en el registro de origen mediante la matriz de asignación de entornos 2D. El resultado se agrega al conjunto de coordenadas de textura correspondiente al número de registro de destino y se usa para muestrear la fase de textura actual.
Esta operación siempre interpreta du y dv como cantidades firmadas. Para las versiones 1_0 y 1_1, no se permite el modificador de entrada Source Register Signed Scaling (_bx2) en el argumento de entrada.
Esta instrucción genera resultados definidos cuando las texturas de entrada contienen datos de formato firmados. Los datos de formato mixto solo funcionan si los dos primeros canales contienen datos firmados. Para obtener más información sobre los formatos de superficie, vea D3DFORMAT.
Esto se puede usar para una variedad de técnicas basadas en la perturbación de la dirección, incluida la asignación falsa del entorno por píxel y la iluminación difusa (asignación de golpes).
Al usar esta instrucción, los registros de textura deben seguir la siguiente secuencia.
// 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
Los cálculos realizados en la instrucción se muestran a continuación.
// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
u' = TextureCoordinates(stage m)u + D3DTSS_BUMPENVMAT00(stage m)*t(n)R + D3DTSS_BUMPENVMAT10(stage m)*t(n)G v' = TextureCoordinates(stage m)v + D3DTSS_BUMPENVMAT01(stage m)*t(n)R + D3DTSS_BUMPENVMAT11(stage m)*t(n)G t(m)RGBA = TextureSample(stage m)
usar (u',v') como coordenadas
Registrar datos leídos por un texbem - ps o texbeml - la instrucción ps no se puede leer más adelante, excepto por otro texbem - ps o 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
Ejemplos
Este es un sombreador de ejemplo con los mapas de textura identificados y las fases de textura identificadas.
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 requiere las siguientes texturas en las siguientes fases de textura.
- A la fase 0 se le asigna un mapa de golpes con datos de perturbación (du, dv).
- La fase 1 usa un mapa de texturas con datos de color.
- Esta instrucción establece los datos de matriz en la fase de textura que se muestrea.
- Esto es diferente de la funcionalidad de la canalización de funciones fijas donde los datos de perturbación y las matrices ocupan la misma fase de textura.
Temas relacionados