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.