Was ist Direct3D 12?
DirectX 12 führt die nächste Version von Direct3D ein– die 3D-Grafik-API im Herzen von DirectX. Direct3D 12 ist schneller und effizienter als jede vorherige Version. Direct3D 12 ermöglicht umfangreichere Szenen, mehr Objekte, komplexere Effekte und die vollständige Nutzung moderner GPU-Hardware.
Wie kann Direct3D 12 so viel schneller und effizienter sein?
Direct3D 12 ist einzigartig, da es eine niedrigere Ebene der Hardware-Abstraktion bietet als frühere Versionen, wodurch Sie die Multi-Core-CPU-Skalierung Ihres Titels (oder einer anderen Anwendung) erheblich verbessern können. Zum einen ist Ihr Titel mit Direct3D 12 für die eigene Speicherverwaltung verantwortlich. Darüber hinaus profitieren Ihre Titel und Anwendungen durch die Verwendung von Direct3D 12 vom reduzierten GPU-Aufwand durch Features wie Befehlswarteschlangen und -listen, Deskriptortabellen und präzise Pipelinezustandsobjekte.
Direct3D 12 und Direct3D 11.3 führen eine Reihe neuer Features für die Renderingpipeline ein.
- Konservative Rasterung , um eine zuverlässige Treffererkennung zu ermöglichen.
- Volumekachelressourcen , damit gestreamte dreidimensionale Ressourcen so behandelt werden können, als ob sie alle im Videospeicher wären.
- Rasterizergeordnete Ansichten , um zuverlässiges Transparenzrendering zu ermöglichen.
- Festlegen des Schablonenverweis in einem Shader, um spezielle Schattierungen und andere Effekte zu ermöglichen.
- Verbesserte Texturzuordnung und typisierte UAV-Ladevorgänge (Unordered Access View).
Wie tief sollte ich in Direct3D 12 investieren?
Direct3D 12 bietet vier Standard Vorteile für Grafikentwickler (im Vergleich zu Direct3D 11).
- Erheblich reduzierter CPU-Overhead.
- Deutlich reduzierter Stromverbrauch.
- Bis zu (ungefähr) 20 % Verbesserung der GPU-Effizienz.
- Plattformübergreifende Entwicklung für ein Windows 10 Gerät (PC, Tablet, Konsole, Mobil).
Direct3D 12 wurde für fortgeschrittene Grafikprogrammierer entwickelt. Es erfordert erhebliche Grafikkenntnisse und ein hohes Maß an Feinabstimmung. Direct3D 12 wurde entwickelt, um Multithreading, sorgfältige CPU/GPU-Synchronisierung sowie den Übergang und die Wiederverwendung von Ressourcen von einem Zweck zu einem anderen vollständig zu nutzen. Dies sind Techniken, die eine beträchtliche Menge an Programmierkenntnissen auf Speicherebene erfordern.
Ein weiterer Vorteil von Direct3D 12 ist der geringe API-Speicherbedarf. Es gibt etwa 200 Funktionen; und etwa ein Drittel von diesen leisten alle schweren Hebevorgänge. Das bedeutet, dass Sie als Grafikentwickler in der Lage sein sollten, sich über den vollständigen API-Satz zu informieren – und master – ohne sich zu viele API-Namen merken zu müssen.
Direct3D 11 ist weiterhin eine praktikable Option neben Direct3D 12. Viele der neuen Renderingfeatures von Direct3D 12 sind in Direct3D 11.3 verfügbar. Direct3D 11.3 ist eine Low-Level-Grafik-Engine-API. und Direct3D 12 geht noch tiefer.
Es gibt mindestens zwei Möglichkeiten, wie Ihr Entwicklungsteam einen Direct3D 12-Titel angehen kann.
Ausschließliche Verwendung von Direct3D 12
Für ein Projekt, das alle Vorteile von Direct3D 12 am besten nutzt, sollten Sie von Grund auf eine hoch angepasste Direct3D 12-Engine entwickeln.
Wenn Sie als Grafikentwickler die Verwendung und Wiederverwendung von Ressourcen in Ihren Titeln verstehen und dies nutzen können, indem Sie das Hochladen und Kopieren minimieren, können Sie eine hocheffiziente Engine für diese Titel entwickeln und anpassen. Die Leistungsverbesserungen können sehr erheblich sein, wodurch die CPU-Zeit freigegeben wird, um die Anzahl der Draw-Aufrufe zu erhöhen, und so ihren Grafiken mehr Glanz zu geben.
Die Programmierinvestitionen sind erheblich, und Sie sollten das Debuggen und die Instrumentierung des Projekts von Anfang an in Betracht ziehen. Threading-, Synchronisierungs- und andere Zeitsteuerungsfehler können eine Herausforderung darstellen.
Gemeinsame Verwendung von Direct3D 12 mit Direct3D 11
Ein kürzerer Ansatz wäre, bekannte Engpässe in Ihrem Direct3D 11-Titel zu beheben. Sie können diese Mithilfe von Direct3D 12-Interop- und/oder D3D11On12-Techniken behandeln, die die Zusammenarbeit der beiden API-Versionen ermöglichen. Dieser Ansatz minimiert die Änderungen, die an einer vorhandenen Direct3D 11-Grafik-Engine erforderlich sind. Die Leistungssteigerungen sind jedoch auf die Entlastung des Engpasses beschränkt, den der Direct3D 12-Code behebt.
Microsoft DirectX 12-Videos (und Grafikschulungen)
Verbesserte Schulung für Grafikentwickler. In diesen Videos werden Themen wie Präsentationsmodi, Portierung zu DirectX 12, konservative Rasterung, Grafiktools, Angle, Win2D und Ereignisse wie GDC, Build und mehr behandelt. Technische DirectX 12-Inhalte sind DirectX 12 vorangestellt. Hier erhalten Sie Tipps und Tricks direkt vom Direct3D 12-Featureteam. Wir möchten Ihnen helfen, unsere neuesten Releases und Tools zu verwenden, um Ihr Spiel so gut wie möglich zu machen!
Zusammenfassung
Bei Direct3D 12 geht es um eine dramatische Grafik-Engine-Leistung. Einfache Entwicklung, allgemeine Konstrukte und Compilerunterstützung wurden zurückskaliert, um dies zu ermöglichen. Treiberunterstützung und einfaches Debuggen bleiben mit Direct3D 11 gleich.
Direct3D 12 ist Neuland. Gebiet, das darauf wartet, dass der neugierige Experte kommt und erkundet.