[RSL] specular() is implementation-dependent

by syoyo

RSL の specular() が、実装依存であることが分かりました.
RI spec に載っている specular() の式と、prman などで使われている specular() の内部実装の式がなんと異なる!
Advanced RenderMan にもそんな注意文がかかれていました.
さすが RenderMan, 見事なダブルスタンダード?ですね.

aqsis のソースを見ると、RI spec の式で、1.0 / roughness のところを 1.0 / (roughness / 8) とすると prman の式と近くなるようです.

lucille はそのようなレガシー(?)なあやふやさまで再現する気はないので,
specular() は RI Spec 通りにして、prman のふるまいをエミュレートするのは別関数化したいなぁと思っています.

ま、一番いいのは specular() は使わずに、独自できちっと反射モデルや BRDF 式をシェーダ内でコーディングすることですかね.

Advertisements