Combining BSDF 2


どうも篠島です。前回はLayerについて説明しました。今回はBSDFにまつわるシェーダーの話をしてみます。

 

 

BSDFとは Bidirectional scattering distribution function の略で、要は物体の表面が光をどの様に反射するのかを求める関数です。光が反射した方向と、反射した方向から光の方向を求めることができるのでBidirectional という名前がついています。下の図のようにDiffuseは全体的に拡散した分布になっています。Specular は特定の方向に反射しているのが分かります。いわばBSDFはレイがどのくらいの確率でどの方向へ飛ぶかという統計学という見方も出来ますね。レイの反射を表した関数はBRDFと呼ばれ、ガラスなどの透明なオブジェクトでレイがオブジェクト内を通っていくのがBTDFと呼ばれ、このBRDF と BTDF を足したものをまとめてBSDFと呼びます。

下のGIFはライトの位置による Specular の分布の変化を表したものです。ラインが長いほどその方向にレイが飛ぶ確率が高く、ラインが短いとその方向に飛ぶ確率は少ないと言えます。もしレンダラが確率の少ないレイの方向を選んでしまった場合は、シェーダーによって計算された色に、その方向に進む確率を掛け合わせます。これにより、サンプリングを複数した場合に、確率の少ないレイが最終的な色に及ぼす影響を少くしています。

 

ちなみに Specular の Roughness を調節した時のBRDFの変化が下のGIFです。Roughness が 0 のツルツルのオブジェクトの場合は反射されるレイはほぼ同じ方向に飛び、Roughness が1 などザラザラしたオブジェクトはDiffuseの様に全方向に均一にレイが拡散するのが分かります。

 

 

要はBSDFはサーフェースの特性を表したものといえますね。次回はBSDFを足したりしてみます。