320 likes | 534 Views
DirectX. Guillaume Randon Microsoft Services guillara@microsoft.com. Le plan. DirectX aujourd’hui Framework XNA DirectX 10 / Vista PIX. DirectX Aujourd’hui. A quoi ça sert Les fonctionnalités Le modèle objet avec MDX1.1. A quoi ça sert. Communiquer avec la carte graphique (GPU)
E N D
DirectX Guillaume Randon Microsoft Services guillara@microsoft.com
Le plan DirectX aujourd’hui Framework XNA DirectX 10 / Vista PIX
DirectX Aujourd’hui A quoi ça sert Les fonctionnalités Le modèle objet avec MDX1.1
A quoi ça sert Communiquer avec la carte graphique (GPU) Affichage 3D Autre ( www.gpgpu.org )
Les fonctionnalités Affichage de primitives 3D, points, lignes, triangles Positionne des points dans l’espace Détermine les pixels couverts par des primitives. Calcule la couleur de ces points.
Le Fixed Function Pipeline (FFP) Applique les transformations World View Projection à l’ensemble des points (vertex) qui lui sont soumis. Pour chaque primitive, on détermine les pixels qu’elle recouvre. Les couleurs aux sommets sont déterminées. Pour les pixels couverts par une primitive on calcule la couleur avec un algorithme fixe.
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 d’un pixel donné couvert par une primitive. Cela offre une grande palette de possibilité d’usages pour le GPU.
Le modèle objet avec MDX 1.1 Des objets pour: Interagir avec le pipeline graphique. Créer et manipuler les ressources que l’on souhaite fournir au pipeline.
Le modèle objet avec MDX 1.1 Dans la première catégorie: Principalement l’objet 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 d’effet • Constitué principalement par la classe « Effect ». • Prend en charge le chargement des fichiers d’effets. • Permet de communiquer aux pipeline les valeurs des variables qu’ils utilisent. • Permet de préciser aux pipeline les « Shaders » à utiliser.
Un peu de shaders… • Code • Anatomie d’un fichier d’effet. • Communication valeurs à l’effet. • 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 – 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 d’un 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 • D’effectuer 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 d’effets 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 l’abstraction 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 d’effet et du FFP dans DX9.
DirectX 10 – Système d’effet Un composant central de directX. Destiné à adresser tout les scénarios. Possible d’utiliser DirectX sans le système d’effet. Ne pas mélanger des appels plus bas niveau avec celui-ci!
DirectX 10 – Système d’effet Pool d’effets. FX1 Pass A State B Tex 0 FX2 Pass A Shader A CB 0 vLight State A matWVP Tex 0 FX1 Pass A Shader A CB 0 vLight State B matWVP Tex 0 FX2 Pass A Shader A CB 0 vLight State A matWVP
DirectX – Shader modèle 4.0 Jeu d’instruction 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 d’effet. Affichage Retour sur le fichier d’effet en lui-même.
Conclusion DirectX permet d’utiliser le GPU de manière flexible et entière. DirectX avance en collaboration étroite avec les cartes graphique. L’API 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é d’emploi. Le desktop de Vista et WPF sont basé sur DirectX, c’est le gage d’un investissement renouvelé et croissant sur cette technologie.
Liens http://www.microsoft.com/france/msdn/directx http://msdn.microsoft.com/directx/presentations/ Pour tout commentaire ou question sur cette présentation guillara@microsoft.com .