texldl: frente a

Muestree una textura con un sampler determinado. El nivel de detalle de mapa mip determinado que se muestrea debe especificarse como el cuarto componente de la coordenada de textura.

Sintaxis

texldl dst, src0, src1

 

Donde:

  • dst es un registro de destino.
  • src0 es un registro de origen que proporciona las coordenadas de textura para el ejemplo de textura.
  • src1 identifica el registro del sampler de origen (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 control definido por la enumeración D3DSAMPLERSTATETYPE (por ejemplo, D3DSAMP_MINFILTER).

Comentarios

Versiones del sombreador de vértices 1_1 2_0 2_x 2_sw 3_0 3_sw
texldl x x

 

texldl busca la textura establecida en la fase del sampler a la que hace referencia src1. El nivel de detalle se selecciona en src0.w. Este valor puede ser negativo, en cuyo caso el nivel de detalle seleccionado es el "cero" (mapa más grande) con el MAGFILTER. Dado que src0.w es un valor de punto flotante, el valor fraccional se usa para interpolar (si MIPFILTER es LINEAL) entre dos niveles mip. Se respetan los estados de sampler MIPMAPLODBIAS y MAXMIPLEVEL. Para obtener más información sobre los estados del sampler, vea D3DSAMPLERSTATETYPE.

Si un programa de sombreador muestra de un sampler que no tiene un conjunto de texturas, 0001 se obtiene en el registro de destino.

Se trata de una aproximación al algoritmo de dispositivo de referencia.

LOD = src0.w + LODBIAS;
if (LOD <= 0 )
{
   LOD = 0;
   Filter = MagFilter;
   tex = Lookup( MAX(MAXMIPLEVEL, LOD), Filter );
}
else
{
   Filter = MinFilter;
   LOD = MAX( MAXMIPLEVEL, LOD);
   tex = Lookup( Floor(LOD), Filter );
   if( MipFilter == LINEAR )
   {
      tex1 = Lookup( Ceil(LOD), Filter );                        
      tex = (1 - frac(src0.w))*tex + frac(src0.w)*tex1;
   }
}

Restricciones:

  • Las coordenadas de textura no se deben escalar por tamaño de textura.
  • dst debe ser un registro temporal (r#).
  • dst puede aceptar una máscara de escritura. Consulte Enmascaramiento de registros de destino.
  • Los valores predeterminados de los componentes que faltan son 0 o 1 y dependen del formato de textura.
  • src1 debe ser un sampler (Direct3D 9 asm-vs) (s#). es posible que src1 no use un modificador negate. src1 puede usar swizzle, que se aplica después del muestreo antes de que se respete la máscara de escritura. El sampler debe haberse declarado (mediante dcl_samplerType (sm3 - vs asm)) al principio del sombreador.
  • El número de coordenadas necesarias para realizar la muestra de textura depende de cómo se declaró el sampler. Si se declaró como un cubo, se requiere una coordenada de textura de tres componentes (.rgb). La validación exige que las coordenadas proporcionadas a texldl sean suficientes para la dimensión de textura declarada para el muestreador. Sin embargo, no se garantiza que la aplicación establezca realmente una textura (a través de la API) con dimensiones iguales a la dimensión declarada para el muestreador. En tal caso, el tiempo de ejecución intentará detectar errores de coincidencia (posiblemente solo en la depuración). Se permitirá el muestreo de una textura con menos dimensiones de las presentes en la coordenada de textura y se supone que omite los componentes de coordenadas de textura adicionales. Por el contrario, no se permite el muestreo de una textura con más dimensiones de las presentes en la coordenada de textura.
  • Si el src0 (coordenada de textura) es un registro temporal (r#), los componentes necesarios para la búsqueda (descrito anteriormente) deben haberse escrito previamente.
  • El muestreo de texturas RGB sin signo dará como resultado valores flotantes entre 0,0 y 1,0.
  • El muestreo de texturas firmadas dará como resultado valores flotantes entre -1.0 y 1.0.
  • Cuando se muestren texturas de punto flotante, Float16 significa que los datos van a oscilar dentro de MAX_FLOAT16. Float32 significa que se usará el intervalo máximo de la canalización. El muestreo fuera de cualquiera de los intervalos no está definido.
  • No hay ningún límite de lectura dependiente.

Instrucciones del sombreador de vértices