Funzionalità di Direct3D 10.1
Direct3D 10.1 estende il set di funzionalità di Direct3D 10.0 con le nuove funzionalità seguenti:
Modalità blend: modalità di fusione indipendenti per destinazione di rendering usando la nuova interfaccia dello stato blend (vedere l'interfaccia ID3D10BlendState1). Le operazioni di fusione a doppia origine sono limitate allo slot di destinazione di rendering 0; non è possibile scrivere in altri output o avere destinazioni di rendering associate a slot diversi da slot 0.
Comportamento di culling : i visi ad area zero vengono automaticamente risolti; questo influisce solo sul rendering del wireframe.
Regole a virgola mobile: usa le stesse regole I edizione Enterprise E-754 per le operazioni a virgola mobile EXCEPT a 32 bit per produrre un risultato entro 0,5 unità -last-place (0,5 ULP) del risultato infinitamente preciso. Questo vale per l'addizione, la sottrazione e la moltiplicazione. (accuratezza a 0,5 ULP per la moltiplicazione, 1,0 ULP per reciproco).
Formati: la precisione della fusione float16 è aumentata a 0,5 ULP. La fusione è necessaria anche per i formati UNORM16/SNORM16/SNORM8.
Multisample Anti-Aliasing: il multicampionamento è stato migliorato per generalizzare la trasparenza basata sulla copertura e rendere il multicampionamento più efficace con il rendering a più passaggi. A tale scopo, tutte le semantiche multisample vengono definite come se il pixel shader venga sempre eseguito una volta per campione (frequenza di campionamento), calcolando un colore separato per campione. Se un pixel shader non usa attributi per campione, calcola lo stesso valore per ogni campione coperto in un pixel. In tal caso, equivale all'hardware che esegue lo shader una volta per pixel (frequenza pixel), replicando il risultato in tutti i campioni trattati. Naturalmente, l'esecuzione a frequenza di pixel produce sempre gli stessi risultati dell'esecuzione dello stesso shader a frequenza di campionamento, quando gli attributi vengono campionati a una frequenza di pixel. La statistica della pipeline PSInvocations incrementa a frequenza di campionamento, a meno che lo shader non sia in esecuzione a frequenza di pixel.
Larghezza di banda della fase della pipeline: aumento della quantità di dati che è possibile passare tra le fasi dello shader:
Risorsa Limiti Registra tra fasi shader 32 (componente x 4 a 32 bit) Registri di input del vertex shader 32 Slot di input dell'assembler 32 Regole di rasterizzazione: le regole per la rasterizzazione sono state modificate per le righe, inoltre, sono state aggiunte nuove funzionalità.
- MultisampleEnable influisce solo sulla rasterizzazione delle linee (i punti e i triangoli non sono interessati) e viene usato per scegliere un algoritmo di disegno a linee. Ciò significa che alcune rasterizzazioni multisample di Direct3D 10 non sono più supportate.
- Nuova esecuzione di pixel shader a frequenza di campionamento con rasterizzazione primitiva.
Risorse : CopyResource è abilitato in due nuovi scenari:
- Le superfici MSAA di colore e profondità/profondità possono ora essere usate con CopyResource come origine o destinazione
- Conversione del formato durante la copia tra determinate risorse prestrutturate a 32/64/128 bit, risorse tipate e rappresentazioni compresse della stessa larghezza di bit.
Campionamento trame: sample_c e sample_c_lz istruzioni vengono definite per funzionare con Texture2DArrays e TextureCubeArrays, usare il membro Location (il componente alfa) per specificare un indice di matrice.
Visualizzazioni: TextureCube e il nuovo TextureCubeArray (vedere D3D10_TEXCUBE_ARRAY_SRV1) non sono risorse effettive, ma sono nuove visualizzazioni in una risorsa Texture2DArray. Creare una visualizzazione delle risorse da una risorsa Texture2DArray con un nuovo flag di utilizzo (D3D10_RESOURCE_MISC_TEXTURECUBE), usare la nuova interfaccia ID3D10ShaderResourceView1 per associare una visualizzazione trama cubo alla pipeline.
Le nuove funzionalità richiedono un tipo di dispositivo 10.1 (vedi l'interfaccia ID3D10Device1) che può essere creata chiamando D3D10CreateDevice1 oppure puoi creare il dispositivo e la catena di scambio contemporaneamente chiamando D3D10CreateDeviceAndSwapChain1.
In Windows Vista Service Pack 1, Le DLL Direct3D 10.0 e Direct3D 10.1 esistono side-by-side nel sistema. Per accedere alle funzionalità 10.1, eseguire una delle operazioni seguenti:
Accesso alle funzionalità 10.1 in Vista Gold e Vista Service Pack 1
Gli sviluppatori che desiderano supportare Vista Gold e SP1 dovranno tenere conto della mancanza delle nuove estensioni API 10.1 in Vista Gold. SIA DXUT che D3DX10 fornirà funzioni di praticità per creare il dispositivo appropriato, in base alle DLL disponibili nel sistema e all'hardware disponibile (10.0 o 10.1). Il dispositivo 10.1 eredita dal dispositivo 10.0 e può essere recuperato tramite QueryInterface(). È consigliabile che ogni applicazione tenga traccia del tipo di dispositivo e gestisca un puntatore al dispositivo 10.1 (se disponibile) per evitare frequenti chiamate QueryInterface quando si desidera la funzionalità 10.1. Analogamente, dove le viste delle risorse e gli oggetti stato 10.1 sono associati dalla classe personalizzata di un'applicazione, è consigliabile tenere traccia dell'applicazione se l'oggetto è un tipo 10.0 o 10.1 per evitare chiamate QueryInterface() ridondanti. D3DX10 include un set di funzioni di utilità per semplificare questo processo (vedere D3DX10CreateDevice e D3DX10CreateDeviceAndSwapChain).
Accesso esclusivo alle funzionalità della versione 10.1 in Vista Service Pack 1
Alcuni sviluppatori possono scegliere di richiedere Vista Service Pack 1, che verrà distribuito su larga scala agli utenti finali e include una serie di miglioramenti all'esterno di Direct3D 10.1. Questi sviluppatori possono usare esclusivamente le intestazioni e le librerie Direct3D 10.1, prendendo una dipendenza dalle DLL Direct3D 10.1 che supportano hardware 10.0 e 10.1 (alcune chiamate potrebbero tuttavia non riuscire nei dispositivi 10.0 in cui la nuova funzionalità non è supportata).
Alcune note aggiuntive:
- Le API esposte in D3DX10.dll accetteranno sia i dispositivi 10.0 che 10.1 e sfruttano la funzionalità 10.1, se disponibile.
- D3D10SDKLayers.dll supporta un dispositivo 10.1 e può restituire le funzionalità di debug appropriate per le funzionalità 10.1.
- D3D10Ref.dll implementa un dispositivo software 10.0 e 10.1.
- D3DX10 e FXC supportano il modello di shader 10.1 aggiornato con le destinazioni seguenti: vs_4_1, gs_4_1, ps_4_1 e fx_4_1 che possono essere associati a un dispositivo 10.1. Un dispositivo 10.1 supporta shader model 4.0 e 4.1 shader.
- Il framework degli effetti Direct3D 10.0 supporta i dispositivi 10.0 e 10.1, tuttavia, qualsiasi tecnica che include shader model 4.1 shader o le nuove funzionalità 10.1 devono usare un dispositivo 10.1.
Argomenti correlati