32
DirectX Guillaume Randon Microsoft Services [email protected]

DirectX Guillaume Randon Microsoft Services [email protected]

Embed Size (px)

Citation preview

Page 1: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

DirectX

Guillaume RandonMicrosoft Services

[email protected]

Page 2: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 2 -

Le plan

• DirectX aujourd’hui• Framework XNA• DirectX 10 / Vista• PIX

Page 3: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 3 -

DirectX Aujourd’hui

• A quoi ça sert• Les fonctionnalités• Le modèle objet avec MDX1.1

Page 4: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 4 -

A quoi ça sert

Communiquer avec la carte graphique (GPU)

• Affichage 3D• Autre ( www.gpgpu.org )

Page 5: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 6: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 7: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 8: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 8 -

Bilan

Page 9: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 10: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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

Page 11: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 11 -

Exemple

• Code• Initialisations• Chargement de géométries.• Création de géométries de façon

procédurale.• Affichage.

Page 12: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 13: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 13 -

Un peu de shaders…

• Code• Anatomie d’un fichier d’effet.• Communication valeurs à l’effet.• Sélection technique et passe.

Page 14: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 15: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 15 -

DirectX 10

• Des changements en profondeur• Le point de vue du développeur• Exemple

Page 16: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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

Page 17: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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

Page 18: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 18 -

DirectX 10 – Des changements en profondeur

Page 19: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 20: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 21: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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

Page 22: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 22 -

Le point de vue du développeur

• Pipeline• Device• Le système d’effets• Le shader modèle 4.0• Attention !

Page 23: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 23 -

DirectX 10 - Pipeline

• GS• Stream Output• Draw Auto• Ressources

utilisables en différent points du pipeline.

Page 24: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 25: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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!

Page 26: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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

Page 27: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 27 -

DirectX – Shader modèle 4.0

• Jeu d’instruction unique.• HLSL uniquement.• Vue assembleur disponible à des fins

de debug.

Page 28: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 29: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 30: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 30 -

PIX

Page 31: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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.

Page 32: DirectX Guillaume Randon Microsoft Services guillara@microsoft.com

- 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] .