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 :

[OpenGL 3.3] Multi render target


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut [OpenGL 3.3] Multi render target
    Bonjour,

    Je viens de découvrir les geometry shaders (GLSL) et j'aimerais faire ceci:

    * C++: appeler OpenGL pour afficher un triangle
    * Vertex shader: transformer ce triangle par une matrix de view & projection
    * Geometry shader: dupliquer trois fois mon triangle et appliquer une matrice de scale différente à chaque itération
    * Pixel shader: rendre les trois triangles dans une "depth texture" (FBO) différente.

    J'ai pensé à deux solutions mais aucune ne fonctionne:
    - Créer un FBO avec deux depth textures. Apparement, c'est impossible pcq on peut en attacher qu'une seule: GL_DEPTH_ATTACHMENT contrairement aux color textures où on peut en avoir plusieurs (GL_COLOR_ATTACHMENT[0-15])
    - Créer deux FBO avec un depth texture chacun. Si je ne dit pas de bêtise: je ne peux pas faire deux "glBindFramebuffer" avant d'afficher mon triangle.

    Que faut-il faire ?
    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 128
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Si vraiment vous en avez besoin (par exemple, un shadowmap) vous pouvez toujours sauvegarder la profondeur dans une texture (même si on la passe en couleur attachment).
    Sinon, un pixel shader peut écrire dans plusieurs sorties à la fois (soit, dans plusieurs textures attachées).
    Pour cela, il faut avoir attaché plusieurs textures aux FBOs.
    De plus, il faut spécifier les sorties que l'on utilise avec glDrawBuffers().

    Pour le pixel shader, il faut que celui-ci contienne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    layout(location=0) out vec4 positionOut;
    pour associer cette variable à la texture attachée en couleur 0.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci pour la réponse.
    En effet, c'est pour des shadowmap que j'ai besoin d'implémenter cette technique.

    Je vois assez bien comment fonctionne le rendu dans plusieurs target d'un même FBO avec glDrawBuffers().
    Mon problème: je ne savais pas qu'il y avait moyen d'accéder à la depth value dans un pixel shader et donc je ne trouvais pas de solution. Je viens de voir que s'est possible via "gl_FragDepth".

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Tu es sur que gl_FragDepth n'est pas deprecated en OpenGL 3.3?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Je me suis posé la même question

    D'après http://www.opengl.org/sdk/docs/mangl..._FragDepth.xml, la valeur existe bien en OpenGL 3.3 (mais elle est p-e deprecated ?)

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 128
    Billets dans le blog
    149
    Par défaut
    Dans la spécification du langage : http://www.opengl.org/registry/doc/G...30.6.clean.pdf il n'y a pas de mention dépréciée pour cette variable (point 7.2)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2007, 08h49
  2. OpenGL multi fenetre sans glViewport
    Par Groove dans le forum OpenGL
    Réponses: 12
    Dernier message: 22/02/2007, 11h19
  3. Basic OpenGL Rendering using LWJGL
    Par ibelieve dans le forum 3D
    Réponses: 1
    Dernier message: 28/02/2006, 09h44
  4. OpenGL et les cartes multi-écrans
    Par jcs2 dans le forum OpenGL
    Réponses: 1
    Dernier message: 14/02/2006, 14h08
  5. Réponses: 4
    Dernier message: 20/04/2005, 13h30

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