Home           
Introduction aux shaders
 

<< Displacement avec RenderMan   Premiers shaders >>

Voici le premier tutorial sur les shaders de RenderMan.

Les shaders
Première approche du shading language
Fichier RIB
Premier shader

Les shaders

Les shaders sont des petits bouts de programmes qui servent à modifier l'aspect d'un rendu. C'est la société Pixar qui la première a eu l'idée de les utiliser (il faut aussi voir du côté de l'université de Stanford).
Les shaders peuvent servir à des choses basiques comme colorier une surface, jusuq'à faire pousser des cheveux!!

Nous avons déjà vu de nombreux shaders dans le tutorial sur le shading :

  • constant
  • matte
  • rsmetal
  • ...

Nous allons voir ici comment créer certains shaders.

Il faut savoir que les shaders doivent être compilés avant d'être utilisés. Le compilateur de shaders pour prman s'appelle shader, pour BMRT, slc et pour Entropy, sle.

Nous avons vu que les fichiers renderman avaient pour extension .rib, les shaders quant à eux ont pour extension .sl : sl pour shading language. Une fois que notre code est écrit, il suffit de taper : slc monshader.sl pour avoir un shader compilé.

Première approche du shading language

Le shading language est donc le langage utilisé par Pixar pour faire ses shaders. Il est très proche du langage C. Il est à la base de nombreux langages de shaders temps réels de nos jours tels que le Cg de nVidia, le HLSL de Microsoft et l'OGSL, le langage de shader d'OpenGL.

Ce langage apporte de nouveaux types et permet de réaliser des shaders très rapidement. Nous verrons les spécificités de ce lanage dans un autre tutorial.

Il y a 5 types de shaders disponible dans RenderMan:

  • les shaders de surface : permettent de changer la couleur, la position, etc des points de surface. Ces shaders commencent par surface;
  • les shaders de lumière : permettent de créer des lampes spéciales. Ces shaders commencent par light;
  • les shaders de volume : permettent de créer des effets comme le brouillard. Ces shaders commencent par volume;
  • les shaders de displacement : permettent de déplacer les points de la surface. Ces shaders commencent par displacement;
  • les shaders de changements de couleurs (imagers) : permettent de changer les couleurs d'une surface. Ces shaders commencent par imager.

Fichier RIB

Voici le fichier RIB qui va servir pour tous les tests de shaders que nous allons faire.
Display "simpleshader.tiff" "file" "rgb"
Format 320 240 1
Projection "perspective" "fov" [45]
LightSource "ambientlight" 1 "intensity" [0.2]
LightSource "spotlight" 2 "from" [-1 1 0] "to" [0 0 3] "intensity" [3]

Translate 0 0 3

WorldBegin
   Color 1 0 0
   Surface "SHADER"
   Sphere 1 -1 1 360
WorldEnd

Il faut bien sûr changer "SHADER" parle nom du shader que l'on a créé.

Si on enlève la ligne Surface "SHADER", voici ce que l'on obtient :

Premier shader

Voici le premier shader de surface que nous allons créer:
surface first()
{
   Oi = Os;
   Ci = Cs*Oi;
}

Voici donc notre premier shader de surface. Et voici l'image qui en resulte :

Ce shader a déjà été vu précédemment : c'est le shader constant.

Cs et Os sont les couleurs et opacités d'entrée. Ci et Oi sont les couleurs et opacités de sortie.

Une fois que le sahder est écrit et enregistré sous first.sl, il faut faire slc shader.sl (pour compiler avec BMRT).

Le fichier RIB doit se modifier ainsi : Surface "SHADER"
en Surface "first"
.

Et après, vous devez utiliser votre moteur de rendu pour rendre votre image (BMRT pour moi). Pour les sources : le fichier RIB
le shader

Voici le premier tutorial sur les shaders de RenderMan est fini.

 

<< Displacement avec RenderMan   Premiers shaders >>
  eXTReMe Tracker