Moment! "Viele"? Doch wohl eher "manche". Oder gar eher "wenige".
Ja, viele oder wurden DX12 und Vulkan in der Mittagspause von zwei Geeks spezifiziert und irgendein Nerd im Keller von Googel meinte, hey cool, wie wäre es wenn wir das in die neuste Version von Android packen?
DICE, Oxide, Eidos Montreal, Epic, Unity, Crytek, Chris Roberts Space Industries, id tech, Arkane Studios, Crystal Dynamics, Nixxes usw.
Bei jedem sitzt ein oder mehrere Engine-Architekten, welche dafür aktiv geworben haben und/oder es aktuell umsetzen bzw. werden.
Das heißt aber noch lange nicht, dass sich "viele" Entwicklern gern Gedanken darüber machen wollen, ob ihr Spiel auf Architektur X oder Y läuft. Eher im Gegenteil. Nicht ohne Grund gibt es fest definierte APIs. Damit Entwickler A, der Ahnung von der Architektur hat, seinen Teil der Arbeit macht und Entwickler B, der eine Videoengine programmieren möchte, seinen Teil. Und nicht B Beides machen muss.
DX12 ist eine fest definierte API, die Entwickler müssen nicht für jeden IHV einen angepassten Renderpfad schreiben, Oxide hat z.B. nur einen für alle IHVs.
Andere setzen auf spezielle Anpassungen pro IHV, andere tun dies auch schon lange unter DX11.
Jedem dem das zu technisch ist, kann weiterhin die älteren APIs verwenden oder lizenzierte Engines/Middlewares verwenden.
Frage: Warum hat man überhaupt jemals angefangen HighLevel Programmiersprachen (C++ z.B.) zu entwickeln, wenn doch Assembler viel effizienter ist?
Weil die Komplexität und Lesbarkeit einfach zu schlecht im Vergleich ausfällt und man auch viele Vorteile bezüglich der Portabilität genießen kann.
DX12 ist bei weitem nicht so ein krasser Vergleich.
Einfach: Weil es Vorteile hat. So zu tun, als wäre DX12 jetzt die Quadratur des Kreises und einfach nur per se "besser" ist Quatsch. Das wird es für manche sein, gern auch viele, wenn du das möchtest (ich denke eher: Wenige), aber sicherlich nicht für "Alle".
Das achte Weltwunder verkaufe ich dir jedenfalls nicht.
Ich schreibe lediglich Argumente nieder, wieso man nicht gleich DX12 als mies abstempeln sollte bzw. wieso sich die neuen APIs durchsetzen werden.
Einige sehen schon einen massiven Fehlschlag klar vor Augen und ein geringeres Engagement was die Zukunft angeht, dagegen argumentiere ich, dass bedeutet allerdings nicht das ich DX12 als Heiland für jetzt sofort und spätestens nächste Woche anpreise.
Viele der heute üblichen Optimierungen sind mit DX12 oder auch Vulkan nicht mehr möglich, weil die Hardware direkt angesprochen wird. Da mag es eine API geben - aber die geht eben Bare-to-the-Metal. Da kann der IHV dann nichts mehr dran ändern. Wenn der Entwickler es völlig verkackt (wie es ja oft genug tun, Beispiele gibt es - gerade in letzter Zeit - massenhaft) dann hat er es und der IHV kann darin nix tun.
Low-Level-APIs bzw. coding to the metal sind aber auch Bezeichnungen worüber man sich streiten kann.
Tobias Hector von Imagination, Mitglied der Khronos Group, mag die "handelsübliche" Bezeichnung z.B. nicht, er spricht viel lieber von explicit APIs.
Argumente dafür sind, dass die grundlegende Abstraktion oder Arbeitsweise mehr oder weniger auf dem gleichen Level sitzt wie davor, nach wie vor sind alle Shader abstrahiert durch eine Shader-Sprache wie HLSL, nach wie vor gibt es State-Modelle und Objekte, die erst vom Treiber aufgelöst werden und womit jede spezifizierte Hardware angesprochen werden kann.
Viele Dinge die früher der Treiber gemacht hat, sind jetzt im Aufgabenbereich der Entwickler, wobei man die Ansicht vertreten kann, dass man sich hier nicht vertikal nach unten bewegt, sondern horizontal in die Breite.
Man kann natürlich anderer Ansicht sein, der IHV kann im Zweifel weniger retten, aber wenn der Entwickler es früher verkackt hat, dann hilft auch die größere Abstraktion unter DX11 nicht, Batman: Arkham Knight oder Mafia 3 werden auch durch AMDs oder Nvidias Treibergurus nicht von sich aus deutlich besser laufen.
Heute, mit DX11, gibt es eine API auf der Seite A, beim Entwickler und eine auf Seite B beim IHV. Der IHV kann auf seiner Seite schalten und walten, wie er will. Woher kommen wohl die hohen Steigerungen durch "einfach" Treiberupdates? Doch deswegen, weil der IHV auf seiner Seite aufräumt und nicht deshalb, weil der Spieleentwickler optimiert (kann er auch, ja, aber wenn zwei Treiberversionen 10% unterschiedliche Performance haben, dann ist daran der IHV "Schuld").
Das ist mit DX12 so nicht mehr bzw. nur noch eingeschränkt möglich.
Das ist teilweise auch der Knackpunkt am neuen Design, welche Aufgaben sollten im Treiber zu finden sein und welche auf Seiten der Anwendung?
Hier gibt es Pro/Kontra-Argumente, ob es sich allgemein als richtiger Kompromiss herausstellt, wird man dann bei zukünftigen Umsetzungen sehen und zwar am Besten welche, die nicht die erste darstellen und dabei nicht nur den DX11-artigen Unterbau mit DX12 nachahmen und entsprechend wenig attraktive Resultate hervorbringen.