vers l'index général de l'aide
Dans un fichier intitulé "monshader.sl" :
surface monshader( color pig=(1,1,1); //on définit un paramètre de couleur //nommé "pig", et on lui donne une valeur //de (1,1,1) par défaut. ) { Ci = pig; //la couleur de sortie, c'est la couleur de "pig". Oi = Os; //l'opacité de sortie est l'opacité par défaut }
Notez que la syntaxe des commentaires est la même que celle de POV-Ray.
Lancez la compilation du shader avec la commande "povslc monshader.sl".
Puis, dans le fichier .pov :
object {sphere <0,0,0>,1 pigment { shader{ shader_file "monshader.slp" "pig" <1,1,.5> //on donne une valeur à "pig" } } }
Et zouuu... une sphère jaune clair !
Note : on laisse à POV-Ray le soin de faire interagir la texture avec les lumières, en laissant le finish par défaut. La shader ne concerne, pour l'heure, que le pigment.
Pour le moment, on ne va plus toucher au fichier .pov, on se contentera de bricoler le shader.
On a plein de paramètres à notre disposition, voyons comment nous pouvons influencer la couleur de la surface en fonction de paramètres spatiaux :
surface monshader( color pig=(1,1,1); ) { color n_col = color Ng; Ci = pig + n_col; Oi = Os; }
Nous avons défini une variable (n_col) qui place dans un vecteur de couleur la valeur de la normale du point. Notez que le type de variable est spécifié à chaque fois, c'est plus prudent. Devant "n_col", color spécifie (c'est obligatoire) le type de variable qui est défini, et devant "Ng", color force le passage du type "normal" au type "color". On ajoute "n_col" à la valeur de "pig", et voilà !
Rédacteur: Fabien Mosen