OpenCL dynamite le Path Tracing

Arnaud de la Grandière |
Commençons par un petit récapitulatif des différents algorithmes de calcul pour les images de synthèse :

Le lancer de rayon, ou raytracing, simule le parcours de rayons lumineux jusqu'à chaque pixel d'une caméra virtuelle, permettant de reproduire des effets tels que la réflexion ou la réfraction de la lumière, ainsi que la profondeur de champ d'une optique ou encore les ombres "douces". Longtemps réputé pour la longueur des calculs qu'il nécessite, le raytracing en temps réel n'en est pas moins une réalité de plus en plus fréquente aujourd'hui.



La radiosité a poussé la fidélité un peu plus loin, en offrant un modèle global d'illumination : elle permet notamment de calculer la radiance de la lumière d'une surface à l'autre, un effet qui provoque la teinte rouge sur le plafond, renvoyé par le sol, sur l'image ci-dessous à droite. Notez également que si l'image de gauche a nécessité trois types de lumières (ambiante, omnidirectionnelle et spot), l'image de droite quant à elle n'utilise qu'une seule source de lumière, figurant le soleil et la manière dont il illumine physiquement une scène.



Ce type de rendu prend un temps considérable à calculer, car chaque rayon de lumière est calculé de bout en bout, sur un nombre plus ou moins important de rebonds sur la matière. Pour vous donner un ordre de grandeur, l'image ci-dessous a nécessité pas moins de sept heures de calcul sur un quad core à 2,4 GHz.



Le Path Tracing est la dernière technologie en date, et propose rien de moins qu'une simulation du comportement physique de la lumière aussi précisément que possible, permettant de reproduire naturellement des effets visuels qui auraient nécessité une intervention humaine avec d'autres algorithmes. Le procédé est si fidèle qu'il fait figure de mètre étalon pour la qualité de rendu d'autres algorithmes, permettant de voir ce à quoi une scène donnée ressemblerait dans la réalité.

Cette méthode de calcul ne finit que lorsqu'on interrompt le processus : l'image est sans cesse affinée, et le calcul commence par produire une image particulièrement "bruitée". A mesure que les rayons de lumière sont lancés aléatoirement, plus on laisse le calcul s'éterniser, plus la qualité du résultat sera grande. Cette méthode de calcul est évidemment particulièrement gourmande. C'est là où OpenCL intervient pour accélérer le processus, puisque ce calcul est hautement parallèle de par nature : le parcours de chaque rayon peut être calculé indépendamment. Il ne suffit que de quelques secondes pour obtenir un résultat acceptable.



Vous pourrez trouver sur ce site une application pour Mac OS X 10.6 qui permet de faire du rendu en Path Tracing à l'aide de GLSL, le langage d'OpenGL pour la création de shaders, le tout accéléré par OpenCL. Le résultat est particulièrement impressionnant, même sur des machines équipées de carte graphiques modestes.



Plus étonnant encore, le logiciel a été porté sur WebGL, et peut donc fonctionner dans une simple page web dans les navigateurs qui supportent cette technologie (Chrome, FireFox 4, et les "nightly builds" de Webkit/Safari).
Accédez aux commentaires de l'article