DirectX 12 a été présenté à la GDC 2014
La bibliothèque arrivera durant l'année 2015

Le , par LittleWhite, Responsable 2D/3D/Jeux
Comme cela avait été annoncé il y a quelques semaines, Microsoft a fait une présentation durant la Game Developers Conference sur DirectX 12, la nouvelle version de la bibliothèque de jeux.
La société veut proposer une bibliothèque plus rapide et efficace que jamais. Le but est de permettre l'affiche de scènes plus riches, ayant plus d'objets et d'utiliser la totalité des dernières cartes graphiques. Contrairement aux anciennes versions, DirectX 12, n'est pas uniquement pensé pour les PC et fonctionnera aussi sur les téléphones, les tablettes et bien sûr, la Xbox One.


Différences d'utilisation du CPU sur 3DMark (en haut DirectX 11, en bas DirectX12)

Pour remplir ces objectifs, DirectX 12 introduit un nouveau pipeline permettant une très grande amélioration de l'efficacité des algorithmes, notamment ceux liés à la transparence indépendante de l'ordre d'affichage, la détection de collision et la sélection de géométrie (geometry culling). Les jeux vont bénéficier d'un surcoût diminué pour le GPU grâce à des fonctionnalités telles que les tables de descripteurs et des objets d'états du pipeline concis.
En plus des améliorations de la bibliothèque, DirectX 12 sera accompagné d'outils dès sa sortie. Ceux-ci vous permettront de mieux tirer parti des nouvelles fonctionnalités et d'améliorer grandement les performances de vos jeux.

Objets d'états du pipeline

La représentation du pipeline disponible dans Direct3D 11, à travers les objets d'états de assembleur d'entrées, du pixel shader ou du rasterizer donnaient un convenable niveau d'abstraction mais ne correspondait pas assez bien avec le matériel. Souvent, cela est dû aux dépendances entre les états. Par exemple, les GPU rassemblent le pixel shader et l'output merger en une simple représentation matérielle mais pas pour la bibliothèque Direct3D 11 faisant que le pilote ne peut gérer cela que lorsque les deux états sont définis (souvent, au moment du rendu). Dans Direct3D 12, ce problème est réglé à l'aide des objets d'état du pipeline (Pipeline State Object (PSO)) qui sont finalisés dès la création. Cela permet aux pilotes et aux cartes graphiques de directement convertir l'objet en instructions natives. Le PSO actuellement en cours d'utilisation peut être changé dynamiquement et le matériel n'aura qu'à copier les quelques données dans les registres adéquats sans avoir à recalculer l'ensemble.

Listes de commandes et bundles

Dans Direct3D 11, toutes les soumissions de jobs sont effectuées dans le contexte immédiat faisant qu'il n'y a qu'un seul flux allant au GPU. Afin de gérer le multithreading, les jeux utilisent des contextes différés, mais ceux-ci ne correspondent pas parfaitement au matériel. Direct3D 12 introduit donc un nouveau modèle pour soumettre des jobs basés sur des listes de commandes contenant toutes les informations nécessaires à exécuter le job. Chaque nouvelle liste contiendra les informations telles que le PSO à utiliser, quels sont les textures et tampons nécessaires et les arguments de l'appel de rendu. Comme chaque liste de commandes est indépendante, le pilote peut précalculer toutes les commandes GPU nécessaires.
En plus des listes de commandes, Direct3D 12 introduit un second niveau de pré-calcul : les bundles. Contrairement aux listes de commandes les bundles intègrent une forme d'héritage permettant leur réutilisation. Par exemple, si un jeu souhaite dessiner deux personnages avec différentes textures, la première approche serait d'enregistrer la liste de commandes avec deux ensembles identiques d'appels aux fonctions de rendu. Mais la seconde approche serait d'enregistrer un bundle qui dessine un seul personnage, puis "rejoue" le bundle une seconde fois sur la liste de commandes en utilisant d'autres textures. Dans ce second cas, le pilote n'a besoin de calculer les commandes qu'une seule fois.


Descripteurs de tas et tables

La liaison de ressources de Direct3D 11 est hautement abstraite et pratique, mais ne permet pas l'utilisation complète du matériel. À chaque fois qu'un jeu souhaite utiliser différentes ressources, il doit lier à nouveau les ressources et appeler la fonction de rendu.
Direct3D 12 change la façon de lier les ressources pour mieux correspondre au matériel et améliorer les performances. Pour cela, Direct3D 12 fournit un descripteur de tas dans lequel les jeux peuvent créer leurs vues de ressources permettant ainsi un mécanisme au GPU pour écrire directement la description de la ressource d'une manière native dans la mémoire. Ensuite, le jeu doit simplement spécifier les descripteurs utiles pour son rendu et le matériel n'a plus qu'à faire une simple copie de ces descripteurs pour les utiliser.

De plus, il est possible d'indexer dynamiquement les ressources dans les shaders et permettant de se passer des g-buffer.

Pour prouver cela, Microsoft montre le jeu Forza Motosport 5, un jeu de courses pour la XBox One. Grâce à DirectX 12, il a été possible aux développeurs de retrouver l'efficacité des consoles sur un PC.

NVIDIA a annoncé avoir travaillé en étroite collaboration avec Microsoft pour l'élaboration de cette nouvelle version de la bibliothèque. La société affirme avoir fourni déjà des kits de développement et des pilotes à 15 studios de développement.

La nouvelle version de DirectX est prévue pour 2015.

Votre opinion

Pensez-vous que Mantle a jeté un pavé dans la mare et force les autres bibliothèques à s'aligner sur la réduction du surcoût du pilote ? Pourquoi pensez-vous que cela est un point essentiel pour les prochaines versions de bibliothèques ?
Pensez-vous que les consoles seront rapidement rattrapées par les performances des PC ?
Que pensez-vous des bibliothèques comme Direct3D et OpenGL ? Quelles bibliothèques choisiriez-vous ?

Voir aussi

Actualité sur Mantle.

Ressource

Les tutoriels DirectX de Developpez.com. Aidez et investissez-vous dans la vie de la rubrique et la mis à disposition de tutoriel DirectX récents pour la communauté en me contactant !
Un aperçu détaillé de l'architecture de la PS4.

Source

Blog de développement Microsoft


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Bestel74 Bestel74 - Membre confirmé https://www.developpez.com
le 21/03/2014 à 19:07
Pensez-vous que les consoles seront rapidement rattrapées par les performances des PC ?

Elles ont devancé les PC à un moment ?
Avatar de CrankFlash CrankFlash - Membre régulier https://www.developpez.com
le 21/03/2014 à 22:14
Citation Envoyé par Bestel74  Voir le message
Elles ont devancé les PC à un moment ?

La news est légèrement mal traduite a ce niveau là. En fait, les consoles sont beaucoup plus efficaces que les PC.

DirectX offre un trade-off : une interface de programmation unique, en échange de performances plus faibles. (c'est comme la différence entre java et C++, le premier tourne sans modification sur toutes les plateformes avec un coût en performance, alors que le deuxième doit être adapté à chaque matériel/OS mais permet de coder très près du matériel et permet des optimisations très poussées).

Même si l'API est sensiblement la même sur PC et sur XBox One (DirectX 11), sur console, la matériel est unique et donc il n'y a pas de surcharge lié à la grande hétérogénéité du matériel comme sur un PC. l'API sur consoles n'est en fait qu'une couche très fine par dessus le pilote de la carte graphique et offre donc de meilleures performances.
À ça il faut rajouter que sur consoles il n'y a pas de changement de contexte entre user et kernel land pour les pilotes graphique (cause pas mal d'overhead sur PC), et tout un tas d'autres trucs (système d'exploitation coopératif sur PC vs accès exclusif aux ressources sur console, etc ...)
Avatar de Mr_Exal Mr_Exal - Membre expert https://www.developpez.com
le 24/03/2014 à 8:43
Ah bon? Il me semblait que, justement, parce que le matériel était trop "pourri" sur la Xbox One il était impossible de développer des jeux en 1080p facilement (vu qu'il faut passer non pas seulement par la ram de la carte graphique mais aussi par un périphérique qui est externe à celle ci), d'où le fait qu'il n'y a pour l'instant aucun jeu en 1080p sur One (ou très peu).

Par contre niveau optimisation, c'est clair que les développeurs peuvent le faire sur console sur pc c'est plus compliqué et ça prend plus de temps (de la bouche même d'un responsable chez EA l'optimisation sur pc est inutile car trop chère... Ce avec quoi je ne suis pas d'accord.)

Après, je suis ça de loin car de toute façon les jeux pc boufferont toujours les jeux consoles (au niveau graphismes généraux mais pas au niveau optimisation), donc je peux me tromper.

Concernant DX12 j'espère qu'ils ne le sortiront pas que sur Windows 8, sinon ...
Avatar de I_Pnose I_Pnose - Membre chevronné https://www.developpez.com
le 24/03/2014 à 12:53
Citation Envoyé par Mr_Exal  Voir le message
Concernant DX12 j'espère qu'ils ne le sortiront pas que sur Windows 8, sinon ...

"Je peux vous dire que rien n'est prévu pour Windows XP. Nous parlerons de Windows 7 plus tard" Citation du responsable développement de la partie graphique chez Microsoft (il se mouille pas trop quoi).
Avatar de Mr_Exal Mr_Exal - Membre expert https://www.developpez.com
le 24/03/2014 à 12:58
Ca pue le DX12 Windows 8 only dans un premier temps puis sur Seven dans un deuxième temps. Dx 11 est disponible sur xp au fait maintenant ?
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 24/03/2014 à 13:06
Non, DirectX 11 n'a jamais été intégré à Windows XP.
Avatar de I_Pnose I_Pnose - Membre chevronné https://www.developpez.com
le 24/03/2014 à 13:32
Les contraintes techniques (s'il y en avait) ne sont peut-être plus les même ; autant je peux concevoir que les systèmes Xp et Seven présentent des soucis de compatibilité entre eux, autant dans ce scénario (Seven et W8.x) je pense que ce serait purement marketing s'ils n’intégraient pas Dx12 dans Seven. Auquel cas, je ne suis pas certain que ça jouerait en leur faveur =/
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 24/03/2014 à 13:46
Il reste que j'ai du mal à vraiment comprendre ce qui a bloqué Microsoft de fournir DirectX 11 sur Windows XP. J'aimerai que l'on m'explique, car au final, toutes les nouvelles fonctionnalités des cartes graphiques sont bien disponibles à travers les nouvelles version d'OpenGL, qui elles, sont disponibles sous XP. Alors, je sais qu'il n'y a pas que Direct3D dans DirectX, mais tout de même, je ne vois pas du tout le blocage.
Avatar de Mr_Exal Mr_Exal - Membre expert https://www.developpez.com
le 24/03/2014 à 14:03
Citation Envoyé par LittleWhite  Voir le message
Il reste que j'ai du mal à vraiment comprendre ce qui a bloqué Microsoft de fournir DirectX 11 sur Windows XP. J'aimerai que l'on m'explique, car au final, toutes les nouvelles fonctionnalités des cartes graphiques sont bien disponibles à travers les nouvelles version d'OpenGL, qui elles, sont disponibles sous XP. Alors, je sais qu'il n'y a pas que Direct3D dans DirectX, mais tout de même, je ne vois pas du tout le blocage.

Je pense que c'est marketing ... Il me semble même avoir vu des DX11 non officiels tourner sous xp.
Avatar de I_Pnose I_Pnose - Membre chevronné https://www.developpez.com
le 24/03/2014 à 14:53
Citation Envoyé par LittleWhite  Voir le message
Il reste que j'ai du mal à vraiment comprendre ce qui a bloqué Microsoft de fournir DirectX 11 sur Windows XP. J'aimerai que l'on m'explique, car au final, toutes les nouvelles fonctionnalités des cartes graphiques sont bien disponibles à travers les nouvelles version d'OpenGL, qui elles, sont disponibles sous XP. Alors, je sais qu'il n'y a pas que Direct3D dans DirectX, mais tout de même, je ne vois pas du tout le blocage.

La raison officielle c'est que DirectX 11 a été en partie réécrit pour prendre en charge WDDM (Windows Display Driver Model) introduit par Windows Vista, ça et le nouveau modèle de pilote audio (toujours introduit par Vista). Et je crois même que ces changements sont arrivés avec DirectX 10 (qui ne serait donc pas compatible avec XP lui non plus).
Bon après je ne dis pas que le marketing n'a rien à voir dans tout ça hein ^^

Et concernant les versions officieuses de DirectX 10/11 sous XP, de souvenir c'était de gros maleware bien gras.
Offres d'emploi IT
Formateur .net H/F
Adaming - Ile de France - Paris (75000)
Développeur web h/f
Collectivité Territoriale de Guyane - DOM-TOM Guyane - Cayenne
Développeur C++ H/F
BULL FR - Provence Alpes Côte d'Azur - Marseille (13000)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique 2D - 3D - Jeux : LittleWhite -