RenderMan Shading Language

Renderman Shading Language (略称：RSL) はのコンポーネントであり、シェーダーの定義に使われる。この言語の構文はC言語風となっている。

RSLで書かれたシェーダーは Pixar の PhotoRealistic RenderMan、DNA Research の 3Delight、Sitexgraphics の Air、オープンソースソリューションの Pixie や Aqsis のような RenderMan 準拠レンダラーであれば改変なく使用可能である。

RenderMan Shading Language では、独立関数と5種のシェーダー型（サーフェス、ライト、ボリューム、イメージャー、及びディスプレイスメント）が定義されている。

金属サーフェスを定義するサーフェスシェーダーの例：
surface metal (float Ka = 1; float Ks = 1; float roughness = 0.1;)
{
  normal Nf = faceforward (normalize(N), I);
  vector V = - normalize (I);
  Oi = Os;
  Ci = Os * Cs * (Ka * ambient() + Ks * specular (Nf, V, roughness));
}
シェーダーは Cs（表面色）、N（与えられた点での法線）、Ci（最終的な表面色）などの特殊変数を読み書きすることで、その動作を表現する。シェーダーの引数はモデルの複数オブジェクトにアタッチされる大域パラメータである（つまり1つの金属シェーダーを異なる金属などに使用できる）。シェーダーには戻り値が無いものの、関数は引数を取って値を返すように定義可能である。例えば次の関数はドット積演算子「.」を使ってベクトル長を算出する:
float length (vector v) {
  return sqrt (v . v); /* .はドット積 */
}

参考文献

外部リンク 
 Shading Language (RSL)のドキュメント

RenderMan

プログラミング言語