# Path tracing

Le path tracing est une technique de lancer de rayon (ray tracing), utilisée pour déterminer l'illumination globale d'une scène 3D en résolvant l'équation du rendu. L'image finale est générée par une constitution progressive : d'abord un brouillard de pixels, elle s'affine progressivement jusqu'à être débarrassée presque complètement de son « grain ». Le path tracing a été introduit par James Kajiya en 1986.
Cette technique de rendu d'images 3D consiste à lancer des rayons dans des directions aléatoires depuis l'objectif de la caméra, jusqu'à ce que ces rayons atteignent une surface géométrique. À chaque impact, le rayon va rebondir une nouvelle fois, en perdant de l'énergie à chaque rebond, jusqu'à atteindre la couleur noire ou une source lumineuse. La luminosité et couleur du tout premier point d'impact sera donc une pondération de la lumière et la couleur de tous les rebonds qui ont eu lieu pour un rayon.
L'intérêt de cette méthode est qu'elle n'est pas limitée dans la quantité de rebonds et réalise un modèle de la lumière ambiante intégral.
Le path tracing bidirectionnel est une variante, qui, en plus d'envoyer des rayons depuis la caméra, en envoie également depuis les sources lumineuses de la scène (photon mapping). L'image résultante est une fusion des résultats obtenus.
Il existe une surcouche à cet algorithme, qui le rend meilleur, qui est le Metropolis Light Transport (MLT). Le MLT va essayer de « trouver » des chemins intéressants, par exemple quand deux pixels proches calculés par le path tracing ont une grande différence de luminosité/couleur. Dans ce cas, le MLT va tenter d'explorer cette voie pour essayer de finaliser prioritairement cette zone a priori problématique. Il réduit le côté aléatoire de l'algorithme de path tracing et le rend plus adaptatif.
Les images produites par ce type d'algorithme nécessitent aujourd'hui des temps de calcul très longs, pour obtenir des images très « réalistes », qui contiennent toujours du « grain ».
Une image calculée avec ce type d'algorithme n'est jamais terminée, le calcul étant de type convergent. C'est l'utilisateur qui stoppera lui-même le calcul manuellement, ou qui lui donnera une limite de temps, par exemple, ou de qualité.

## Monte Carlo Light Transport

C'est une méthode aléatoire. Le nom Monte Carlo fait référence aux résultats aléatoires obtenu dans les casinos.
Le principe est de lancer des rayons dans des directions aléatoires et d'enregistrer les résultats ainsi obtenus. Plus il y a de rayons générés aléatoirement, plus l'image générée va converger vers le résultat désiré.
C'est une méthode relativement simple permettant de générer des images non biaisées mais possédant généralement beaucoup de bruit, car beaucoup de ces lancers de rayons aléatoires ne contribuent pas significativement à la génération de l'image.
Par exemple, imaginons une pièce éclairée située contre une pièce obscure. La caméra est située dans la pièce obscure et une porte entre-ouverte permet d'apercevoir la pièce éclairée. Les lancers de rayons simplistes seront bien souvent inefficaces car ils auront des difficultés à trouver le chemin pour passer la porte entre-ouverte. Les problèmes sont similaires quand il y a des surfaces brillantes, des caustiques ou beaucoup de lumière indirecte.

## Metropolis Light Transport

* Le MLT va d'abord créer des chemins aléatoires en utilisant le path tracing à double direction (bidirectional path tracing). Ce premier échantillonnage va devenir l'échantillonnage de référence.
* À partir de ce premier échantillonnage, il va faire de légères modifications aléatoires aux chemins pour constituer l'image.
* Small mutation : Après un certain nombre de chemins infructueux, il va changer la référence en se basant sur les chemins les plus intéressant (plus lumineux par exemple) rencontrés lors des légères modifications de chemins fait précédemment.
* Large mutation : De temps en temps, le MLT va complètement modifier l’échantillonnage de référence en prenant de nouveaux chemins de manière totalement aléatoire. Cela dans le but de ne pas rester toujours lié aux mêmes chemins les plus lumineux.

## Moteurs de rendu du marché utilisant partiellement ou intégralement cette technique
### Logiciels gratuits

* Kerkythea
* 4Reality

### Logiciels libres

* Cycles Render
* LuxRender