vers l'index général de l'aide

Les shaders du langage RenderMan

avertissement

Ces pages n'ont qu'une valeur expérimentale. Elles sont d'abord destinées à asseoir mon propre apprentissage (on comprend mieux quand on doit expliquer), et, tant qu'on y est, à partager cet apprentissage.

qu'est-ce que ça a à voir avec POV-Ray ?

Depuis la fin octobre 2000, il existe une version spéciale de POV-Ray, nommée "POV-Man", proposée par le talentueux (ben oui!) Vahur Krouvek. Basée sur MegaPOV 0.6, cette version est capable d'utiliser des définitions de matériaux rédigées dans le langage RenderMan. On peut la trouver ici :

L'implémentation n'est pas encore complète, mais les choses vont bon train.

c'est quoi RenderMan ?

RenderMan est un langage de description de scènes 3D, destiné à faciliter la communication entre les logiciels de création de scènes, et les logiciels de rendu. Ce langage a été mis au point au milieu des années 80 par Pixar, à qui l'on doit Toy Story, et qui a pour ambition de faire de RenderMan LE langage des logiciels de 3D professionnels, au même titre que Adobe PostScript est devenu le langage de l'impression professionnelle.

Les deux implémentations les plus connues de ce langage sont PhotoRealistic Renderman (PRMan), le moteur de rendu scanline* de Pixar, avec lequel sont calculées leurs productions, et Blue Moon Rendering Tools (BMRT), le raytracer presque-gratuit écrit par Larry Gritz, ce qui lui a valu un job chez Pixar.

*petite remarque incisive : il ne faut pas confondre le "scanline" de haute volée de PRMan avec le scanline de daube qu'on trouve dans 3DStudio...

Le langage RenderMan consiste en deux grandes entités : le langage de description géométrique des scènes, sous forme de fichiers .rib (dont nous ne nous occuperons pas), et le langage de description des matériaux, appelés "shaders", sous forme de fichiers .sl.

c'est quoi un shader ?

Contrairement aux systèmes de textures "classiques", où on se contente d'activer et de paramétrer des options, un shader est un vrai petit programme, actif, qui prend des informations spatiales que lui donne le moteur de rendu, et renvoie, après traitement, des informations de couleur, transparence, etc.. à ce moteur de rendu.

Le moteur de rendu dit : "eh, shader Bois, j'ai un truc à te demander... je voudrais connaître la couleur du point (x,y,z) de la surface Machin, ma caméra est à (x,y,z), la normale du point est (x,y,z), etc, etc..".

Le shader Bois prend les paramètres, les traite avec son algorithme particulier, et dit au moteur de rendu : "tiens, la couleur du point, c'est (r,g,b), et l'opacité c'est (r,g,b)".

Le moteur de rendu colorie le pixel comme il faut, et passe au suivant, sans même dire merci au shader, il a pas que ça à faire, non plus !

autre remarque incisive : certains logiciels commerciaux utilisent abusivement le terme de "shader", alors que leur système de texturage est tout à fait conventionnel.

c'est compliqué à utiliser ?

Oui et non. Il est vrai que l'écriture de shaders complexes demande des compétences en programmation presque équivalentes à celles requises pour aller directement modifier le code du système de textures de POV-Ray ! Mais, néanmoins, pour de nombreux cas simples, un utilisateur "normal" peut tirer quelque bénéfices de ce système, qui est relativement facile à mettre en oeuvre.

Rédacteur: Fabien Mosen