Combining BSDF 3


こんにちは、篠島です。前回に引き続きBSDFの説明です。BSDFを足したりしていきます。

 

以前の記事で、レンダリングの Diffuse と Specular は足し合わせる事ができると書きましたが、同じようにBSDFも足し合わせることができるのです。Diffuse 用のBSDF と Specular 用のBSDFを足し合わせると、問題なくDiffuse + Specular の結果になります。

 

さらにBSDFに適当な値を掛け合わせて強さを調節できたりします。が、物理的に正しくありません。物理的に入射光以上の強さを反射させることは不可能です。なので上の例のように単純にBSDFを足し合わせたのも実は物理的には正しくありません。Diffuse に Specular を足した分、反射光が入射光よりも強くなってしまってます。

 

実は Conserve Engery というノードがあり、これを使うと物理的に正しくなるように反射光の強さを自動的に調整してくれます。Conserve Energy ありだと若干暗くなっているのがわかりますね。これはSpecularが追加された分Diffuseをちょっと弱めているためです。

 

ちなみに BSDF の変数 Fは PBR モードでレンダリングした時にしか使われません。上のシェーダーをNon-PBRでレンダリングすると真っ黒になります。そこで、Cf に色情報を渡すために Compute Lighting ノードによって BSDF を元に色を計算します。これにより Non-PBR でレンダリングしてもきちんと表示されるようになります。

 

ちょっと複雑ですが、Houdini に最初からあるシェーダーは上で説明したことは全部組み込まれているので自動的に物理的に正しく、PBRでもNon-PBRでもレンダリングしてくれます。自分でシェーダーを一から作る時は気をつけましょう。

 

今回のレンダリングのサンプルに使ってる画像は下からダウンロードできます。
sIBL Archive