Was ist Direct3D 12?
DirectX 12 führt die nächste Version von Direct3D — in die 3D-Grafik-API im Kern von DirectX ein. 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 insofern einzigartig, als es eine niedrigere Hardwareabstraktionsebene als frühere Versionen bietet, wodurch Sie die CPU-Skalierung Ihres Titels (oder einer anderen Anwendung) mit mehreren Kernen erheblich verbessern können. Zum einen ist Ihr Titel bei Direct3D 12 für die eigene Speicherverwaltungverantwortlich. Darüber hinaus profitieren Ihre Titel und Anwendungen durch Die Verwendung von Direct3D 12 von reduziertem GPU-Mehraufwand durch Features wie Befehlswarteschlangen und Listen, Deskriptortabellenund präzise Pipelinezustandsobjekte.
Direct3D 12 und Direct3D 11.3 stellen eine Reihe neuer Features für die Renderingpipeline vor.
- Konservative Rasterung, um eine zuverlässige Treffererkennung zu ermöglichen.
- Volumekachelressourcen, um zu ermöglichen, dass gestreamte dreidimensionale Ressourcen so behandelt werden, als wären sie alle im Videospeicher.
- Rasterizer-geordnete Ansichten, um zuverlässiges Transparenzrendering zu ermöglichen.
- Festlegen des Schablonenverweis in einem Shader, um spezielle Schatten und andere Effekte zu ermöglichen.
- Verbesserte Texturzuordnung und Auslastungen der typisierten ungeordneten Zugriffsansicht (UAV).
Wie tief sollte ich in Direct3D 12 investieren?
Direct3D 12 bietet Grafikentwicklern vier Hauptvorteile (im Vergleich zu Direct3D 11).
- Erheblich reduzierter CPU-Mehraufwand.
- Erheblich 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 ist für fortgeschrittene Grafikprogrammierer konzipiert. Sie erfordert ein hohes Maß an Grafikkenntnissen und ein hohes Maß an Feinabstimmung. Direct3D 12 ist darauf ausgelegt, Multithreading, eine sorgfältige CPU-/GPU-Synchronisierung und 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 davon erledigen die ganze Arbeit. Das bedeutet, dass Sie als Grafikentwickler in der Lage sein sollten, Dies zu erfahren — und den vollständigen API-Satz zu bewältigen, — ohne sich zu viele API-Namen merken zu müssen.
Direct3D 11 ist neben Direct3D 12 weiterhin eine geeignete Option. Viele der neuen Renderingfunktionen von Direct3D 12 sind in Direct3D 11.3verfügbar. Direct3D 11.3 ist eine Grafik-Engine-API auf niedriger Ebene. und Direct3D 12 gehen noch tiefer.
Es gibt mindestens zwei Möglichkeiten, wie Ihr Entwicklungsteam sich einem Direct3D 12-Titel nähern kann.
Ausschließliches Verwenden von Direct3D 12
Für ein Projekt, das alle Vorteile von Direct3D 12 nutzt, sollten Sie von Grund auf eine hochgradig 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 äußerst effiziente 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 Zeichnen-Aufrufe zu erhöhen, sodass Die Grafik noch mehr Freundlicheres hinzufügt.
Die Investition in die Programmierung ist erheblich, und Sie sollten das Debuggen und instrumentieren des Projekts von Anfang an in Erwägung ziehen. Threading, Synchronisierung und andere Zeitsteuerungsfehler können eine Herausforderung darstellen.
Verwenden von Direct3D 12 zusammen mit Direct3D 11
Ein kürzerer Ansatz wäre die Behebung bekannter Engpässe in Ihrem Direct3D 11-Titel. Sie können diese mithilfe von Direct3D 12-Interop- und/oder D3D11On12-Techniken beheben, mit denen die beiden API-Versionen zusammenarbeiten können. Dieser Ansatz minimiert die Änderungen, die an einer vorhandenen Direct3D 11-Grafik-Engine erforderlich sind. Die Leistungssteigerungen sind jedoch auf die Beseitigung des Engpasses beschränkt, den der Direct3D 12-Code adressiert.
Videos zu Microsoft DirectX 12 (und Grafikschulungen)
Erweiterte Schulung für Grafikentwickler. Diese Videos behandeln Themen wie Präsentationsmodi, Portieren zu DirectX 12, konservative Rasterung, Grafiktools, Angle, Win2D und Ereignisse wie GDC, Build und mehr. Technischen DirectX 12-Inhalten wird DirectX 12 vorangestellt. Hier finden Sie Tipps und Tricks direkt vom Direct3D 12-Featureteam. Wir möchten Ihnen helfen, unsere neuesten Releases und Tools zu verwenden, um Ihr Spiel optimal zu gestalten.
Zusammenfassung
Bei Direct3D 12 geht es um eine drastische Grafik-Engine-Leistung. Einfache Entwicklung, Konstrukte auf hoher Ebene und Compilerunterstützung wurden zurückskaliert, um dies zu ermöglichen. Treiberunterstützung und einfaches Debuggen bleiben mit Direct3D 11 vergleichbar.
Direct3D 12 ist neu. Gebiet, das darauf wartet, dass der wissbegierige Experte kommt und ihn untersucht.