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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs 3D Discussion :

Details du Graphics pipeline


Sujet :

Moteurs 3D

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Details du Graphics pipeline
    Bonjour,

    Je suis actuellement entrain de m'intéresser "en détail" aux différentes étapes pour arriver à un rendu graphique temps réel.
    Cependant j'ai quelques interrogations.
    J'ai commencé par les grandes étapes du graphics pipeline:
    [ame]http://en.wikipedia.org/wiki/Graphics_pipeline[/ame]

    Ensuite je suis allé voir le pipeline de DirectX (direct3D si on veut etre rigoureux) et OpenGL.
    Q1 - Quel est le processus pour l'évolution de graphique pipeline?
    Es ce que c'est soit DX ou OGL qui inove et l'autre suit...
    Es ce que cela vient des constructeur de carte graphique qui changent leur architecture et ensuite les API graphiques exploitent les nouvelles fonctionnalités hardware? Ou es ce l'inverse OGL et DX innovent et les constructeurs adaptent leur architecture?

    Q2 - Y'a t-il un "consortium" qui régis ses évolutions?
    Si non, pourquoi OGL et DX ont le même graphique pipeline globalement?

    A ce que j'ai vu l'architecture d'une carte graphique est "proche" du pipeline DX et OGL. mais je ne suis pas aller plus loin la dessus...

    Pour en revenir aux API je prend l'exemple de DirectX:
    La dernière mouture pour DX11 serait schématiquement comme ca

    A la sortie de DX10 on a vu l'apparition du geometry shader. De ce que j'ai compris il permet d'effectuer des opérations sur plusieurs vertex, edges... le barycentre etc...
    Q3 - Concretement, que permet de faire ce shader?
    Peut-il ajouter des vertex, edges, faces?
    Si oui doit-il repasser les informations de l'output stream dans l'input assembler pour qu'ils soit représenté?
    Q4 - Si le geometry shader permet d'ajouter des edges, pourquoi avoir rajouté la tesslation dans DX11?
    Avec l'arrivée du processus de tesslation de dx11, que pourra apporter le geometry shader en complément de cette nouvelle technologie?
    Sera t-il seulement utilisé en tant que point sprites, ou proxy?

    Q5 - Dans un moteur de jeu, le moteur physique pourra t-il prendre en compte le "displacement" créé grâce aux nouvelles étapes apporté par DX11?

    Concernant les reflections:
    Q6 - Pour creer une reflection de type "ray tracing" ou ce situe cette etape dans le pipeline? Au niveau des pixels shaders?des fragments shaders?

    Une image ressort assez souvant sur l'évolution de DX9 à DX10:

    Q7 - Pourquoi DX9 ne pourrais pas créer une tel représentation de l'eau et du ciel? Cette image n'est pas un peu "exagérée"?


    Je ne sais pas si je suis le seul à me poser ses questions...Mais mes recherches sur google tournent en rond sans réel reponses.

    Merci de votre lecture

    Amicalement Suela

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 395
    Points : 5 009
    Points
    5 009
    Par défaut
    Q1 : concernant l'évolution du pipeline, sachant que les grandes "boites" (microsoft, nvidia, amd et consors) bossent plus ou moins ensemble, le pipeline évolues presque d'un commun accord, presque parce que en ce moment microsoft à l'air d'avancer plus rapidement que les autres.

    Q2 : concernant les consortium, on peut dire qu'il y a microsoft d'un coté et khronos (opengl) de l'autre, mais bon, les différences sont amoindries du fait que si chacun évoluait de son coté, on se retrouverait avec une bataille hd-dvd/bluray qui serait surement préjudiciable à tout le monde.

    Q3 : le geometry shader permet de créer de la géométrie supplémentaire, le tesselator augmente la qualité du maillage existant.
    l'output stream permet de réinjecter dans le pipeline de la géométrie ou autre, exemple : tu as une armée de soldat faisant tous le même mouvement, tu vas donc animer un seul soldat, passer la géométrie dans l'output stream, et dupliquer tous les autres sans avoir à les animer à nouveau.

    Q4 : l'exemple le plus flagrant pour montrer la différence entre le tesselator et le geometry shader est le moteur de particules :
    une technique est l'utilisation de quad texturés, l'inconvénient c'est qu'il faut calculer et envoyer les sommets du quad dans le pipeline, avec le geometry shader, on envoit que les centres des particules et on calcul/ajoute les sommets du quad directement sur le gpu -> gains de bande passante entre le cpu et le gpu.
    le tesselator nous aurait servi à rien vu qu'on a que des points et pas de géométrie en entrée. et celui ci ne permet pas de créer de la géométrie à partir de rien, il augmente seulement la résolution de la géométrie existante.

    Q5 : alors j'ai pas compris la question, mais le moteur physique et le moteur graphique étant 2 choses différentes, je vois pas trop pourquoi le moteur physique prendrait en compte quoi que ce soit provenant de l'affichage.

    Q6 : je ne comprends pas ce que tu veux dire pas "réflexion de type ray tracing"

    Q7 : pour la différence entre les 2 images, je dirai qu'il a bien fallu attirer les joueurs vers vista/dx10 vu qu'à la base c'est surtout pour facilité le travail des programmeurs ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ces précisions!

    Donc si j'ai bien compris, ils "partagent" leur innovations pour n'avoir qu'une architecture matérielle et éviter l'association spécifique d'un hardware à un API?

    Pour la Q5, je me demande comment les moteurs physiques pourront considérer le displacement sachant qu'on risque d'avoir de plus en plus d'objets a forte déformation:
    :: No tesselation ::
    :: tesselation ::
    On peut imaginer que si il y avait de la physique avec cette demo les objets traverserait sans doute les "piques" créé par le "displacement"

    Pour la Q6 voici un exmple de ce que je veux illustrer:
    :: Chessboard ::
    Pour creer cette effet de refraction et reflection c'est au niveau du pixel shader que ca se passe?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 393
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 393
    Points : 20 496
    Points
    20 496
    Par défaut
    Citation Envoyé par Suela24 Voir le message
    Q6 - Pour creer une reflection de type "ray tracing" ou ce situe cette etape dans le pipeline? Au niveau des pixels shaders?des fragments shaders?
    Oui en programmant directement le GPU sinon tu peux faire cela avec des opérations et calculs plus "haut-niveau" mais tu risques de perdre en performances..le mieux c'est de comparer les exemples fournis dans le SDK de Dx9 et Dx11
    il y a l'exemple "water"

    Q7 - Pourquoi DX9 ne pourrais pas créer une tel représentation de l'eau et du ciel? Cette image n'est pas un peu "exagérée"?
    si c'est sans doute possible mais Dx9 est sans doute moins évoluée pour les effets..

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 395
    Points : 5 009
    Points
    5 009
    Par défaut
    ce n'est que mon avis que les constructeurs partagent, mais je doute fortement que chacun reste de son coté, microsoft et khronos doivent faire en sorte que leur api soit gérées par les constructeurs de cartes graphiques, si elles étaient diamétralement opposées, ça serait vachement plus compliqué.

    je vais peut être dire une bêtise, mais je crois pas que c'est de la tesselation ça.
    ensuite je dirai que c'est déjà la cas maintenant, les collisions sont gérées avec un marge, juste que dans ce cas la marge devra peut être être augmentée.
    enfin je sais pas, je spécule à mort là.

    pour les réflexions/réfractions de ton exemple, je dirai qu'il "suffit" de cubemap dynamiques et de vertex/pixel shader, donc un peu de tout XD
    (j'essayerai de remettre la main sur un sample que j'avais fait, mais la technique se trouve dans un shader x ou un gpu gems, je sais plus)

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par stardeath Voir le message
    je vais peut être dire une bêtise, mais je crois pas que c'est de la tesselation ça.
    J'ai pris l'info d'ici:
    http://unigine.com/devlog/70/

    C'est une des démos qui circule en ce moment pour montrer l'utilisation complete du pipeline d3dx11. Qui a souvant été mal représenté par la tesselation seule qui n'a aucun interet en soit.
    La il s'agit bien du processus complet: Hull shader (facteur de tessellation pour subdiviser plus ou moins) => Tesselator (tesselation + UVW) => Domain Shader (déformation)

    Pour la réflection je vais regarder dans les SDK.

    Merci a tous pour vos réponses

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 395
    Points : 5 009
    Points
    5 009
    Par défaut
    Citation Envoyé par Suela24 Voir le message
    J'ai pris l'info d'ici:
    http://unigine.com/devlog/70/

    C'est une des démos qui circule en ce moment pour montrer l'utilisation complete du pipeline d3dx11. Qui a souvant été mal représenté par la tesselation seule qui n'a aucun interet en soit.
    La il s'agit bien du processus complet: hull shader (facteur de tessellation pour subdiviser plus ou moins) => Tesselator (tesselation + UVW) => Domain Shader (déformation)
    merci, il me manque encore des notions, je vais pouvoir étudier ça ^^

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    D'ailleurs c'est hors sujet mais tu peux tester la démo si tu as un CG qui supporte le DX11 (meme si tu as une CG qui supporte DX10 ou DX9 ca vaut le coup de voir même sans la tesselation), seul point noir le DoF n'est pas agréable à mon gout.
    :: Download page - Demo Unigine DX11 tesselation ::

    Pour ceux qui n'ont pas de CG supportant DX11 (presque tout le monde^^):
    [ame="http://www.youtube.com/watch?v=9F6zSgtRnkE"]YouTube- Unigine "Heaven" DX11 benchmark[/ame]

    Différence avec/sans tesselation:
    [ame="http://www.youtube.com/watch?v=bkKtY2G3FbU"]YouTube- Hardware tessellation with DirectX 11 (Unigine "Heaven" benchmark)[/ame]

    Bon visionnage...

Discussions similaires

  1. [Graphic] Dessiner des hachures
    Par sylverspoon dans le forum 2D
    Réponses: 7
    Dernier message: 22/03/2006, 21h46
  2. Requete permettant de voir le detail d'une table
    Par Sandrine75 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/03/2004, 12h51
  3. [Ferme] DBLookup fiche detail (relation maitre detail)
    Par boyerf dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/02/2004, 20h12
  4. [CR9] Plusieurs champs dans details
    Par maxxou dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 28/01/2004, 13h35
  5. Direct Graphics
    Par Blustuff dans le forum DirectX
    Réponses: 9
    Dernier message: 28/10/2002, 04h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo