Au cours du second semestre de Master I, un de mes projets consistait à implémenter une application de lancer de rayon. Les éléments de base qui sont les conditions essentielles d’un ray-tracer un minimum fonctionnel ont été implémentés. Le modèle d’éclairage utilisé est celui de Phong. Les collisions avec les sphères et plans sont fonctionnelles comme les calculs de normales à ces dernières. Les matériaux sont aussi implémentés, il est possible d’utiliser une texture damier. D’autres fonctionnalités sont présentes, il n’est pas forcement intéressant d’en faire une liste exhaustive.
J’ai implémenté de deux manières les surfaces implicites, l’une appelée blob, l’autre metaballs. La méthode des metaballs est plus lente que celle des blobs car elle n’utilise pas de sphère englobante. L’implémentation de la recherche de l’intersection par la méthode des fonctions Lipschitziennes a été commencée mais finalement, les deux méthodes utilisent le sphère tracing, qui m’a été plus simple à implémenter.
Enfin, l’anti-aliasing par suréchantillonage est intégré à ce projet et notamment le Jittering.
Par ailleurs, une autre technique a été implémentée. Il s’agit d’une CubeMap. Elle est simulée par un cube texturé et en interpolant les valeurs au pixel. En effet, la résolution des CubeMap est faible pour éviter les problèmes d’échantillonnage sur les réflexions, mais implique une interpolation linéaire quand un rayon touche directement l’environnement pour éviter la pixellisation.
En suivant ce lien, vous trouverez une courte synthèse du projet