ARTICLE
The Physical Based Rendering Dossier - Partie I
Le PBR (Physical-Based Rendering) est le nouveau buzzword à la mode lors des présentations techniques des jeux et de leurs moteurs. Mais que se cache-t-il vraiment derrière ce terme?
Attention : Cet article, de par son sujet, contient des notions physiques et mathématiques normalement connues par un élève de terminale. L'auteur ne sera pas tenu responsable d'éventuels traumatismes liés à cette période de votre vie.
La définition est très simple : rendre des matériaux et des sources lumineuses en se basant sur leurs propriétés physiques réelles. Cette façon d'approcher le rendu d'une image est utilisée en pré-calculé depuis des années. Il était logique que le temps réel l'adopte un jour.Attention : Cet article, de par son sujet, contient des notions physiques et mathématiques normalement connues par un élève de terminale. L'auteur ne sera pas tenu responsable d'éventuels traumatismes liés à cette période de votre vie.
Cependant, si on veut être précis, on lui préférera le terme de "Physically Plausible". Quelques moteurs de rendu offline (pré-calculé) ont des approximations très poussées, mais aucun ne peut encore rendre l’intégralité des phénomènes physiques observables dans la nature.
Dans le cas du temps réel, les approximations, même simples, sont coûteuses pour le budget de 30 ms correspondant au temps de rendu d'une image à 30 fps. Les moteurs "PBR" utilisent donc des approximations plausibles, voire laissent tomber des pans entiers de la théorie. Théorie que je vais tenter de défricher dans cet article.
Il est extrêmement difficile d'aborder le sujet du PBR sans parler de physique, et donc d'équations. Mais n'ayez pas peur, on va tenter de faire simple.
S'il n'y en avait qu'une à retenir, la pierre angulaire, la fondation même du concept de PBR, ce serait celle-ci :
(et paf, voilà pour le côté simple)
Tout moteur de rendu physique s'échinera à résoudre cette équation(1) le plus rapidement et justement possible. C'est également un point important : la notion de PBR n'oblige à aucune forme de rendu particulière. Il n'implique pas que le rendu soit fait en raytracing, "baké" dans des textures, qu'il soit basé sur du RGB ou des valeurs de spectre de couleur, mais uniquement que le moteur respecte cette équation. Ce qui est plus ou moins simple selon la méthode employée.
Ca a l'air barbare, mais c'est en fait simple à comprendre : Pour un point d'une surface (le matériau) vu d'une position observable donnée (vous), la lumière émise (reçue par la caméra ou votre oeil) est la somme de la lumière émise (lumière venant directement de la source) et de la lumière réfléchie (lumière venant de l'objet).
Cette équation fait donc plusieurs présomptions:
- L'émission de lumière (les sources) est séparée de la transmission (les objets). Un objet peut cependant être en même temps un émetteur et un transmetteur si le moteur le permet. Seul les émetteurs rajoutent de l'énergie dans la scène.
- Un transmetteur ne peut pas ré-émettre plus de énergie qu'il n'en reçoit. C'est la loi de conservation de l'énergie. C'est la plus importante dans le PBR, mais aussi la plus complexe à respecter. Un mauvais réglage de la part de l'artiste peut la briser si le code n'a pas de garde-fou.
- La lumière ré-émise (teinte, diffusion, intensité, ....) dépend des propriétés physiques du matériau.
(1) Il existe des variations et des améliorations de cette équation (qui est ici dans sa forme la plus basique), selon le type de matériau ou de médium. L'auteur a ici choisi de ne pas les détailler afin de rester concis. N'hésitez pas à vous servir des commentaires si ce sujet vous intéresse.