Burley Diffuseについて考えてみる

Brent Burleyさんが、下記の論文中で述べている、Fresnelの効果を組み入れた、Diffuseモデルについて考えてみます。

参照

Physically-Based Shading at Disney[Brent Burley, SIGGRAPH 2012]

Diffuseの式の特徴について

参照論文の5.3項で以下のようなDiffuseの式が示されています。

d_fd
d_fd90

fdの先頭の係数は、LambertモデルのBRDFです。それ以下の部分がLambertモデルの変調をしていると言えると思います。Lambertモデルに対する係数は、roughnessの値を0~1までとすると、0.25~6.25まで変化するので、従来のDiffuseに対して、非常に幅の大きな変化量を持っていることが分かります。
式の特性として以下のが挙げられると思います。

  • NdotL, NdotVがそれぞれ0(90度)に近づくにしたがって、Fd90の値の影響を大きく受ける。
  • Fd90の値は、LdotHが1(0度)のときに最大(2.5)となり、LdotHが0(90度)のときに0.5となる。

したがって、LightとViewが同じ方向で、incidentの法線がLight/Viewに対して、90度の角度を持つとき、最大(6.25) の値となります。一方で、Fresnel反射が最大となる、LightとViewが正対した条件では最小(0.25)となります。incidentの法線がViewやLightに対して正対するにつれて、Fd90の影響は小さくなり、1.0へと近づいていきます。
このことから、上記の式はフレネル反射が増大するときは値が小さくなっていき、View/Lightがgrazing angleに近づきつつも、Fresnel反射の値が小さい時は、値が大きくなるように作られています。
Slick近似のFresnel反射の計算と一緒に使用することで、roughnessの高いマテリアルで、エッジ付近の明るさを高く保つ効果が期待できます。
また、この式は、Helmholtzの相反性を保っています。

式の意味を考えてみる

上記の式は、相反性を保っていますが、Fd90の値は、LightとViewの成す角度に敏感に反応します。また、LdotHが1(0度の時)に値が最大となります。これはどちらかというと、拡散反射というよりは、指向性を持った再帰反射モデルに近いものだと思います。
また、Fd90が1以上か、1以下かで、式の意味が異なります。
Fd90が1以下ならば、Fresnel反射によって、媒質に入る前に反射される減衰と、媒質内で反射される減衰を考慮している式に見えますが、Fd90が1以上で起きる増幅に関しては、拡散反射で説明するのが難しいです。Diffuse項で計算すべきものなのかは考慮が必要だと思います。この式に関しては、論文中でも経験的に求められた式である旨が記されているので、深い物理的根拠があるわけではなさそうです。

roughnessが0の状態ならば、光が媒質に対して入射する量は、NdotLでSchlickの近似式より反射量を計算し、残りの量を入射量とする事で計算可能だと思います。
媒質から射出する光の量をNdotVでSchlickの近似式を計算することで求めるのも、屈折を考慮しないと論文中で明言しているので、理に適っていると思います。
ただし、拡散反射では、ひとたび媒質に入射した光の向きは、一様に拡散されると考えるのが基本で、Fd90の値のようにLdotHの影響を強く受けるの関数が計算に含まれるのは、拡散反射以外の要素を計算しているといえると思います。
しかし、Fd90に指向性を導入しないとすると、roughnessの関数にするしかなく、入射した以上の光を射出することは出来ないので、最大値が1の関数とするしかありません。
この様に計算すると、grazing angleに近づくにしたがって、Diffuseの値は急速に低下する関数となります。しかし、LambertモデルのDiffuseは、grazing angle付近で暗いと言われることが多く、これをさらに強調することになってしまいます。
そのため論文著者は、Fd90のような指向性を導入し、Fresnelの値が小さい時のgrazing angle付近の暗さを補完するための式を導入したのだと思います。