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

Projets Discussion :

Interreflection diffuse temps réel, mes premiers essais ^^


Sujet :

Projets

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut Interreflection diffuse temps réel, mes premiers essais ^^
    Bonsoir ,

    Après pas mal de temps à comprendre comment tout ceci fonctionne, j'ai enfin commencer à coder ça sérieusement, et voici mon premier essai de l'interreflection diffuse en temps réel, un des éléments les plus importants de l'illumination globale, mon but étant d'obtenir un résultat correct pouvant fonctionner sur des PCs de dernière génération dans le but de créer un jeu (enfin d'abord un moteur, et ensuite un survival-horror, ou l'éclairage est très important).

    Comme je l'ai dis, c'est une toute première salve codé sans aucune optimisation, c'est donc pour l'instant très lent (environ 40 fps en 512*512 avec une simple Cornell Box et une sphère sur une machine puissante avec une 3870HD) et le résultat est relativement moche, mais je pense que je peux atteindre plus de 100 fps en haute résolution sur des scènes plus complexes (certains y arrivent, voir Lightsmark qui tourne à plus de 300 fps sur ma machine en haute résolution avec soft shadow, interreflection diffuse, surfaces glossy...).



    http://tof.canardplus.com/show/21f82...ba88e81d7.html (cliquer sur le lien si la photo ne s'affiche pas, la photo ne contient que la contribution des lampes secondaires)

    La méthode que j'utilise est une méthode un peu modifiée de l'instant radiosity. En gros, on dessine la scène à partir de la lampe principale, et chaque pixel vu par la lampe est considéré comme une lampe secondaire potentielle. Tout l'algorithme tourne entièrement sur le GPU et sans aucun pré-calcul (la lampe et les objets peuvent donc bouger totalement librement).

    Je posterai ici l'avancée de ce que je ferai, bien que je vais commencer à réviser sérieusement le bac donc j'aurai peut-être un peu moins de temps à passer dessus. Merci d'être indulgent pour l'instant, je suis conscient que la qualité est encore très mauvaise et le framerate très bas, mais je vous promet que ça va s'améliorer .

  2. #2
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Petite comparaison avec l'éclairage direct ajouté (à gauche, sans interreflection, à droite avec)



    J'ai encore un gros problème sur l'atténuation, et pour l'instant chaque lampe indirecte est considéré comme une lampe omni alors qu'elle devrait être implémentée comme une variante d'une lampe spot, mais j'y travaille ^^. Ensuite faut que j'implémente un gros truc que je n'ai pas encore fait qui permettra d'améliorer la qualité et d'augmenter le framerate, mais d'abord je voudrais avoir le résultat souhaité en brute force avant d'optimiser ^^.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Ça devrai être sympa.
    Pourrais tu donner plus de détails sur ta façon de procéder et sur le principe de fonctionnement?

    Est ce que tu pourras gérer des ombres avec ta technique et y rajouté des effets de bump mapping etc?

    En tout cas bon courage, il reste encore beaucoup de travail pour que ce soit exploitable.

  4. #4
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Salut,

    J'ai en effet encore beaucoup de travail, et là je vais mettre sur pause un petit peu jusqu'à la date du bac, il faut sérieusement que je m'y mette et si je passes du temps sur mon programme ça va pas aller .

    Concernant les ombres, tu peux bien sûr inclure des ombres via les sources primaires, par contre inclure des ombres de toutes les lampes secondaires est impossible, bien trop couteux à générer. Le mieux c'est de passer par une approximation de l'ambient occlusion pour simuler l'effet.

    Pour la façon de procéder, c'est de l'instant radiosité un peu remanié afin que ça fonctionne entièrement sur le GPU. Ce que j'espère, c'est que je n'aurai pas trop d'artefacts lorsque des objets vont bouger... Dans ce cas là je me dirigerai peut être vers ce genre de techniques : GPUGISubmission.pdf

    Certains obtiennent des résultats étonnants avec cette technique :



    Ça tourne à 30 fps avec scène dynamique, avec quelques compromis ça peut clairement être jouable sur des scènes plus complexes.

    De toute façon, je prédis que l'illumination globale va bientôt devenir la prochaine étape du jeu vidéo .

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Tout ça promet, Donne des nouvelles quand tu auras avancé après ton bac.
    Bonne continuation.

  6. #6
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Pas de soucis

  7. #7
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    C'est très sympa comme démo pour quelqu'un qui est encore en terminal .

    Ça fait partie des travaux pratiques obligatoires (TIPE ou TPE je sais plus) ?

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  8. #8
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Non non, les TPE sont maintenant en Première depuis deux ou trois ans. J'avais fais mon TPE sur Tchernobyl, donc pas grand chose à voir avec ça ^^.

    C'est fait sur mon temps libre, mais bizarrement, j'ai plutôt envie de bosser sur ça plutôt que de réviser mon bac . Quelqu'un sait comment m'empêcher d'allumer Visual jusqu'à la date du bac ?

    Merci sinon, c'est vrai que ça ressemble pas à grand chose pour l'instant, mais je suis confiant, la qualité va s'améliorer , j'ai juste encore quelques problèmes.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Points : 440
    Points
    440
    Par défaut
    Citation Envoyé par Bakura Voir le message
    Quelqu'un sait comment m'empêcher d'allumer Visual jusqu'à la date du bac ?
    => NE PAS ETEINDRE VISUAL !!!

  10. #10
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Pas mal .

  11. #11
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Il y a quelques petits progrès sur la qualité, comme vous pouvez le voir (notez le rouge et le vert du mur reflétés sur le cube) :


  12. #12
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    c'est très joli tout ça

    mais je me pose quand même quelques questions:
    tu fais ça purement pour apprendre ou tu comptes l'utiliser par après dans une création?

    est-ce que tu penses que ce serait viable? parce que je me dit que tu tournes à 32 fps, même si tu arrives à multiplier par 4 ta vitesse de rendu, ça reste pas très rapide pour le peu à afficher :s

    pourquoi ne pas faire un pré-calcul avant exécution qui génère les textures?


    ce sont des questions que je me pose, mais je tient à préciser que je respecte énormément ton travail

  13. #13
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Salut,

    Je souhaiterais en effet utiliser ceci dans une création. Mais comme tu dis, ça reste encore problématique au niveau de la performance et il faudra forcément faire des sacrifices sur la qualité, et limiter l'usage que sur des machines récentes. Après, l'avantage de cette méthode est qu'elle est relativement peu dépendante de la géometrie, donc au point de vue de l'éclairage, éclairer une scène de 10 polygones prendra autant de temps qu'une scène de 100 000 polygones (bien sûr, ce sera plus lent car le temps passé pour dessiner la scène sera plus long, mais au niveau de l'éclariage, il y a peu de différence).

    Après, certains y arrivent très bien, regarde le moteur Lightsmark. Bien sûr, je ne compte pas me comparer à eux, ce sont des professionnels qui bossent sur ça toute la journée, mais leur méthode est extrêmement rapide et arrive à gérer tous pleins d'effets (bien plus que l'interreflection diffuse) en temps réel en haute résolution à plus de 300 fps sur ma machine.

    Enfin, je compte utiliser ceci pour un survival-horror, ne sachant pas comment cette méthode peut s'adapter à des univers ouverts, je me contenterai d'univers fermés. Mais bon, on en est pas encore là, et je vous proemts que ça va s'améliorer. La qualité est déjà bien meilleure qu'au début !

    Pour le pré-calcul, c'est parceque je souhaites une scène + lampes dynamiques.

  14. #14
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    J'ai fait quelques tests là en rentrant, en essayant de dérouler toutes les boucles dans les shaders (actuellement, j'ai deux boucles, le GPU n'aime pas trop ça). Je gagne un peu en performance (une dizaine de FPS), mais c'est parce que ma carte graphique est récente et supporte plutôt bien les boucles, par contre j'imagine que sur celles des générations précédentes (X1900), le déroulement est obligatoire.

    En fait, le gros problème actuellement, c'est que chaque pixel est éclairé par toutes les lampes secondaires. Or elles s'atténuent assez rapidement donc il y a beaucoup de gâchis... Pour chaque pixel, j'ajoute la contribution de 256 lampes secondaires, alors qu'il n'y en a en fait que peut-être... 10-20 qui vont vraiment contribuer à l'éclairage de cette partie.

    J'ai entendu parler des "Light Volumes" mais j'ai pas trouvé grand chose. Je vais essayer de lire ce papier (liris.cnrs.fr/Documents/Liris-2476.pdf) qui semble indiquer ce que je souhaite .

  15. #15
    Membre régulier Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Points : 116
    Points
    116
    Par défaut
    Salut,
    je sais pas si tu connais ce site mais il pourrait t'être utile .

    Sinon bonne chance pour la suite, tient nous au courant !
    #opengl@irc.epiknet.net

  16. #16
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je connais ce site . Je crois que je connais la plupart des sites et des papiers qui parlent de ça

  17. #17
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je n'ai pas bossé dessus, mais j'ai juste voulu tester avec un modèle plus complexe :


  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    tu as combien de triangles sur ton modèle?

    Par rapport à cette image il n'y a pas de différence de fps.
    http://img1.imagilive.com/0508/383.png
    C'est encourageant pour la suite

  19. #19
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    70 000 polygones je crois. Sinon comme je l'ai dit cette méthode a l'avantage d'être indépendant de la complexité de la scène.

  20. #20
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Excellent

    Citation Envoyé par Bakura
    cette méthode a l'avantage d'être indépendant de la complexité de la scène
    juste pour savoir (parce que j'ai la flemme d'aller lire les publications à ce sujet ) ça dépend de quoi alors?

    je suppose du nombre de surface émettrices, mais ça dépend d'autres choses?

Discussions similaires

  1. Mise à jour en temps réel de la base de données
    Par Clotilde dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/06/2004, 22h09
  2. [MFC] graphique temps réel
    Par _Thomas_ dans le forum MFC
    Réponses: 10
    Dernier message: 01/06/2004, 11h56
  3. Voir requête éxécuté en temps réel ?
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2004, 14h52
  4. cubes temps réel en ROLAP
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/07/2003, 16h36
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

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