texldb: ps
Instrucción de carga de textura sesgada. Esta instrucción usa el cuarto elemento (.a o .w) para inclinar el nivel de muestreo de textura de detalle justo antes del muestreo.
Sintaxis
texldb dst, src0, src1 |
---|
Donde:
- dst es el registro de destino.
- src0 es un registro de origen que proporciona las coordenadas de textura para el ejemplo de textura. Consulte Registro de coordenadas de textura.
- src1 identifica el sampler (Direct3D 9 asm-ps) (s#), donde # especifica qué número de muestra de textura se va a muestrear. El sampler se ha asociado a ella una textura y un estado de muestreo definido por D3DSAMPLERSTATETYPE.
Para conocer las restricciones al usar texldb, consulte la instrucción texld - ps_2_0 y up .
ps_2_0 y ps_2_x
dst debe ser un registro temporal (r#) y solo se permite la máscara .xyzw (máscara predeterminada).
src0 debe ser un registro de coordenadas de textura (t#) o un registro temporal (r#), sin ningún modificador ni swizzle.
src1 debe ser un Sampler (Direct3D 9 asm-ps) (s#), sin modificador ni swizzle.
Si el bit de límite de D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT no está establecido (en D3DPSHADERCAPS2_0), una instrucción de textura determinada (texld, texldp, texldb, texldd) puede depender, como máximo, de un tercer orden. Una instrucción de textura dependiente del primer orden es una instrucción de textura en la que:
- src0 es un registro temporal (r#).
- dst se escribió anteriormente y ahora se vuelve a escribir.
Una instrucción de textura dependiente del segundo orden se define como una instrucción de textura que lee o escribe en un registro temporal (r#) cuyo contenido, antes de ejecutar la instrucción de textura, depende (quizás indirectamente) del resultado de una instrucción de textura dependiente del primer orden. Una instrucción de textura dependiente del orden (n)th deriva de una instrucción de textura de orden ésimo (n - 1).
ps_3_0
src1 debe ser un Sampler (Direct3D 9 asm-ps) (s#), sin ningún modificador. Swizzle se permite en src1 y, cuando se aplica, los resultados de búsqueda de texturas se aparecen previamente antes de escribir en dst.
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 |
---|---|---|---|---|---|---|---|---|---|
texldb | x | x | x | x | x |
texldb inclina el nivel de detalle del mapa mip, calculado normalmente como parte del proceso de ejemplo por el valor (con signo) en src0.w. Los valores de sesgo positivo darán lugar a que se seleccionen mapas mip más pequeños y viceversa. Para ps_2_0 y ps_2_x, los valores de sesgo pueden estar dentro del intervalo [-3.0, +3.0]. Para ps_3_0, los valores de sesgo pueden estar dentro del intervalo [-16.0, +15.0]. Los valores de sesgo fuera de estos intervalos generan resultados indefinidos. El estado del muestreador D3DSAMP_MIPMAPLODBIAS todavía se respeta y el sesgo de texldb se agrega a esto, pero por píxel. Una vez calculado el nivel de detalle sesgado, todavía se respeta D3DSAMP_MAXMIPLEVEL y se produce la muestra de textura. Después de texldb, el contenido de src0 no se ve afectado (a menos que dst sea el mismo registro).
El número de coordenadas necesarias para que src0 realice la muestra de textura depende de cómo se declaró src1, además del componente .w. Los tipos de sampler se declaran con dcl_samplerType (sm2, sm3 - ps asm). Si src1 se declara como un sampler 2D, src0 debe contener coordenadas .xyw; Si src1 se declara como un sampler de cubo o un sampler de volumen, src0 debe contener coordenadas .xyzw. Se permite el muestreo de una textura 2D con coordenadas .xyzw (se omite la coordenada .z).
Si la textura de origen contiene menos de cuatro componentes, los valores predeterminados se colocan en los componentes que faltan. Los valores predeterminados dependen del formato de textura, como se muestra en la tabla siguiente:
Formato de textura | Valores predeterminados |
---|---|
D3DFMT_R5G6B5, D3DFMT_R8G8B8, D3DFMT_L8, D3DFMT_L16, D3DFMT_R3G3B2, D3DFMT_CxV8U8, D3DFMT_L6V5U5 | A = 1,0 |
D3DFMT_V8U8, D3DFMT_V16U16, D3DFMT_G16R16, D3DFMT_G16R16F, D3DFMT_G32R32F | B = A = 1,0 |
D3DFMT_A8 | R = G = B = 0,0 |
D3DFMT_R16F, D3DFMT_R32F | G = B = A = 1,0 |
Todos los formatos de galería de símbolos y profundidad | R = B = 0,0, A = 1,0 |
Temas relacionados