Générateur de scène ray-tracer / OpenGL

renderer/csg_difference_gl renderer/csg_difference_ray renderer/csg_difference_stereo1 renderer/csg_difference_stereo2 renderer/test1_gl renderer/test1_ray renderer/test1_stereo1 renderer/test1_stereo2

Ce générateur de scène permet de construire des images à partir d'une description dans un langage plutôt simple. Ce projet est né d'un travail fait dans le cadre d'un cours: une question d'examen m'a inspiré une extension au projet: constructive solid geometry. J'ai donc réécrit le programme en entier (en m'inspirant évidemment du code original) afin de pouvoir appliquer mes modifications. Le parseur a d'abord été réécrit à l'aide de yacc et lex, puis ensuite un parseur récursif descendant a été écrit suite à un cours de langages et compilateurs. Les unions, intersections et différences entre des solides ont été implantées en OpenGL à l'aide du "stencil buffer" (support partiel pour OpenGL: seulement des solides simples) et en raytracing. De plus, l'algorithme de raytracing a été adapté pour pouvoir fournir la profondeur à chaque pixel. Cela permet d'obtenir une entrée pour un algorithme de génération de stéréogramme à partir de n'importe quelle scène.

Finalement, la partie "ray-tracing" de ce générateur de scène a été réécrite en GLSL afin d'obtenir du traçage par rayon en temps réel effectué sur le GPU. Le générateur construit un shader GLSL à partir d'une description de scène et il est possible de se déplacer dans la scène, qui est rendue par ray-tracing. À noter que cette partie n'a été testée que sur des cartes NVidia très puissantes (7900) et qu'il est fort probable que des cartes de moindre qualité n'arrivent pas à utiliser les shaders générés.

Projets