Trame dei vertici in vs_3_0 (DirectX HLSL)
Il modello vertex shader 3.0 supporta la ricerca delle trame nel vertex shader usando l'istruzione di caricamento delle trame texldl - vs. Il motore dei vertici contiene quattro fasi del campionatore di trame, denominate D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 e D3DVERTEXTEXTURESAMPLER3. Questi esempi sono distinti dal campionatore di mappe di spostamento e dai campioni di trama nel motore pixel.
Per campionare le 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 D3DVERTEXTEXTURESAMPLER0 tramite D3DVERTEXTEXTURESAMPLER3. È stato introdotto un nuovo registro nel vertex shader, il registro del campionatore (come in ps_2_0), che rappresenta il campionatore di trame dei vertici. Questo registro deve essere definito nello shader prima di usarlo.
Un'applicazione può eseguire una query se un formato è supportato come trama di vertici 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 di vertici creata nel pool predefinito può essere impostata come trama pixel e viceversa. Tuttavia, per usare l'elaborazione dei vertici software, la trama del vertice deve essere creata nel pool di scratch (indipendentemente dal fatto che si tratti di un dispositivo in modalità mista o di un dispositivo di elaborazione dei vertici software).
La funzionalità è identica alle trame pixel, ad eccezione delle seguenti:
- Il filtro delle trame anisotropico non è supportato, pertanto D3DSAMP_MAXANISOTROPY viene ignorato e D3DTEXF_ANISOTROPIC non può essere impostato per ingrandire o minificare per queste fasi.
- La frequenza delle informazioni sulle modifiche non è disponibile, pertanto l'applicazione deve calcolare il livello di dettaglio e fornire tali informazioni come parametro per texldl - vs.
Le restrizioni includono:
- Come nei pixel shader, se sono supportate trame multielemento, D3DSAMP_ELEMENTINDEX viene usato per individuare l'elemento da cui campionare.
- Lo stato D3DSAMP_DMAPOFFSET viene ignorato per queste fasi.
- Usare CheckDeviceFormat con D3DUSAGE_QUERY_VERTEXTEXTURE" per eseguire una query su una trama per verificare se può essere usata come trama del vertice.
- VertexTextureFilterCaps indica il tipo di filtri consentiti nei campioni delle trame dei vertici. D3DPTFILTERCAPS_MINFANISOTROPIC e D3DPTFILTERCAPS_MAGFANISOTROPIC non sono consentiti.
Registri fasi di campionamento
Un registro di fase di campionamento identifica un'unità di campionamento che può essere usata nelle istruzioni di caricamento delle trame. Un'unità di campionamento corrisponde alla fase di campionamento delle trame, incapsulando lo stato specifico del campionamento fornito in SetSamplerState.
Ogni campionatore identifica in modo univoco una singola superficie di trama impostata sul campionatore corrispondente usando SetTexture. Tuttavia, la stessa superficie di trama può essere impostata su più campionatori.
In fase di disegno, una trama non può essere impostata contemporaneamente come destinazione di rendering e una trama in una fase.
Poiché vs_3_0 supporta quattro campioni, fino a quattro superfici di trama possono essere lette da in un singolo passaggio shader. Un registro di campionatore può essere visualizzato solo come argomento nell'istruzione di caricamento trama: texldl - vs.
In vs_3_0, se si usa un campionatore, 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. È possibile controllare i tipi di filtro specifici supportati chiamando GetDeviceCaps e controllando VertexTextureFilterCaps. Tutti i formati di trama pubblicati saranno supportati come trame dei vertici nell'elaborazione dei vertici software.
Le applicazioni possono verificare se un particolare formato di trama è 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 scratch è necessario per l'elaborazione dei vertici software.
Modifiche 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;
Argomenti correlati