Share via


Cos'è Direct3D 12?

DirectX 12 introduce la versione successiva di Direct3D, ovvero l'API grafica 3D al centro di DirectX. Direct3D 12 è più veloce ed efficiente rispetto a qualsiasi versione precedente. Direct3D 12 consente scene più avanzate, più oggetti, effetti più complessi e l'utilizzo completo dell'hardware GPU moderno.

Come può Direct3D 12 essere molto più veloce e più efficiente?

Direct3D 12 è unico in quanto fornisce un livello inferiore di astrazione hardware rispetto alle versioni precedenti, che consente di migliorare significativamente il ridimensionamento della CPU multicore del titolo (o di un'altra applicazione). Per una cosa, con Direct3D 12, il titolo è responsabile della gestione della memoria. Inoltre, usando Direct3D 12, i titoli e le applicazioni traggono vantaggio da un sovraccarico GPU ridotto tramite funzionalità quali code di comandi ed elenchi, tabelle del descrittore e oggetti concisi dello stato della pipeline.

Direct3D 12 e Direct3D 11.3 introducono un set di nuove funzionalità per la pipeline di rendering.

  • Rasterizzazione conservativa per abilitare il rilevamento affidabile degli hit.
  • Risorse affiancate del volume per consentire la gestione di risorse tridimensionali in streaming come se fossero tutte in memoria video.
  • Viste ordinate da Rasterizer per abilitare il rendering affidabile della trasparenza.
  • Impostazione del riferimento stencil all'interno di uno shader per abilitare l'ombreggiatura speciale e altri effetti.
  • Miglioramento del mapping delle trame e caricamenti della visualizzazione di accesso non ordinato (UAV) tipizzata.

Quanto devo investire profondamente in Direct3D 12?

Direct3D 12 offre quattro vantaggi principali per gli sviluppatori di grafica (rispetto a Direct3D 11).

  • Notevolmente ridotto il sovraccarico della CPU.
  • Riduzione significativa del consumo energetico.
  • Miglioramento fino al 20% circa dell'efficienza della GPU.
  • Sviluppo multipiattaforma per un dispositivo Windows 10 (PC, tablet, console, dispositivi mobili).

Direct3D 12 è progettato per i programmatori di grafica avanzati da usare. Richiede un'esperienza grafica significativa e un elevato livello di ottimizzazione. Direct3D 12 è progettato per usare completamente il multithreading, un'attenta sincronizzazione della CPU/GPU e la transizione e il riutilizzo delle risorse da uno scopo all'altro. Si tratta di tecniche che richiedono una notevole quantità di competenze di programmazione a livello di memoria.

Un altro vantaggio che Direct3D 12 ha è il footprint dell'API ridotto. Ci sono circa 200 funzioni; e circa un terzo di quelli fanno tutto il pesante sollevamento. Ciò significa che, in qualità di sviluppatore di grafica, dovrebbe essere in grado di informare voi stessi su e master, il set di API completo senza dover memorizzare troppi nomi di API.

Direct3D 11 continua a essere un'opzione praticabile insieme a Direct3D 12. Molte delle nuove funzionalità di rendering di Direct3D 12 sono disponibili in Direct3D 11.3. Direct3D 11.3 è un'API del motore grafico di basso livello; e Direct3D 12 diventa ancora più profondo.

Esistono almeno due modi in cui il team di sviluppo può affrontare un titolo Direct3D 12.

Usare Esclusivamente Direct3D 12

Per un progetto che sfrutta tutti i vantaggi di Direct3D 12, è consigliabile sviluppare un motore Direct3D 12 altamente personalizzato da zero.

Gli sviluppatori di grafica possono comprendere l'uso e il riutilizzo delle risorse all'interno dei titoli e sfruttarli riducendo al minimo il caricamento e la copia, quindi è possibile sviluppare e personalizzare un motore estremamente efficiente per tali titoli. I miglioramenti delle prestazioni potrebbero essere molto notevoli, liberando il tempo di CPU per aumentare il numero di chiamate di disegno e quindi aggiungendo più luster alla grafica.

L'investimento di programmazione è significativo ed è consigliabile prendere in considerazione il debug e la strumentazione del progetto fin dall'inizio. Il threading, la sincronizzazione e altri bug di intervallo possono risultare complessi.

Usare Direct3D 12 in concerto con Direct3D 11

Un approccio a breve termine consiste nell'affrontare colli di bottiglia noti nel titolo di Direct3D 11. È possibile risolvere questi problemi usando le tecniche di interoperabilità Direct3D 12 e/o D3D11On12 , che consentono alle due versioni dell'API di interagire. Questo approccio riduce al minimo le modifiche necessarie a un motore di grafica Direct3D 11 esistente. Tuttavia, i miglioramenti delle prestazioni saranno limitati al rilievo del collo di bottiglia a cui si rivolge il codice Direct3D 12.

Video di Microsoft DirectX 12 (e formazione grafica)

Istruzione avanzata per sviluppatori di grafica. Questi video trattano argomenti come modalità di presentazione, conversione in DirectX 12, rasterizzazione conservativa, strumenti grafici, Angle, Win2D ed eventi come GDC, Build e altro ancora. Il contenuto Tecnico DirectX 12 è preceduto da DirectX 12. Vieni qui per imparare suggerimenti e consigli direttamente dal team di funzionalità di Direct3D 12. Vogliamo aiutarti a usare le versioni e gli strumenti più recenti per rendere il tuo gioco il migliore possibile!

Conclusione

Direct3D 12 riguarda tutte le prestazioni drammatiche del motore grafico. La facilità di sviluppo, i costrutti di alto livello e il supporto del compilatore sono stati ridimensionati per abilitare questa funzionalità. Il supporto dei driver e la facilità di debug rimangono invariati con Direct3D 11.

Direct3D 12 è un nuovo territorio. Territorio in attesa che l'esperto inquisitivo venga a esplorare.