シュリックの反射モデル (1)
自作レンダラーにシュリックの反射モデルを導入してみました。このモデルの発案者であるシュリック氏の論文「An Inexpensive BRDF Model for Physically-based Rendring」に従って素直に実装しただけですが、案の定、不自然な箇所が多くまだまだこれからです。
§
シュリックの反射モデルは、物体表面の荒さを調整するパラメータによって、拡散反射から鏡面反射までを連続して変化させることが可能なのが特徴です。滑らかな(荒さが小さい)物質ほど鏡面反射率が高くなるという性質は、とても直感的で理解しやすいですね。また、フォンの反射モデルと違い、拡散反射項と鏡面反射項を個別に設定する必要がなく扱いやすいのも利点です。ちなみに、原著論文では、拡散反射項d・光沢反射項g・鏡面反射項sを荒さrの値から自動的に決定する以下の式が提案されています。各項を手動であえて決定しないのは、おそらくパラメータ設定の単純さというこのモデルの利点を損なわないためでしょう。なので、もしも自分でモデルをカスタマイズするならば、独自の補間関数を使う方がベターかと思います。
if ( r < 0.5 ) { g = 4*r*(1 - r); d = 0; s = 1 - g; } else { g = 4*r*(1 - r); d = 1 - g; s = 0; }
以下は、rを変化させて得られた画像で、左からr=0.1 r = 0.5 r = 0.9 となっています。鏡面反射(r = 0.1)のハイライトがもっと目立ってもいいような気がしますが、何か間違っているのでしょうか。今は r < 0.5 とすると、シーン全体が大変暗くなる傾向があります。