Novità dell'anteprima tecnica di Novembre 2008 Direct3D 11

Questa versione di Direct3D 11 contiene nuove funzionalità, strumenti e documentazione.

Elemento Descrizione
Mosaico
Direct3D 11 offre fasi di pipeline aggiuntive per supportare la tessellatura in tempo reale delle primitive di ordine elevato. Con funzionalità ampiamente programmabili, questa funzionalità consente molti metodi diversi per valutare superfici ad ordine elevato, tra cui le superfici di suddivisione usando tecniche di approssimazione, patch bezier, tessellazione adattiva e mapping di spostamento. Questa funzionalità sarà disponibile solo nell'hardware di classe Direct3D 11, quindi per valutare questa funzionalità sarà necessario usare Il rasterizzatore di riferimento. Per una demo di tessellazione in azione, vedere l'esempio SubD11 disponibile tramite il browser di esempio.
Compute Shader
Compute Shader è una fase aggiuntiva indipendente dalla pipeline Direct3D 11 che consente l'elaborazione per utilizzo generico nella GPU. Oltre a tutte le funzionalità di shader fornite dal core di shader unificato, Compute Shader supporta anche letture e scritture sparse nelle risorse tramite viste di accesso non ordinate, un pool di memoria condiviso all'interno di un gruppo di thread in esecuzione, primitive di sincronizzazione, operatori atomici e molte altre funzionalità avanzate parallele di dati. Una variante di Direct3D 11 Compute Shader è stata abilitata in questa versione che può funzionare su hardware di classe Direct3D 10. È quindi possibile sviluppare compute shader in hardware effettivo, ma è necessario un driver aggiornato. La funzionalità completa dell'hardware di classe Direct3D 11 Compute Shader è destinata al supporto dell'hardware di classe Direct3D 11, quindi per valutare la funzionalità completa è necessario usare Il rasterizzatore di riferimento fino a quando tale hardware non è disponibile. Per una demo dell'azione Compute Shader, vedere l'esempio HDRToneMappingCS11 disponibile tramite Il browser di esempio.
Multithreaded Rendering
La differenza dell'API chiave da Direct3D 10 in Direct3D 11 è l'aggiunta di contesti posticipati, che consente l'esecuzione scalabile dei comandi Direct3D distribuiti su più core. Un contesto posticipato acquisisce e assembla azioni come le modifiche dello stato e disegna gli invii che possono essere eseguiti nel dispositivo effettivo in un secondo momento. Usando contesti posticipati in più thread, un'applicazione può distribuire il sovraccarico della CPU necessario nel runtime Direct3D11 e il driver in più core, consentendo un uso migliore della configurazione del computer dell'utente finale. Questa funzionalità è disponibile per l'uso sull'hardware Direct3D 10 corrente e sul rasterizzatore di riferimento. Per una dimostrazione dell'utilizzo delle API, vedere l'esempio MultithreadedRendering11 disponibile tramite il browser di esempio.
Collegamento di Dynamic Shader
Per risolvere il problema di esplosione combinatoriale visto negli shader specializzati per le prestazioni, Direct3D 11 introduce una forma limitata di collegamento dello shader di runtime che consente la specializzazione dello shader quasi ottimale durante l'esecuzione di un'applicazione. Ciò viene ottenuto specificando le implementazioni di funzioni specifiche nel codice shader quando l'shader viene assegnato alla pipeline, consentendo al driver di inline istruzioni native shader invece di forzare rapidamente il driver a ricompilare il linguaggio intermedio in istruzioni native con la nuova configurazione. Lo sviluppo shader viene esposto tramite l'introduzione di classi e interfacce a HLSL. Per una dimostrazione, vedere l'esempio Di collegamento Dinamico Shader 11 disponibile tramite il browser di esempio.
Rasterizzatore avanzato di Windows (WARP)
Disponibile in questo SDK tramite Direct3D 11 e infine anche tramite Direct3D 10.1, WARP è un rasterizzatore con scalabilità a più core veloce che è completamente conforme a Direct3D 10.1. L'uso di questa tecnologia è semplice come passare il flag di D3D_DRIVER_TYPE_WARP nella creazione del dispositivo.
Direct3D 10 e Direct3D 11 su hardware Direct3D 9 (D3D10 Livello 9)
Disponibile in questo SDK tramite Direct3D 11 e infine tramite Direct3D 10.1, l'API Direct3D può essere di destinazione della maggior parte dell'hardware Direct3D 9 e dell'hardware Direct3D 10, Direct3D 10.1 e Direct3D 11. Ciò viene ottenuto fornendo il meccanismo a livello di funzionalità, che raggruppa l'hardware in sei categorie a seconda della funzionalità: 9_1, 9_2, 9_3, 10_0, 10_1 e 11_0. Una scheda soddisfa solo un livello di funzionalità se è completamente conforme a tale livello e ogni livello è un super set rigoroso di quelli sottostanti. La funzionalità è minimamente emulata per garantire che non vengano rilevate scogliere di prestazioni impreviste. Pertanto, le funzionalità come Geometry Shader non sono disponibili per destinazioni di livello Direct3D 9.
File binari di runtime
Tutti i file binari di runtime forniti nell'anteprima tecnica Direct3D 11 che saranno disponibili in Windows 7 e Windows Vista SP1 vengono installati con l'SDK e vengono etichettati come componenti "Beta" (ad esempio D3D11_beta.DLL). Tutti i componenti con etichetta beta sono time-bombed. Per creare progetti per valutare questi nuovi componenti, è necessario collegare le librerie di importazione beta equivalenti ,ad esempio D3D11_beta.lib. Se si dispone di una copia PDC di Windows 7, le intestazioni, i lib e i pdbs forniti in Windows SDK con la compilazione sono appropriati per lo sviluppo usando i componenti Direct3D 11 che forniscono in Windows 7. Riservare l'uso delle intestazioni, libs e pdbs in questo SDK ai componenti beta forniti qui.
D3DX11
D3DX11 supporta attualmente il caricamento della trama, la compilazione dello shader, il caricamento dei dati e le funzioni thread di lavoro per le risorse Direct3D 11. In futuro, questo componente fornirà più tecnologie disponibili in D3DX10. La funzionalità di compilazione shader viene inoltre fornita direttamente tramite il componente Compilatore Direct3D, descritto di seguito.
Compilatore HLSL e Direct3D
Il compilatore HLSL presenta diverse nuove funzionalità per supportare le nuove tecnologie disponibili in Direct3D 11. Ciò include la programmazione orientata agli oggetti tramite interfacce e classi, una sintassi di indicizzazione diretta per i carichi di risorse e la parola chiave "precisa" per garantire che tutte le operazioni eseguite con una variabile specifica rispettino le regole a virgola mobile rigorosa. Quasi tutte le nuove funzionalità linguistiche hanno funzionalità valide sulle destinazioni shader esistenti. Oltre a supportare tutti gli shader Direct3D 9, Direct3D 10, Direct3D 10.1 e Direct3D 11 shader, il compilatore HLSL supporta anche le destinazioni speciali necessarie per scrivere shader per destinazioni Direct3D 10 Level 9. Il compilatore D3D è ora accessibile direttamente all'esterno di D3DX10 e D3DX11 tramite D3DCompiler.H e D3DCompiler.lib. Con questi nuovi file, un'applicazione non è necessaria per collegare D3DX per eseguire la compilazione di runtime e un'applicazione non è necessaria per includere il compilatore se è necessaria solo la funzionalità D3DX.
Rasterizer di riferimento D3D11
Il rasterizzatore di riferimento fornisce un'implementazione di rasterizzazione gold-standard per la valutazione delle funzionalità Direct3D 11 non ancora disponibili nell'hardware. Il rasterizzatore di riferimento viene fornito anche come modo per verificare l'accuratezza di un'implementazione hardware specifica allo standard di rasterizzazione. Il rasterizzatore di riferimento è progettato per la correttezza, non per le prestazioni. Per creare un dispositivo di riferimento, passare semplicemente il flag di D3D_DRIVER_TYPE_REFERENCE alla creazione del dispositivo.
Livelli SDK D3D11
I livelli SDK Direct3D11 forniscono un meccanismo per tenere traccia dell'operazione del runtime Direct3D 11 durante lo sviluppo. Attualmente questa operazione viene usata per fornire informazioni di debug utili, che non solo includono errori sull'uso improprio, ma anche avvisi che consigliano l'uso consigliato del runtime e spesso forniscono informazioni approfondite e utili per il debug. È consigliabile che l'output di debug da livelli D3D11 SDK sia attivato in qualsiasi momento durante lo sviluppo e un'applicazione non genera alcun output di debug durante l'esecuzione prima che venga rilasciato o usato con PIX per Windows per la profilatura. L'abilitazione del livello di debug è semplice come passare il flag di D3D11_CREATE_DEVICE_DEBUG in fase di creazione del dispositivo. Gli sviluppatori sono fortemente invitati a usare livelli nelle compilazioni di debug. I livelli non sono consigliati per l'uso nelle compilazioni del profilo o della versione.
Nuovi esempi
Questa versione include quattro nuovi esempi.
  • L'esempio Dynamic Shader Linkage 11 illustra l'uso delle interfacce shader Model 5 e del supporto direct3D 11 per collegare i metodi di interfaccia shader in fase di esecuzione.
  • L'esempio HDRToneMappingCS11 illustra come configurare ed eseguire Compute Shader(CS per breve tempo), che è una delle nuove funzionalità più interessanti di Direct3D 11. Anche se l'esempio usa solo il cs per implementare il mapping del tono HDR, il concetto deve estendersi facilmente ad altri algoritmi di post-elaborazione e calcoli più generali.
  • L'esempio MultithreadedRendering11 illustra come suddividere il rendering tra più thread, con sovraccarico molto basso.
  • Il nuovo esempio SubD11 è molto simile all'esempio SubD10 nell'SDK DirectX, ad eccezione del fatto che è stato migliorato per sfruttare tre nuove fasi della pipeline Direct3D 11: lo shader dello scafo, il tessellatore e lo shader di dominio.

Funzionalità introdotte nelle versioni precedenti