Condividi tramite


Trame dei vertici in vs_3_0 (DirectX HLSL)

Il modello vertex shader 3.0 supporta la ricerca trama nel vertex shader usando l'istruzione texldl - vs texture load. Il motore del vertice contiene quattro fasi del campione di trama, denominate D3DVERTEXTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 e D3DVERTEXTEXTEXTURESAMPLER3. Questi sono distinti dal sampler mappa di spostamento e dai campioni di trama nel motore pixel.

Per esempi di trame impostate in queste quattro fasi, è possibile usare il motore dei vertici e programmare le fasi con il metodo CheckDeviceFormat . Impostare trame in queste fasi usando SetTexture, con l'indice di fase D3DVERTEXTEXTEXTURESAMPLER0 tramite D3DVERTEXTEXTURESAMPLER3. È stato introdotto un nuovo registro nel vertex shader, il registro del sampler (come in ps_2_0), che rappresenta l'esempio di trama del vertice. Questo registro deve essere definito nello shader prima di usarlo.

Un'applicazione può eseguire una query se un formato è supportato come trama del vertice chiamando CheckDeviceFormat con D3DUSAGE_QUERY_VERTEXTEXTURE.

Nota

Si tratta di un flag di query in modo che non venga accettato in alcuna funzione Createxxx. Una trama del vertice creata nel pool predefinito può essere impostata come trama pixel e viceversa. Tuttavia, per usare l'elaborazione del vertice software, la trama del vertice deve essere creata nel pool di grafi (indipendentemente dal fatto che sia un dispositivo in modalità mista o un dispositivo di elaborazione dei vertici software).

 

La funzionalità è identica alle trame pixel, ad eccezione delle seguenti:

  • Il filtro delle trame anisotropiche non è supportato, quindi D3DSAMP_MAXANISOTROPY viene ignorato e D3DTEXF_ANISOTROPIC non può essere impostato per l'ingrandimento o minify per queste fasi.
  • La frequenza delle informazioni sulle modifiche non è disponibile, quindi l'applicazione deve calcolare il livello di dettaglio e fornire tali informazioni come parametro a texldl - vs.

Tali restrizioni includono:

Registri fasi di campionamento

Un registro della fase di campionamento identifica un'unità di campionamento che può essere usata nelle istruzioni di caricamento della trama. Un'unità di campionamento corrisponde alla fase di campionamento della trama, incapsulando lo stato specifico del campionamento fornito in SetSamplerState.

Ogni sampler identifica in modo univoco una singola superficie di trama impostata sul campione corrispondente usando SetTexture. Tuttavia, la stessa superficie di trama può essere impostata su più campioni.

In fase di disegno, una trama non può essere impostata simultaneamente come destinazione di rendering e una trama in una fase.

Poiché vs_3_0 supporta quattro campioni, è possibile leggere fino a quattro superfici di trama in un singolo passaggio shader. Un registro di esempio potrebbe essere visualizzato solo come argomento nell'istruzione di caricamento della trama: texldl - vs.

In vs_3_0, se si usa un sampler, deve essere dichiarato all'inizio del programma shader, usando il dcl_samplerType (sm3 - vs asm) ( come in ps_2_0).

Elaborazione software

Questa funzionalità sarà supportata nell'elaborazione dei vertici software. I tipi di filtro specifici supportati possono essere controllati chiamando GetDeviceCaps e controllando VertexTextureFilterCaps. Tutti i formati di trama pubblicati saranno supportati come trame dei vertici nel vertice software.

Le applicazioni possono verificare se un formato di trama specifico è supportato nella modalità di elaborazione dei vertici software chiamando CheckDeviceFormat e fornendo (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) come utilizzo. Tutti i formati sono supportati per l'elaborazione dei vertici software. Il pool di grafi è necessario per l'elaborazione del vertice software.

Modifiche all'API

   
// New define
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
    

#define D3DVERTEXTEXTURESAMPLER  (0x00100000L)

// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;

Pipeline del vertice