のようになります。このように反射だけでなく、透過&拡散を考えた関数をBRDFと区別し、BSDF (Bidirectional Scatter distribution function) と呼びます。髪や毛皮のレンダリングにおいては、このBSDFをいかに物理的により正確かつ効率的に計算するかというのが、一つの大きな焦点になっています。ただ、一応注意したい点として今回BSDFを考えるのは、髪や毛皮はBSDFで表現できるという意味ではなく、髪や毛皮はBSDFで表現できると仮定して話を進めると一応確認しておきます(この場合というより、数式で自然現象を説明するときは大体こうなる気がしますが・・・)。これはレンダリング時に毛の太さがピクセルよりも十分に細く、内部での複雑な拡散の挙動は無視できる、割に合わないといってもいいでしょう。というわけで、このBSDFをいかに実装するのかが今回の目標となります。