texldl - vs

Esempio di una trama con un particolare sampler. È necessario specificare come quarto componente della coordinata di trama il livello di mipmap specifico di dettaglio.

Sintassi

texldl dst, src0, src1

 

Dove:

  • dst è un registro di destinazione.
  • src0 è un registro di origine che fornisce le coordinate della trama per l'esempio di trama.
  • src1 identifica il registro dell'sampler di origine (s#), dove # specifica il numero di sampler trama da esempio. L'esempio ha associato una trama e uno stato di controllo definito dall'enumerazione D3DSAMPLERSTATETYPE , ad esempio D3DSAMP_MINFILTER.

Commenti

Versioni del vertex shader 1_1 2_0 2_x 2_sw 3_0 3_sw
texldl x x

 

texldl cerca la trama impostata nella fase del sampler a cui fa riferimento src1. Il livello di dettaglio viene selezionato da src0.w. Questo valore può essere negativo, nel qual caso il livello di dettaglio selezionato è il "zeroth one" (mappa più grande) con MAGFILTER. Poiché src0.w è un valore a virgola mobile, il valore frazionaria viene usato per interpolare (se MIPFILTER è LINEAR) tra due livelli mip. Gli stati di sampler MIPMAPLODBIAS e MAXMIPLEVEL sono onorati. Per altre informazioni sugli stati dell'esempio, vedere D3DSAMPLERSTATETYPE.

Se un programma shader esegue esempi da un sampler che non ha un set di trame, 0001 viene ottenuto nel registro di destinazione.

Si tratta di un'approssimazione dell'algoritmo del dispositivo di riferimento.

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;
   }
}

Restrizioni:

  • Le coordinate della trama non devono essere ridimensionate in base alle dimensioni della trama.
  • dst deve essere un registro temporaneo (r#).
  • dst può accettare una maschera di scrittura. Vedere Maschera del registro di destinazione.
  • Le impostazioni predefinite per i componenti mancanti sono 0 o 1 e dipendono dal formato della trama.
  • src1 deve essere un sampler (Direct3D 9 asm-vs) ( s#). src1 potrebbe non usare un modificatore negato. src1 può usare swizzle, che viene applicato dopo il campionamento prima che venga rispettata la maschera di scrittura. L'esempio deve essere stato dichiarato (usando dcl_samplerType (sm3 - vs asm) all'inizio dello shader.
  • Il numero di coordinate necessarie per eseguire l'esempio di trama dipende dal modo in cui è stato dichiarato l'sampler. Se è stato dichiarato come cubo, è necessaria una coordinata trama a tre componenti (.rgb). La convalida impone che le coordinate fornite a texldl siano sufficienti per la dimensione di trama dichiarata per il sampler. Tuttavia, non è garantito che l'applicazione imposta effettivamente una trama (tramite l'API) con dimensioni uguali alla dimensione dichiarata per l'sampler. In tal caso, il runtime tenterà di rilevare errori di corrispondenza (possibilmente solo nel debug). Il campionamento di una trama con dimensioni inferiori a quelle presenti nella coordinata della trama sarà consentito e verrà assunto per ignorare i componenti delle coordinate di trama aggiuntive. Al contrario, il campionamento di una trama con più dimensioni rispetto a quelle presenti nella coordinata della trama non è consentito.
  • Se src0 (coordinata trama) è un registro temporaneo (r#), i componenti necessari per la ricerca (descritto sopra) devono essere stati scritti in precedenza.
  • Il campionamento di trame RGB senza segno comporta valori float compresi tra 0,0 e 1,0.
  • I trame con segno di campionamento comportano valori float compresi tra -1,0 e 1.0.
  • Quando si esegue il campionamento delle trame a virgola mobile, Float16 indica che i dati verranno variano all'interno di MAX_FLOAT16. Float32 indica che verrà usato l'intervallo massimo della pipeline. Il campionamento all'esterno di un intervallo non è definito.
  • Non esiste alcun limite di lettura dipendente.

Istruzioni di Vertex Shader