texbeml : ps
Aplicar una transformación de mapa del entorno de golpes falsos con corrección de luminancia. Esto se logra modificando los datos de dirección de textura del registro de destino, utilizando datos de perturbación de direcciones (du,dv), una matriz de entornos de impacto 2D y luminancia.
Sintaxis
texbeml dst, src |
---|
where
- dst es el registro de destino.
- src es un registro de origen.
Observaciones
Versiones del sombreador de píxeles | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texbeml | x | x | x |
Los datos de color rojo y verde del registro src se interpretan como los datos de perturbación (du,dv). Los datos de color azul del registro src se interpretan como los datos de la luminancia.
Esta instrucción transforma los componentes rojo y verde 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. Se aplica una corrección de la luminancia utilizando el valor de la luminancia y los valores de fase de textura de sesgo. El resultado se usa para muestrear la fase de textura actual.
Esto se puede usar para una variedad de técnicas basadas en la perturbación de direcciones, como la asignación de entorno falsa por píxel.
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 input.
Esta instrucción genera resultados definidos cuando las texturas de entrada contienen datos de formato mixto. Para obtener más información sobre los formatos de superficie, vea D3DFORMAT.
// When using this instruction, texture registers must follow
// the following sequence:
// The texture assigned to stage tn contains the (du,dv) data
// The texture assigned to stage t(m) is sampled
tex t(n)
texbeml t(m), t(n) where m > n
En este ejemplo se muestran los cálculos realizados en la instrucción .
// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
// 3. Luminance correction is applied
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) using (u',v') as coordinates
t(m)RGBA = t(m)RGBA *
[(t(n)B * D3DTSS_BUMPENVLSCALE(stage m)) +
D3DTSS_BUMPENVLOFFSET(stage m)]
El registro de datos leídos por una instrucción texbem o texbeml no se puede leer más adelante, excepto por otro texbem o texbeml.
// 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
texbeml t1, t0 ; Compute (u',v')
; Apply luminance correction
; Sample t1 using (u',v')
mov r0, t1 ; Output result
En este ejemplo se requieren las siguientes texturas en las siguientes fases de textura.
- A la fase 0 se le asigna un mapa de impacto con datos de perturbación (du, dv).
- A la fase 1 se le asigna un mapa de textura con datos de color.
- texbeml establece los datos de matriz en la fase de textura que se muestrea. Esto es diferente de la funcionalidad de la canalización de función fija donde los datos de perturbación y las matrices ocupan la misma fase de textura.
Temas relacionados