- 2 -
Le plan
• DirectX aujourd’hui• Framework XNA• DirectX 10 / Vista• PIX
- 3 -
DirectX Aujourd’hui
• 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 ( www.gpgpu.org )
- 5 -
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.
- 6 -
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.
- 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 d’un pixel donné couvert par une primitive.
• Cela offre une grande palette de possibilité d’usages 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 l’on
souhaite fournir au pipeline.
- 10 -
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
- 11 -
Exemple
• Code• Initialisations• Chargement de géométries.• Création de géométries de façon
procédurale.• Affichage.
- 12 -
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.
- 13 -
Un peu de shaders…
• Code• Anatomie d’un fichier d’effet.• Communication valeurs à l’effet.• Sélection technique et passe.
- 14 -
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.
- 15 -
DirectX 10
• Des changements en profondeur• Le point de vue du développeur• Exemple
- 16 -
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
- 17 -
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
- 18 -
DirectX 10 – Des changements en profondeur
- 19 -
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.
- 20 -
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.
- 21 -
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
- 22 -
Le point de vue du développeur
• Pipeline• Device• Le système d’effets• Le shader modèle 4.0• Attention !
- 23 -
DirectX 10 - Pipeline
• GS• Stream Output• Draw Auto• Ressources
utilisables en différent points du pipeline.
- 24 -
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.
- 25 -
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!
- 26 -
DirectX 10 – Système d’effet
• Pool d’effets.
FX2 Pass A Shader A CB 0
Tex 0
vLight
matWVPState A
FX1 Pass A Shader A CB 0
Tex 0
vLight
matWVPState B
FX2 Pass A Shader A CB 0
Tex 0
vLight
matWVPState A
FX1 Pass A
State B
- 27 -
DirectX – Shader modèle 4.0
• Jeu d’instruction unique.• HLSL uniquement.• Vue assembleur disponible à des fins
de debug.
- 28 -
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.
- 29 -
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.
- 30 -
PIX
- 31 -
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.
- 32 -
Liens
• http://www.microsoft.com/france/msdn/directx
• http://msdn.microsoft.com/directx/presentations/
Pour tout commentaire ou question sur cette présentation [email protected] .