Nouveautés de la version d’évaluation technique de Direct3D 11 de novembre 2008

Cette version de Direct3D 11 contient de nouvelles fonctionnalités, outils et documentation.

Élément Description
Pavage
Direct3D 11 fournit des étapes de pipeline supplémentaires pour prendre en charge le pavage en temps réel des primitives d’ordre élevé. Avec des fonctionnalités largement programmables, cette fonctionnalité permet de nombreuses méthodes différentes d’évaluation des surfaces d’ordre élevé, y compris les surfaces de subdivision à l’aide de techniques d’approximation, de correctifs de Béziers, de basculement adaptatif et de mappage de déplacement. Cette fonctionnalité étant disponible uniquement sur le matériel de classe Direct3D 11, pour évaluer cette fonctionnalité, vous devez utiliser le rastériseur de référence. Pour une démonstration de la mise en action, case activée l’exemple SubD11 disponible via l’exemple De navigateur d’exemples.
Nuanceur de calcul
Le nuanceur de calcul est une étape supplémentaire indépendante du pipeline Direct3D 11 qui permet l’informatique à usage général sur le GPU. En plus de toutes les fonctionnalités de nuanceur fournies par le cœur de nuanceur unifié, le nuanceur de calcul prend également en charge les lectures et écritures éparses dans les ressources via des vues d’accès non ordonnées, un pool de mémoire partagée au sein d’un groupe de threads en cours d’exécution, des primitives de synchronisation, des opérateurs atomiques et de nombreuses autres fonctionnalités avancées en parallèle des données. Une variante du nuanceur de calcul Direct3D 11 a été activée dans cette version qui peut fonctionner sur du matériel de classe Direct3D 10. Il est donc possible de développer des nuanceurs de calcul sur du matériel réel, mais un pilote mis à jour est nécessaire. Les fonctionnalités complètes du nuanceur de calcul Direct3D 11 sont destinées à la prise en charge du matériel de classe Direct3D 11. Afin d’évaluer l’ensemble des fonctionnalités, vous devez utiliser le rastériseur de référence jusqu’à ce que ce matériel soit disponible. Pour une démonstration du nuanceur de calcul en action, case activée l’exemple HDRToneMappingCS11 disponible via l’exemple de navigateur.
Rendu multithread
La principale différence d’API par rapport à Direct3D 10 dans Direct3D 11 est l’ajout de contextes différés, qui permettent l’exécution évolutive de commandes Direct3D réparties sur plusieurs cœurs. Un contexte différé capture et assemble des actions telles que les modifications d’état et les soumissions de dessin qui peuvent être exécutées sur l’appareil réel ultérieurement. En utilisant des contextes différés sur plusieurs threads, une application peut distribuer la surcharge du processeur nécessaire dans le runtime Direct3D11 et le pilote à plusieurs cœurs, ce qui permet une meilleure utilisation de la configuration de l’ordinateur d’un utilisateur final. Cette fonctionnalité est disponible sur le matériel Direct3D 10 actuel, ainsi que sur le rastériseur de référence. Pour une démonstration de l’utilisation de l’API, case activée l’exemple MultithreadedRendering11 disponible via l’exemple de navigateur.
Liaison de nuanceur dynamique
Afin de résoudre le problème d’explosion combinatoire rencontré dans les nuanceurs spécialisés pour les performances, Direct3D 11 introduit une forme limitée de liaison de nuanceur d’exécution qui permet une spécialisation quasi optimale du nuanceur pendant l’exécution d’une application. Pour ce faire, spécifiez les implémentations de fonctions spécifiques dans le code du nuanceur lorsque le nuanceur est affecté au pipeline, ce qui permet au pilote d’intégrer rapidement des instructions natives de nuanceur au lieu de forcer le pilote à recompiler le langage intermédiaire en instructions natives avec la nouvelle configuration. Le développement du nuanceur est exposé via l’introduction de classes et d’interfaces à HLSL. Pour une démonstration, case activée l’exemple Dynamic Shader Linkage 11 disponible via l’exemple de navigateur.
Windows Advanced Rasterizer (WARP)
Disponible dans ce KIT de développement logiciel (SDK) via Direct3D 11 et éventuellement via Direct3D 10.1, WARP est un rastériseur de mise à l’échelle multicœur rapide qui est entièrement conforme à Direct3D 10.1. L’utilisation de cette technologie est aussi simple que de passer l’indicateur D3D_DRIVER_TYPE_WARP dans la création de votre appareil.
Direct3D 10 et Direct3D 11 sur le matériel Direct3D 9 (D3D10 Niveau 9)
Disponible dans ce KIT de développement logiciel (SDK) via Direct3D 11 et, à terme, également via Direct3D 10.1, l’API Direct3D peut cibler la plupart du matériel Direct3D 9, ainsi que le matériel Direct3D 10, Direct3D 10.1 et Direct3D 11. Pour ce faire, vous fournissez le mécanisme de niveau de fonctionnalité, qui regroupe le matériel en six catégories en fonction des fonctionnalités : 9_1, 9_2, 9_3, 10_0, 10_1 et 11_0. Un carte répond uniquement à un niveau de fonctionnalité s’il est entièrement conforme à ce niveau, et chaque niveau est un sur-ensemble strict de ceux en dessous. Les fonctionnalités sont émulées au minimum pour garantir qu’aucune falaise de performances inattendue n’est rencontrée. Ainsi, les fonctionnalités telles que les nuanceurs Geometry ne sont pas disponibles pour les cibles de niveau Direct3D 9.
Fichiers binaires d’exécution
Tous les fichiers binaires d’exécution fournis dans la préversion technique Direct3D 11 qui seront disponibles sur Windows 7 et Windows Vista SP1 sont installés avec le KIT de développement logiciel (SDK) et sont étiquetés en tant que composants « bêta » (c’est-à-dire D3D11_beta.DLL). Tous les composants étiquetés bêta sont bombardés à temps. Pour créer des projets afin d’évaluer ces nouveaux composants, vous devez créer un lien vers leurs bibliothèques d’importation étiquetées bêta équivalentes (par exemple, D3D11_beta.lib). Si vous disposez d’une copie PDC de Windows 7, les en-têtes, libs et pdbs fournis dans le KIT de développement logiciel (SDK) Windows avec la build sont appropriés pour le développement à l’aide des composants Direct3D 11 fournis dans Windows 7. Veuillez réserver l’utilisation des en-têtes, des libs et des pdbs dans ce kit SDK aux composants bêta fournis ici.
D3DX11
D3DX11 prend actuellement en charge le chargement de textures, la compilation du nuanceur, le chargement de données et les fonctions de thread de travail pour les ressources Direct3D 11. À l’avenir, ce composant fournira davantage de technologies disponibles dans D3DX10. La fonctionnalité de compilation du nuanceur est également fournie directement via le composant Compilateur Direct3D, décrit ci-dessous.
HLSL et compilateur Direct3D
Le compilateur HLSL dispose de plusieurs nouvelles fonctionnalités pour prendre en charge les nouvelles technologies disponibles dans Direct3D 11. Cela inclut la programmation orientée objet par le biais d’interfaces et de classes, une syntaxe d’indexation directe pour les charges de ressources et la mot clé « précise » pour s’assurer que toutes les opérations effectuées avec une variable spécifique respectent les règles strictes à virgule flottante. Presque toutes les nouvelles fonctionnalités linguistiques ont des fonctionnalités valides sur les cibles de nuanceur existantes. En plus de prendre en charge tous les nuanceurs Direct3D 9, Direct3D 10, Direct3D 10.1 et Direct3D 11, le compilateur HLSL prend également en charge les cibles spéciales nécessaires pour écrire des nuanceurs pour les cibles De niveau 9 Direct3D 10. Le compilateur D3D est désormais directement accessible en dehors de D3DX10 et D3DX11 via D3DCompiler.H et D3DCompiler.lib. Avec ces nouveaux fichiers, une application n’est pas tenue de se lier à D3DX pour effectuer la compilation du runtime, et une application n’est pas tenue d’inclure le compilateur si seule la fonctionnalité D3DX est nécessaire.
Rastériseur de référence D3D11
Le rastériseur de référence fournit une implémentation de rastérisation standard pour l’évaluation des fonctionnalités de Direct3D 11 qui ne sont pas encore disponibles dans le matériel. Le rastériseur de référence est également fourni pour vérifier l’exactitude d’une implémentation matérielle spécifique à la norme de rastérisation. Le rastériseur de référence est conçu pour l’exactitude et non pour les performances. Pour créer un appareil de référence, il vous suffit de passer l’indicateur D3D_DRIVER_TYPE_REFERENCE lors de la création de l’appareil.
Couches du KIT de développement logiciel (SDK) D3D11
Les couches du KIT de développement logiciel (SDK) Direct3D11 fournissent un mécanisme de suivi du fonctionnement du runtime Direct3D 11 pendant le développement. Actuellement, il est utilisé pour fournir des informations de débogage utiles, qui incluent non seulement des erreurs en cas d’utilisation incorrecte, mais également des avertissements qui recommandent l’utilisation des meilleures pratiques du runtime et fournissent souvent des informations détaillées et utiles pour le débogage. Il est vivement recommandé que la sortie de débogage des couches du SDK D3D11 soit activée à tout moment pendant le développement et qu’une application ne génère aucune sortie de débogage pendant l’exécution avant d’être publiée ou utilisée avec PIX pour Windows à des fins de profilage. L’activation de la couche de débogage consiste à passer l’indicateur D3D11_CREATE_DEVICE_DEBUG au moment de la création de l’appareil. Les développeurs sont fortement encouragés à utiliser des couches dans les builds de débogage. Les couches ne sont pas recommandées pour une utilisation dans les builds de profil ou de mise en production.
Nouveaux exemples
Cette version contient quatre nouveaux exemples.
  • L’exemple Dynamic Shader Linkage 11 illustre l’utilisation des interfaces de nuanceur du modèle 5 du nuanceur et la prise en charge de Direct3D 11 pour lier des méthodes d’interface de nuanceur au moment de l’exécution.
  • L’exemple HDRToneMappingCS11 montre comment configurer et exécuter le nuanceur de calcul (CS) plus tard, qui est l’une des nouvelles fonctionnalités les plus intéressantes de Direct3D 11. Bien que l’exemple utilise uniquement le CS pour implémenter le mappage de tonalité HDR, le concept doit s’étendre facilement à d’autres algorithmes de post-traitement ainsi qu’à des calculs plus généraux.
  • L’exemple MultithreadedRendering11 montre comment fractionner le rendu entre plusieurs threads, avec une surcharge très faible.
  • Le nouvel exemple SubD11 est très similaire à l’exemple SubD10 dans le SDK DirectX, sauf qu’il a été amélioré pour tirer parti de trois nouvelles étapes de pipeline Direct3D 11 : le nuanceur de coque, le tessellator et le nuanceur de domaine.

Fonctionnalités introduites dans les versions précédentes