IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Guide de programmation Direct3D 10


précédentsommaire

VIII. Caractéristiques de Direct3D 10.1

Direct3D 10.1 étend le jeu de caractéristiques de Direct3D 10.0 avec les nouveautés suivantes :

  • Modes de mélange - Modes de mélange indépendants par cible de rendu utilisant la nouvelle interface d'état de mélange (cf. Interface ID3D10BlendState1). Les opérations de mélange de sources duales sont limitées à render target slot 0 ; vous ne pouvez pas écrire vers d'autres sorties ou avoir des render targets liées à des slots autres que 0.
  • Comportement en culling - Les faces à surfaces nulle sont automatiquement soumises au culling ; cela n'affecte que le rendu de modèle fil de fer.
  • Règles de virgule flottante - Utilise les mêmes règles IEEE-754 pour la virgule flottante SAUF QUE les opérations en virgule flottantes 32 bits ont été resserrées pour produire un résultat à 0,5 ULP du résultat infiniment précis. Cela s'applique à l'addition, la soustraction et la multiplication. (précision à 0,5 ULP pour la multiplication, 1,0 ULP pour sa réciproque).
  • Formats - La précision du mélange float16 a été portée à 0,5 ULP. Le mélange est également nécessaire pour les formats UNORM16/SNORM16/SNORM8.
  • Anti-Aliasing multi-échantillon - Le multisampling a été amélioré pour généraliser la transparence par couvrance et pour rendre le travail du multisampling plus efficace avec un rendu multi-passe. Pour ce faire, toute la sémantique de multisamplage est définie comme si le pixel shader fonctionnait toujours une fois par échantillon (fréquence par échantillon) et calculait une couleur distincte par échantillon. Si un pixel shader n'utilise aucun attribut par échantillon, il calculera la même valeur pour chaque échantillon couvert dans un pixel. Dans ce cas, cela équivaut au hardware exécutant le shader une fois par pixel (fréquence par pixel) et répliquant le résultat sur tous les échantillons couverts. Naturellement, faire tourner le shader à la fréquence par pixel produit toujours les mêmes résultats que faire tourner le même shader à la fréquence par échantillon quand les attributs sont échantillonnés à une fréquence par pixel. Les statistiques de pipeline PSInvocations s'incrémentent à la fréquence par échantillon sauf si le shader tourne à la fréquence par pixel.
  • Bande passante d'Etage du Pipeline - Augmente la quantité de données que l'on peut faire passer entre les shader stages :
Ressource Limites
Registres entre Shader Stages 32 (32 bits x 4 composants)
Registres d'entrée des Vertex Shaders 32
Input Assembler input slots 32
  • Règles de rasterisation - Les règles de rasterisation ont changé pour les lignes et les additions ; de nouvelles fonctionnalités ont été ajoutées :
    • MultisampleEnable n'affecte que la rasterisation de lignes (les points et les triangles ne sont pas affectés), et est utilisé pour choisir un algorithme de tracé de ligne. Cela signifie que certaines rasterisation multi-échantillons de Direct3D 10 ne sont plus supportées.
    • Nouvelle exécution de pixel shaders sous fréquence par échantillon avec rasterisation de primitives.
  • Ressources - CopyResource est autorisé dans deux nouveaux scenarii :
    • Les surfaces MSAA colorées et profondeur/stencil peuvent désormais toutes les deux être utilisées avec CopyResource que ce soit comme source ou comme destination.
    • Conversion de Format pendant la copie entre certaines ressources typées préstructurées 32/64/128 bits et des représentations compressées de même durée d'impulsion binaire.
  • Echantillonnage de texture - Les instructions sample_c et sample_c_lz sont définies pour fonctionner à la fois avec Texture2DArrays et TextureCubeArrays. Utilisez l'élément de localisation (le composant alpha) pour spécifier un indice de matrice.
  • Vues - TextureCube et le nouveau TextureCubeArray (cf. D3D10_TEXCUBE_ARRAY_SRV1) ne sont pas de vraies ressources, mais sont des nouvelles vues sur une ressource Texture2DArray. Créez un affichage de ressource de la ressource Texture2DArray avec un nouveau registre d'utilisation (D3D10_RESOURCE_MISC_TEXTURECUBE), utilisez la nouvelle interface ID3D10ShaderResourceView1 Interface pour lier un affichage de texture de cube au pipeline.

Les nouvelles caractéristiques nécessitent un type de dispositif 10.1 (cf. Interface ID3D10Device1) que vous pouvez créer en appelant D3D10CreateDevice1, ou vous pouvez créer le dispositif et lier une chaîne en même temps en appelant D3D10CreateDeviceAndSwapChain1.

Sous Windows Vista Service Pack 1, les fichiers DLL Direct3D 10.0 et Direct3D 10.1 existent côte à côte sur le système. Pour accéder aux caractéristiques 10.1, vous avez deux possibilités :

VIII-1. Accéder aux caractéristiques 10.1 sous Vista Gold et Vista Service Pack 1

Les développeurs qui désirent supporter Vista Gold ainsi que SP1 devront prendre en compte l'absence des nouvelles extensions 10.1 API sur Vista Gold. DXUT et D3DX10 fourniront tous les deux des fonctions pratiques pour créer le dispositif approprié, sur la base des fichiers DLL disponibles sur le système et sur la base du hardware disponible (10.0 ou 10.1). Le dispositif 10.1 dérive du dispositif 10.0 et peut être rétabli en utilisant QueryInterface(). Il est recommandé que chaque application conserve la trace du type de dispositif et maintienne un pointeur sur le dispositif 10.1 (si disponible) pour éviter de fréquents appels à QueryInterface quand les fonctionnalités de 10.1 sont désirées. De façon similaire, là où les affichages de ressources 10.1 et les objets états sont associés par une classe personnalisée de l'application, il est recommandé que l'application garde en mémoire si l'objet est de type 10.0 ou 10.1 pour éviter des appels redondants à QueryInterface(). D3DX10 inclut un jeu de fonctions utilitaires pour simplifier ce processus (cf. D3DX10CreateDevice et D3DX10CreateDeviceAndSwapChain).

VIII-2. Accéder aux caractéristiques 10.1 sous Vista Service Pack 1 exclusivement

Certains développeurs peuvent vouloir choisir d'exiger Vista Service Pack 1, qui sera largement distribué aux utilisateurs finaux et qui inclut une série d'améliorations en dehors de Direct3D 10.1. Ces développeurs peuvent utiliser exclusivement les en-têtes et librairies de Direct3D 10.1, créant une dépendance envers les fichiers DLL de Direct3D 10.1 qui supportent à la fois les hardwares 10.0 et 10.1 (néanmoins, certains appels risquent d'échouer sur certains dispositifs 10.0 où la nouvelle fonctionnalité n'est pas supportée).

Quelques notes supplémentaires :

  • Les API exposées dans le fichier D3DX10.dll acceptent à la fois les dispositifs 10.0 et 10.1 et profitent des fonctionnalités 10.1 quand elles sont disponibles.
  • D3D10SDKLayers.dll accepte un dispositif 10.1 et peut produire le débogage approprié pour les caractéristiques 10.1.
  • D3D10Ref.dll met en œuvre les dispositifs softwares 10.0 et 10.1.
  • D3DX10 et FXC supporte le modèle de shader mis à jour pour 10.1 avec les cibles suivantes : vs_4_1, gs_4_1, ps_4_1 et fx_4_1 qui peuvent être liées à un dispositif 10.1. Un dispositif 10.1 supporte les shaders model 4.0 et 4.1.
  • Le framework effect Direct3D 10.0 supporte les dispositifs 10.0 et 10.1. Toutefois, toute technique qui inclut des shaders de modèle 4.1 ou les nouvelles caractéristiques 10.1 doit utiliser un dispositif 10.1.

précédentsommaire

Cet article est une traduction d'un article original de Microsoft en anglais. Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Microsoft. Lire l'article original Ici.