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

OpenGL Discussion :

information generale sur communication CPU/GPU


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 93
    Par défaut information generale sur communication CPU/GPU
    Bonjour,

    Voila il y a deux ou trois question que je me pose concernant la communication entre le CPU et le GPU. Mais je vais commencer par la première.

    1) est il possible d'accéder en lecture a une partie de la mémoire du GPU de récupérer par exemple un compteur des shader afficher sur l'image final.

    Merci d'avance.

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Salut!

    On rend généralement un scène comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // exemple des boucles typiques d'un rendu
    pour chaque vue {
      lier les ressources de la vue          // caméra, environnement...
      pour chaque shader {
        lier le pipeline du shader
        lier les ressources du shader      // valeurs pour le shader
        pour chaque matériau {
          lier les ressources du matériau  // paramètres des matériaux et textures
          pour chaque objet {
            lier les ressources de l'objet  // transformations de l'objet
            dessiner l'objet
          }
        }
      }
    }
    Donc en fait, à la fin du rendu de la scène, tu n'as plus de shader actif.
    Et donc, tu n'as pas possibilité depuis le GPU de connaître le nombre de shaders utilisés pour te scène.
    On pourrait penser que ce serait faisable avec le GPU queries, mais OpenGL ne te permet pas de récupérer cette info.
    Le seul moyen est donc de compter par toi même les shaders utilisés (ce qui est assez facile, au vu de la boucle de rendu ci-dessus)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 93
    Par défaut
    Re,

    En fait il faut donc que je gére moi même les objets que je vais demander au GPU de déssiner. Si j'ais un tableau d'objet VBO, shader uniqu, dispersé sur toute la scene et que je veux faire un picking. Il me faut implementer l'algo. Je ne peut rien récupérer du GPU.
    Du coup il faut que je détermine a l'avance, moi, même les objets qui sont succeptible d'être dans la fenêtre de projection ?

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Pour un picking, tu vas généralement dessiner chaque objet d'une couleur différente, puis regarder sur quelle couleur la souris pointe, et déterminer l'objet en fonction.
    Mais quelle est ta problématique de base?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 93
    Par défaut
    La problématique est bien le picking. Je pensais ne pas avoir a refaire se qui est fait pas le GPU.
    Par contre je ne peux pas utiliser une couleur diférente pour les objets. Et je ne voulais pas avoir a gérer un tableau d'objet et devoir faire un test de ray raytracing. C'est lourd.

    Du coup il ne me reste que la solution de devoir gerer un tableau et d'utiliser un ReadColor et devoir récupérer le vertex pour savoir a quel objet il appartient ? Mais cela fait beaucoup pour un trés grand nombre d'objet.

    C'est pour cette raison que je désirais savoir si il est possible de récupérer des informations a partir du GPU.

  6. #6
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Le rendu de picking est différent du rendu normal, c'est une passe supplémentaire que tu effectues avant ou après le rendu normal, en attribuant à chacun de tes objets une couleur spécifique.
    Tu dessines ensuite les objets avec un shader tout bête qui va juste dessiner l'objet avec la couleur définie.
    Puis tu devras effectivement faire un glReadPixels avec comme paramètres la position de la souris, comme taille 1x1, et le buffer recevant le pixel.
    Puis en fonction de la couleur récupérée, tu pourras déterminer facilement à quel objet elle appartient.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Obtenir les informations sur le CPU, la RAM et autres ?
    Par steevenbacon dans le forum VB.NET
    Réponses: 0
    Dernier message: 01/03/2009, 23h53
  2. Réponses: 12
    Dernier message: 08/03/2006, 17h27
  3. question general sur triggers (liaison avec VB)
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 15h57
  4. question general sur malloc
    Par vince3320 dans le forum C
    Réponses: 8
    Dernier message: 23/06/2004, 10h39
  5. [Plugin] Information générale sur le plugin.xml
    Par relivio dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 16/04/2004, 13h31

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