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 :

Deferred Lighting : Affichage de la sphère? [OpenGL 3.x]


Sujet :

OpenGL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Points : 95
    Points
    95
    Par défaut Deferred Lighting : Affichage de la sphère?
    Bonjour à vous tous :-).

    Aujourd'hui je viens vous voir pour des questions sur l'éclairage avec le deffered Lighting. Mon problème se situe surtout au niveau du rendu des lumières...

    Bref voilà comment je m'organise :-).

    Je possède un GBuffer contenant 3 textures (voir 4 avec la depthTexture).
    Ce même GBuffer contient donc un buffer qui contient les positions dans le monde, les normal, ainsi qu'une texture "Diffuse", tout cela contient les données en fonction de ce qui s'affiche à l'écran, ce qui signifie en gros, que pour affiché le rendu "normal" sans lumière, il suffit juste d'afficher la texture "Diffuse" à l'écran sur un carré de la taille de l'écran ^^.

    Maintenant, on arrive sur mon problème...

    Voilà, j'ai pas mal lu, et essayer de suivre certains tutoriels etc, mais j'ai du mal...
    Pour une lumière ponctuelle, on utilise comme "modèle équivalent" une sphère, mais voilà, j'ai du mal à comprendre. On affiche la sphère et on utilise le blending et on calcul les lumières. Seulement voilà, si l'on affiche la sphère comme ça, on va "voir" la sphère a l'écran, et en plus, c'est la sphère qui va être texturé, et pas "la partie de l'écran qui est affectée" par la sphère...

    Sur le site Anton OpenGL Deferred Shading, il parle d'une sphère, puis d'un carré, je ne comprends pas trop xD.

    Il suffit d'utilisé le culling;...

    Merci pour vos éclaircissements :-)

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 912
    Points : 220 197
    Points
    220 197
    Billets dans le blog
    126
    Par défaut
    Bonjour,

    Dans le deferred shading, une fois que l'on a nos tampons (Gbuffer), il faut faire en sorte d'afficher un truc à l'écran. Pour cela, il faut faire en sorte d'exécuter le pixel shader sur telle ou telle partie de l'écran. Les sections en question, ce sont les sections éclairées par les point light (lumières ponctuelles).
    Pour forcer le pixel shader à s'exécuter, il faut lui donner un rendu à faire. On ne veux pas nécessaire le faire sur la totalité de l'écran, car cela peut être une perte de temps et ce n'est pas exactement ce que l'on veut.
    Donc, pour l'exécuter comme on veut, on va prendre un carré (car un carré peut contenir un cercle) et on va le poser sur l'écran, à l'endroit où on veut faire des calculs supplémentaire (pour telle ou telle lampe).
    Lui, il utilise des sphères pour forcer le rendu du pixel shader, si j'ai compris. Cela lui permet de correctement déterminer la zone affecté par la lampe, aussi. Mais comme il le dit, le dessin de petites géométries est aussi peu efficace.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Coucou :-).

    Oui, j'avais bien compris ^^, mais j'avais mal compris comment obtenir la position du carré sur l'écran, c'est ensuite que j'ai compris que la sphère était une alternative ^^. J'ai pas mal réfléchis pour le carré justement ^^, mais je ne trouve pas de solution aussi élégante que la sphère... Peut être avec du billboarding ? Faudra voir xD ^^.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 912
    Points : 220 197
    Points
    220 197
    Billets dans le blog
    126
    Par défaut
    Le carré peut utilisé la technique de billboard. Il suffit d'avoir la position dans l'espace (position en 3D), de demander au geometry shader de générer les quatres points aligné avec la caméra, avec la taille voulu et hop, c'est bon.
    On est pas obligé d'utiliser un geometry shader

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Faudra que je regarde le tutoriel sur ogldev pour cette technique .

    Mais chaque chose en son temps, merci de prendre ton temps pour répondre à toutes mes questions ^_^.

    A une prochaine fois :-)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/05/2013, 23h01
  2. Affichage de données sur une sphère
    Par neon29200 dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/04/2013, 22h28
  3. Deferred lighting: position original
    Par zenux dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 30/03/2010, 22h18
  4. Affichage d'une sphère
    Par fab12345 dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/12/2009, 21h21

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