Condividi tramite


Che 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 di qualsiasi versione precedente. Direct3D 12 consente scene più complete, più oggetti, effetti più complessi e l'utilizzo completo dell'hardware GPU moderno.

In che modo Direct3D 12 può essere molto più veloce ed 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 multi-core del titolo (o di un'altra applicazione). Per prima cosa, con Direct3D 12, il tuo titolo è responsabile della propria gestione della memoria . Inoltre, usando Direct3D 12, i titoli e le applicazioni traggono vantaggio da un sovraccarico GPU ridotto tramite funzionalità quali le code di comandi ed elenchi, le tabelle dei descrittori e gli oggetti di stato della pipeline concisi .

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

  • Rasterizzazione conservativa per abilitare il rilevamento affidabile delle collisioni.
  • risorse volumetriche a piastrelle per consentire la gestione delle risorse tridimensionali trasmesse in streaming come se fossero tutte in memoria video.
  • viste ordinate da Rasterizer per consentire il rendering affidabile della trasparenza.
  • Impostazione del riferimento agli stencil all'interno di uno shader per attivare l'ombreggiatura speciale e altri effetti.
  • Miglioramento della mappatura delle texture e dei caricamenti delle viste di accesso non ordinato tipizzate (UAV).

Quanto devo investire profondamente in Direct3D 12?

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

  • Notevole riduzione del sovraccarico della CPU.
  • Riduzione significativa del consumo di energia.
  • Fino a 20% di miglioramento nell'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, l'attenta sincronizzazione della CPU/GPU e la transizione e il riutilizzo delle risorse da uno scopo a un 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 queste si occupa di tutto il lavoro più pesante. Ciò significa che, in qualità di sviluppatore grafico, dovresti essere in grado di informarti e padroneggiare il set completo di API 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, devi sviluppare un motore Direct3D 12 altamente personalizzato da zero.

Se, come sviluppatore di grafica, comprendi l'uso e il riutilizzo delle risorse all'interno dei tuoi titoli e riesci a ridurre al minimo il caricamento e la copia, allora puoi sviluppare e personalizzare un motore altamente efficiente per quei titoli. I miglioramenti delle prestazioni potrebbero essere molto notevoli, liberando tempo del CPU per aumentare il numero di chiamate di disegno e quindi aggiungendo più lucentezza 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 temporizzazione possono risultare complessi.

Usare Direct3D 12 in concerto con Direct3D 11

Un approccio a breve termine consiste nell'affrontare eventuali colli di bottiglia noti nel titolo Direct3D 11. È possibile risolvere questi problemi usando 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 grafico Direct3D 11 esistente. Tuttavia, i miglioramenti delle prestazioni saranno limitati alla risoluzione 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 suggerimenti e trucchi direttamente dal team delle 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 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 alla pari con Direct3D 11.

Direct3D 12 è un nuovo territorio. Territorio che attende l'esperto curioso che venga ad esplorare.