OpenCL dynamite le Path Tracing
par Arnauld de La Grandière le 28.04.2011 à 15:26
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).
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).
| |
2
1
Vos réactions (20 réactions)
majipoor
[28/04/2011 16:08]
Assez impressionnant.
J'espère voir OpenCL géré dans Maxwell Render bientôt :)
Assez impressionnant.
J'espère voir OpenCL géré dans Maxwell Render bientôt :)
Almux
[28/04/2011 16:29]
Oui, c'est même très acceptable. Je me demande qui va intégrer cette techno par défaut dans ses moteurs de rendu... Blender 3D, peut-être?
Oui, c'est même très acceptable. Je me demande qui va intégrer cette techno par défaut dans ses moteurs de rendu... Blender 3D, peut-être?
marc_os
[28/04/2011 16:32]
La page web en lien dans l'article fait planter complètement Firefox 4.0 à mon taf sous Win XP SP3 : Fermeture instantanée de la fenêtre de FF et de tous ses onglets !
C'est systématique.
La page web en lien dans l'article fait planter complètement Firefox 4.0 à mon taf sous Win XP SP3 : Fermeture instantanée de la fenêtre de FF et de tous ses onglets !
C'est systématique.
Almux
[28/04/2011 16:45]
@marc_os
Avec Safari ça joue (tu peux toujours essayer Safari pour PC. Pour tester les sites, c'est pas mal.)
Concernant GLSL Path Tracing.app, c'est vraiment rapide (effectivement, même avec ma vieille 7300!). Mais, à part tester les formes et reflets existants, pas moyen de tester avec une importation 3D... Dommage!
@marc_os
Avec Safari ça joue (tu peux toujours essayer Safari pour PC. Pour tester les sites, c'est pas mal.)
Concernant GLSL Path Tracing.app, c'est vraiment rapide (effectivement, même avec ma vieille 7300!). Mais, à part tester les formes et reflets existants, pas moyen de tester avec une importation 3D... Dommage!
ashurao
[28/04/2011 16:47]
Malheureusement, l'usage d'OpenCl pour l'accélération des moteurs de rendu reste encore marginal et expérimental. Nvidia avec CUDA à une longueur d'avance dans ce domaine. C'est simple, quasiment tous les moteurs de rendu utilisant l'accélération graphique passe par CUDA.
Petite parenthèse, il vous a fallu 7h de calcul pour cette pauvre petite scène d'intérieure. C'est pas normal.En plus sur un QuadCore!!!
Malheureusement, l'usage d'OpenCl pour l'accélération des moteurs de rendu reste encore marginal et expérimental. Nvidia avec CUDA à une longueur d'avance dans ce domaine. C'est simple, quasiment tous les moteurs de rendu utilisant l'accélération graphique passe par CUDA.
Petite parenthèse, il vous a fallu 7h de calcul pour cette pauvre petite scène d'intérieure. C'est pas normal.En plus sur un QuadCore!!!
Zouba
[28/04/2011 16:55]
OpenCL, ce n'était pas mettre à disposition la puissance de la carte graphique pour faire autre chose que du rendu graphique ?
OpenCL, ce n'était pas mettre à disposition la puissance de la carte graphique pour faire autre chose que du rendu graphique ?
ErGo_404
[28/04/2011 16:59]
Le lancer de rayons ne se calcule pas de la même façon que le rendu 3D classique, je crois qu'on est obligés de passer par l'OpenCL ou une librairie comme CUDA pour cela.
Zouba [28/04/2011 16:55]
OpenCL, ce n'était pas mettre à disposition la puissance de la carte graphique pour faire autre chose que du rendu graphique ?
OpenCL, ce n'était pas mettre à disposition la puissance de la carte graphique pour faire autre chose que du rendu graphique ?
Le lancer de rayons ne se calcule pas de la même façon que le rendu 3D classique, je crois qu'on est obligés de passer par l'OpenCL ou une librairie comme CUDA pour cela.
Nonoche
[28/04/2011 17:03]
@ Zouba : OpenCL c'est pour faire du calcul "générique" sur la carte graphique (y compris des calculs graphiques, sachant que tout calcul graphique n'est pas nécessairement de nature à être accéléré par la carte graphique). En l'occurrence, le calcul du Path Tracing ne fait pas partie des choses qui sont accélérées "nativement" par les cartes graphiques, d'où l'utilité d'OpenCL pour le faire.
@ Zouba : OpenCL c'est pour faire du calcul "générique" sur la carte graphique (y compris des calculs graphiques, sachant que tout calcul graphique n'est pas nécessairement de nature à être accéléré par la carte graphique). En l'occurrence, le calcul du Path Tracing ne fait pas partie des choses qui sont accélérées "nativement" par les cartes graphiques, d'où l'utilité d'OpenCL pour le faire.
Nonoche
[28/04/2011 17:04]
@ ashurao : pour de la radiosité, si, c'est normal ;¬)
@ ashurao : pour de la radiosité, si, c'est normal ;¬)
Zouba
[28/04/2011 17:13]
@ ErGo_404 & Nonoche : Merci :)
@ ErGo_404 & Nonoche : Merci :)
LaurentR
[28/04/2011 18:10]
J'ai lancé l'appli sur mon MacBook Pro 2,33 / 3 Go RAM / ATI X1600, il s'est bloqué. J'ai été obligé de forcer l'extinction avec le bouton.
J'ai lancé l'appli sur mon MacBook Pro 2,33 / 3 Go RAM / ATI X1600, il s'est bloqué. J'ai été obligé de forcer l'extinction avec le bouton.
oomu
[28/04/2011 18:13]
@ashurao [28/04/2011 16:47]
les chiffres sont normaux oui.
@ashurao [28/04/2011 16:47]
les chiffres sont normaux oui.
ashurao
[28/04/2011 18:20]
@oomu et Nonoche:
Nous parlons bien de la scène d'intérieure façon rendu clay?
Vous pourriez me donnez quelques précisions comme la résolution de l'image lors du calcul, le niveau de AA.
@oomu et Nonoche:
Nous parlons bien de la scène d'intérieure façon rendu clay?
Vous pourriez me donnez quelques précisions comme la résolution de l'image lors du calcul, le niveau de AA.
Kinky
[28/04/2011 18:27]
Excellent article simple et didactique. Bravo Arnauld !
Excellent article simple et didactique. Bravo Arnauld !
françois bayrou
[28/04/2011 18:29]
@ ashurao
C'est à cause de la télé dans le fond, c'est une 1080P ^^
@ ashurao
C'est à cause de la télé dans le fond, c'est une 1080P ^^
2
1
Réagir
Cinq consignes avant de réagir :
- Rester dans le cadre de la dépêche. Pour des discussions plus générales, vous pouvez utiliser nos forums.
- Développer son argumentation. Les messages dont le seul but est de mettre de l'huile sur le feu seront modifiés ou effacés sans préavis par la rédaction.
- Respecter les acteurs de l'informatique et les autres lecteurs. Les messages agressifs, vulgaires, haineux, etc. seront modifiés ou effacés sans préavis par la rédaction.
- Pour toute remarque concernant le contenu de l'article, pour nous signaler une erreur, une faute d'orthographe, une omission, merci de nous contacter exclusivement par e-mail.
- Relisez-vous, et pour les utilisateurs de Safari profitez de l'aide du navigateur : activez le menu édition > Orthographe > Vérifier l'orthographe lors de la frappe.





Février 2012