texldb - ps

Istruzione di caricamento delle trame distorte. Questa istruzione usa il quarto elemento (con estensione a o w) per distorsione del livello di dettaglio del campionamento delle trame subito prima del campionamento.

Sintassi

texldb dst, src0, src1

 

Dove:

  • dst è il registro di destinazione.
  • src0 è un registro di origine che fornisce le coordinate della trama per il campione di trama. Vedi Registro coordinate trama.
  • src1 identifica sampler (Direct3D 9 asm-ps) (s#), dove # specifica il numero di campionatore di trama da campionare. L'campionatore ha associato una trama e uno stato del campionatore definito da D3DSAMPLERSTATETYPE.

Per le restrizioni relative all'uso di texldb, vedere l'istruzione texld - ps_2_0 e up .

ps_2_0 e ps_2_x

dst deve essere un registro temporaneo (r#) e è consentita solo la maschera .xyzw (maschera predefinita).

src0 deve essere un registro delle coordinate della trama (t#) o un registro temporaneo (r#), senza modificatore o swizzle.

src1 deve essere un campionatore (Direct3D 9 asm-ps) (s#), senza modificatore o swizzle.

Se il bit del limite di D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT non è impostato (in D3DPSHADERCAPS2_0), un'istruzione di trama specifica (texld, texldp, texldb, texldd) può dipendere al massimo dal terzo ordine. Un'istruzione di trama dipendente dal primo ordine è un'istruzione di trama in cui:

  • src0 è un registro temporaneo (r#).
  • dst è stato scritto in precedenza, ora in fase di scrittura.

Un'istruzione di trama dipendente secondo ordine viene definita come un'istruzione trama che legge o scrive in un registro temporaneo (r#) il cui contenuto, prima di eseguire l'istruzione trama, dipende (forse indirettamente) dal risultato di un'istruzione di trama dipendente dal primo ordine. Un'istruzione di trama dipendente dall'ordine (n)deriva da un'istruzione trama (n - 1)th-order texture.

ps_3_0

src1 deve essere un campionatore (Direct3D 9 asm-ps) (s#), senza modificatore. Swizzle è consentito su src1 e, quando applicato, i risultati della ricerca della trama vengono pre-swizzled prima di essere scritti in dst.

Commenti

Versioni del pixel shader 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 biases the mipmap level-of-detail, computed normalmente come parte del processo di esempio in base al valore (firmato) in src0.w. I valori di distorsione positivi comportano la selezione di mipmap più piccoli e viceversa. Per ps_2_0 e ps_2_x, i valori di distorsione possono essere compresi nell'intervallo [-3.0, +3.0]. Per ps_3_0, i valori di distorsione possono essere compresi nell'intervallo [-16.0, +15.0]. I valori di distorsione esterni a questi intervalli producono risultati non definiti. Lo stato del campionatore D3DSAMP_MIPMAPLODBIAS è ancora rispettato e la distorsione texldb viene aggiunta a questo, ma in base al pixel. Dopo aver calcolato il livello di dettaglio distorto, D3DSAMP_MAXMIPLEVEL viene ancora rispettato e si verifica il campione di trama. Dopo texldb, il contenuto di src0 non è interessato (a meno che dst non sia lo stesso registro).

Il numero di coordinate necessarie per eseguire src0 per eseguire il campione di trama dipende dalla modalità di dichiarazione di src1, oltre al componente con estensione w. I tipi sampler vengono dichiarati con dcl_samplerType (sm2, sm3 - ps asm). Se src1 viene dichiarato come campionatore 2D, src0 deve contenere coordinate xyw; se src1 viene dichiarato come campionatore di cubo o un campionatore di volumi, src0 deve contenere coordinate xyzw. È consentito il campionamento di una trama 2D con coordinate con estensione xyzw (la coordinata z viene ignorata).

Se la trama di origine contiene meno di quattro componenti, le impostazioni predefinite vengono inserite nei componenti mancanti. Le impostazioni predefinite dipendono dal formato di trama, come illustrato nella tabella seguente:

Formato trama Valori predefiniti
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
Tutti i formati depth/stencil R = B = 0,0, A = 1,0

 

Istruzioni per pixel shader