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 .
Partager