DirectX Guillaume Randon Microsoft Services
- 2 - Le plan DirectX aujourdhui Framework XNA DirectX 10 / Vista PIX
- 3 - DirectX Aujourdhui A quoi ça sert Les fonctionnalités Le modèle objet avec MDX1.1
- 4 - A quoi ça sert Communiquer avec la carte graphique (GPU) Affichage 3D Autre ( )
- 5 - Les fonctionnalités Affichage de primitives 3D, points, lignes, triangles Positionne des points dans lespace Détermine les pixels couverts par des primitives. Calcule la couleur de ces points.
- 6 - Le Fixed Function Pipeline (FFP) Applique les transformations World View Projection à lensemble des points (vertex) qui lui sont soumis. Pour chaque primitive, on détermine les pixels quelle recouvre. Les couleurs aux sommets sont déterminées. Pour les pixels couverts par une primitive on calcule la couleur avec un algorithme fixe.
- 7 - Les Shaders Avec les vertex shaders le développeur spécifie lui même les traitements à effectuer sur les points qui sont fournis au pipeline. Avec les pixel shaders le développeur détaille les traitement à effectuer pour déterminer la couleur dun pixel donné couvert par une primitive. Cela offre une grande palette de possibilité dusages pour le GPU.
- 8 - Bilan
- 9 - Le modèle objet avec MDX 1.1 Des objets pour: Interagir avec le pipeline graphique. Créer et manipuler les ressources que lon souhaite fournir au pipeline.
Le modèle objet avec MDX 1.1 Dans la première catégorie: Principalement lobjet Device Dans la deuxième: VertexBuffer IndexBuffer Matrix, Vector3…. Effect Texture
Exemple Code Initialisations Chargement de géométries. Création de géométries de façon procédurale. Affichage.
Un peu de shaders… Un système deffet Constitué principalement par la classe « Effect ». Prend en charge le chargement des fichiers deffets. Permet de communiquer aux pipeline les valeurs des variables quils utilisent. Permet de préciser aux pipeline les « Shaders » à utiliser.
Un peu de shaders… Code Anatomie dun fichier deffet. Communication valeurs à leffet. Sélection technique et passe.
Le Framework XNA PC et XBOX 360. Des différences sémantiques avec MDX Plus de FFP mais une classe BasicEffect. Destiné à la programmation de jeux. Se concentre sur les fonctionnalités communes au PC et à la XBOX.
DirectX 10 Des changements en profondeur Le point de vue du développeur Exemple
DirectX 10 – Des changements en profondeur DX9 Représentation des données différentes. Grossi avec le temps (FFP + Effets) Prévu pour 1 application (accès direct aux ressources) Trop de transitions user/kernel mode. Trop de vérifications
DirectX 10 – Des changements en profondeur DX10 Représentation de données sur le GPU conforme avec représentation sur CPU (IEEE). Virtualization des ressources. Plus de FFP Constantes communiquées au pipeline par blocks (Constants Buffer). Données et commandes communiquées par paquets (DMA Buffer) State Objects
DirectX 10 – Des changements en profondeur
DirectX 10 – Avantages du modèle de driver Prédictibilité des résultats quelque soit la carte. Moins de conversions de types! Moins de vérifications au moment du passage des données. Moins de communication isolés. Moins de vérifications. API plus synthétique. Absence du FFP.
DirectX 10 – WDDM 1.0 Interruptible à la fin dun DMA Buffer Ressources doivent être accessible au GPU au moment de la soumission. Existence de split points dans le DMA buffer. Le KMD liste les ressources et patche les DMA buffer.
DirectX 10 – Futur WDDM Interruptible par primitive puis éventuellement à terme par pixel. Paging engine = adresses virtuelles. Permet de: Supprimer les Split point Déviter de patcher les DMA buffer Deffectuer le Chargement des ressources effectué en parallèle avec les traitements du pipeline. Travail du CPU encore réduit
Le point de vue du développeur Pipeline Device Le système deffets Le shader modèle 4.0 Attention !
DirectX 10 - Pipeline GS Stream Output Draw Auto Ressources utilisables en différent points du pipeline.
DirectX 10 - Device Continue dêtre labstraction principale qui représente le pipeline pour le développeur. Création des ressources. Association de ces ressources en différents points du pipeline. Débarrassé de la lourdeur induite par la coexistence du système deffet et du FFP dans DX9.
DirectX 10 – Système deffet Un composant central de directX. Destiné à adresser tout les scénarios. Possible dutiliser DirectX sans le système deffet. Ne pas mélanger des appels plus bas niveau avec celui-ci!
DirectX 10 – Système deffet Pool deffets. FX2Pass AShader ACB 0 Tex 0 vLight matWVPState A FX1Pass AShader ACB 0 Tex 0 vLight matWVPState B FX2Pass AShader ACB 0 Tex 0 vLight matWVPState A FX1Pass A State B
DirectX – Shader modèle 4.0 Jeu dinstruction unique. HLSL uniquement. Vue assembleur disponible à des fins de debug.
Attention !! Ordre des valeurs associées aux vertex (sémantiques non utilisées pour les récupérer) Plus de caps Peu de visibilité sur les performances des GS.
Exemple Code Initialisations Création de nos données. Création de nos géométries. Chargement de notre fichier deffet. Affichage Retour sur le fichier deffet en lui-même.
PIX
Conclusion DirectX permet dutiliser le GPU de manière flexible et entière. DirectX avance en collaboration étroite avec les cartes graphique. LAPI et le modèle de driver évoluent conjointement: Pour augmenter la variété des utilisations possibles du GPU. Pour de meilleurs performances. Pour une plus grande facilité demploi. Le desktop de Vista et WPF sont basé sur DirectX, cest le gage dun investissement renouvelé et croissant sur cette technologie.
Liens Pour tout commentaire ou question sur cette présentation