超雑訳 Revisiting Physically Based Shading at Imageworks

こんこよ~。Pocolです。
今日は,
[Kulla 2017] Christopher Kulla, Aljandro Conty, “Revisiting Physically Based Shading at Imageworks”, SIGGRAPH 2017 Courses: Physically Based Shading in Theory and Practice.
を読んでみようと思います。
いつもながら、誤字・誤訳があるかと思いますので,ご指摘頂ける場合は正しい翻訳と共に指摘して頂けると有難いです。
特に断りが無い限り,図は[Kulla 2017]より引用しているものになりますので,予めご注意ください。



ご紹介ありがとうございました。私はクリス・クーラと申します。私はアレックスと一緒に、Imageworksにおける物理ベースのシェーディングに関する最新の取り組みについて発表させていただきます。
いくつかの修正点と事後の知見は、スピーカーノートで赤色で強調されます。


では、今日お話しする内容を簡単にご紹介します。できるだけ多くの情報を詰め込んだつもりですので、さっそくお話しさせていただきます。


まず、この研究の基本的な動機について説明します。
物理ベースのシェーディングモデルはかなり前から使っていて、2010年、2012年、2013年にこのコースに参加しました。それ以来、何が変わったのでしょうか?



これまでのシェーダーライブラリーは、個々のローブという考え方で作られていました。これはアーティストに大きな柔軟性をもたらしましたが、多くのノブを「ちょうどよく」回す必要があったため、単純なケースをヒットさせるのが難しくなっていました。
制作データを見ると、物理的にありえない値を使っていい感じに仕上げているケースもたまに見受けられます。例えば、木材のIORが100を超えるようなケースも見受けられました。ローブのスケーリングの関係で、最終的には問題なく見えるのですが、パラメータ空間が大きくなりすぎていることがうかがえます。
しかし、それ以上に問題だったのは、独立した複数のローブを追加することで、特にグレージング角において過剰なエネルギーが発生することでした。



私たちの最大のインスピレーションは、ディズニーのBRDFモデルから得ました。
このモデルは、誘電体と導体をきれいに分離することで、より物理的な材質の描写を促しています。また、コントロールも直感的なパラメータの小さなセットに凝縮されています。
また、レイヤーを重ねた場合でも、常にエネルギー保存性の高いマテリアルでありたいと考えました。エネルギー保存性とは、すべてのエネルギーを散乱させるマテリアルは、アルベドを1に近づけるべきであるという意味です。
相反でないBRDFがいくつかあり、可能な限りそれに代わるものを探したいと思っていました。
最後に、他のプレゼンと同様、サブサーフェススキャッタリングとボリュームレンダリングの統一を試みる時期が来たと感じています。



まず、シェーディングモデルを構成する基本的なBSDFのエネルギー保存について説明します。



やはり、GGX分布を選びました。これは業界標準になりつつあるもので、その流れに乗りたかったんです。
現在のマイクロファセットモデルの最大の問題は、エネルギーを保存する(言い換えれば、何も生み出さない)一方で、高いラフネスではエネルギーを保存できないことです。これは、単一散乱を仮定しているためです。
ここでは、マイクロファセットがフレネルを持たない理想的な金属を示しています。ラフネス1では、入射エネルギーの半分近くを失っています。
正誤表:失われるエネルギーは60%近くで,50%ではない。



もちろん、この問題に気づいたのは私たちが初めてではありません。
Kelemenは2001年に、事前計算されたテーブルに依存する非常に汎用的な解決策を発表しました。彼の論文では、この技術はより広範囲に適用可能であるにもかかわらず、プラスチックについてのみ論じています。
しかし、この論文では、BRDFのパラメータや透過率を変化させることについては直接触れていません。



Wenzel Jakobらは、多くのケースを解決し、レイヤーを含む非常に包括的なソリューションを開発しましたが、彼らは非常に複雑なフレームワークの中でそれを行い、テクスチャを持つマテリアルにはまだ重すぎました。



昨年、Eric Heitzは、マイクロファセット間の多重散乱に関するグランドトゥルースの結果を発表しました。これは事前計算を全く必要としませんが、モデルは確率的であり、サンプリングとBRDFの評価の両方に乱数が必要であることを意味しています。これは、私たちのレンダリングアーキテクチャには適合しないものでした。



コサイン加重BRDFを積分することで、エネルギー損失を測定することができます。
ここで、\(\cos \theta\)の項をギリシャ文字の\(\mu\)で表していることに注目してください。
これは、スライドに三角関数が多くなりすぎないようにするためで、実際に数式がどのように実装されているかに近いものです。
このエネルギーEは、指向性アルベドと呼ばれることもあります。ある視線方向に対して0から1まで変化します。
一定値の背景を持つライティング積分に相当するため、「ファーネス・テスト」とも呼ばれることがあります。



Kelemen論文で紹介された手法は、以下の式に集約されます。
先ほどの関数\(E\)から新しいBRDFローブを作ることができます。このローブを元のBRDFに追加すると、常に完全にエネルギーを保存した結果が得られます。
ここでの分母は、\(E\)の余弦加重平均を含む正規化項です。これは、あらゆる視聴可能な方向に対するエネルギー損失の平均量と考えることができます。
また、このBRDFは相反であることに注意してください。つまり、ビュー方向とライト方向の余弦を交換しても、結果は変わりません。



なぜこのような仕組みになっているのかを理解するためには、数分かけて計算をする価値があります。この式はKelemenの論文で証明なしに述べられています。
実は、この導出は非常に簡単なのです。先ほど紹介した新しいBRDFの方向性アルベドを計算するのです。多くの項が積分からすぐに引き出せます。
残された積分は、実は\(E_{avg}\)の定義だけで、分母は打ち消されているのです。\(1-E\)を視線方向の余弦で評価したものが残るだけです。
つまり、この新しいBRDFの指向性アルベドは、元のBRDFから失われたエネルギーを正確に補っているのです。また、私はBRDFについて特別な仮定をしていないことに注意してください。この方法は常に動作します。



さて、お気づきのように、これまで使ってきた関数\(E\)は積分として表現されています。そして残念なことに、私たちが注目するBRDFにとって、この積分は閉形式解を持ちません。
Kelemen氏の論文では、すべてのパラメータが一定であると仮定して、この関数を単純に表にしています。しかし、我々は、ラフネス、異方性、IORを空間的に変化させることができるようにしたいと考えています。金属の場合、IORはそれ自体、いくつかのパラメータによって定義されます。
だから、すべての可能性を表にすることは現実的ではないようです。



とにかくやってみましょう。一番大事なのはラフネスだから、ラフネスから始めてみましょう。
\(1-E\)を可能な限りの視線余弦とラフネスの値に対して事前計算すると、次のような結果が得られます。特に、最も重要である高いラフネス値において、非常に滑らかに見えます。
では、どれくらいの解像度があれば、この方法が有効なのでしょうか。



\(32^2\)で十分であることがわかりました。浮動小数点数で保存すると、これはちょうど4Kbになり、私たちは単純化のためにこの方法を選びました。また、\(E_{avg}\)の1次元テーブルも、ラフネスによってインデックス付けされた32のエントリと一緒に保存しました。
解析的なフィットもしました、それほど精度は高くありません。付録をご覧ください。
さて、先ほどからラフネスを増していくマイクロファセット球の列ですが…。

エネルギー補填OFF



…高ラフネスで期待通りの結果を得ることができます。ラフネス範囲の中央部でも、いかに多くのエネルギーが回復しているかに注目してください。

エネルギー補填ON



そこで、次に説明するのがフレネル項です。これをBRDFに加えると、もはやアルベドを1とは考えられません。
Jakobたちが見つけたソリューションは、次のような仮定をしています。多重散乱エネルギーは拡散しているので、前に使ったエネルギー損失\(E_{avg}\)と同様に、余弦加重平均フレネルでおおまかにモデル化することができます。ここでいう\(E_{avg}\)とは、1回のマイクロファセットバウンスでどれだけのエネルギーが占められるかに相当します。
これを小さな幾何学列に置き換えると、次のような式になり、これをエネルギー補填ローブに乗じるだけでよい。
正誤表:2つ目の式が修正されています(Emmanuel Turquinによって知らされました)。より良い近似は付録を参照



ここでは、金の材質にフレネル補正を適用した結果をご紹介します。補正を行わない場合、ラフネスの高いマテリアルはかなりくすんだ印象になります。

エネルギー補填OFF



また、エネルギー補填を行うことで、多重散乱によるほんの少しの彩度アップで、期待通りの色味を維持することができます。

エネルギー補填ON



ここでも、この平均的なフレネル項の計算方法について触れています。それはまた別の積分として定義されます。
Jakobの論文では、ガウス求積法を使うことが提案されていましたが、実はこれは非常に合理的な選択です。フレネル曲線は非常に滑らかなので、2点だけ使っても驚くほど良い精度になります。
しかし、積分の数値的な当てはめを見つけることで、もう少し早くなるのでは…



早速ですが、スライドはオンラインに掲載されますのでご安心ください。
誘電体フレネルは、IORという1つの引数を持つだけなので、最もシンプルです。
これらのフィットは誤差が1%以下であり、十分です。また、非常に広い範囲で有効です。おそらく必要以上に広い範囲ですが、奇妙なIOR値を持つレガシーデータがある場合には役に立つかもしれません。
IORが1より小さい場合の適合は、数回のスライドでガラスに必要になるので、載せておきました。



誘電体フレネルの結果はこちらです。この場合、フレネル効果は非常に強く、エネルギー補填の微調整は非常に微妙なものです。

エネルギー補填OFF



この微調整は後ろからではわからないかもしれません。ラフネスの値が高いほど、右側でほとんど見えています。

エネルギー補填ON



ここでは、メタリックフレネルのフィッティングを紹介します。Ole Gulbrandsenによるアーティストフレンドリーなパラメタリゼーションを使用し、ユーザーにパラメータを提示する方法にしています。
この場合、最大誤差は少し大きくなりますが、平均誤差はまだ1%以下です。
より正確なガウス求積法と比較して、このフィットによる実際の問題は観察されていない、と言うべきでしょう。実際、フィットが0から1の範囲から外れない限り、エネルギーは発生しないのです。



以前見たゴールドの結果はこちらです。



そしてもうひとつ。これは、エッジカラーとそのフォールオフを非常に正確にコントロールできる、よりアーティストフレンドリーなメタルのバリエーションです。物理的なフレネルは常にエッジで1になり、エッジの色合いは本当に僅かです。
実際のフレネル方程式ではモデル化できない物理的な効果が、実はたくさんあるんです。例えば、車の塗料やアルマイト処理された金属などです。物理的に難しいことを考えるよりも、アーティストに好きな色を選んでもらえばいいんです。
この場合、フレネルの公式は単純なので、平均は厳密な解を持つことになる。もし、あなたがこのようなものをお持ちなら、同様に平均的なフレネル曲線を導き出すことができるかもしれません。



ここでは、アーティスティックモードの例として、エッジにグリーンの色味をつけたものを紹介します。
私よりもアーティストの方が上手に使いこなしているはずです。



最後に、異方性というパラメータについて説明します。これは、xのラフネスを増加させ、yのラフネスを減少させる1つの浮動小数で表します。
これはディズニーのモデルに非常に似ていますが、このバージョンは完全にシャープな異方性ハイライトを作ることができるので、私たちのアーティストはそれを利用しました。
追加の表の次元を導入するよりも、異方性を無視して、元のラフネスだけでエネルギー補填を行うことにしました。完璧とは言えませんが、何もしない場合の50%程度に比べれば、95%程度の保存が可能です。



ここでは、すべての可能なラフネスと異方性の値のくさびを示し、両方のパラメータは0から1までの範囲である。

エネルギー補填 OFF



ここでもエネルギー補填項により、失われたエネルギーの大部分を回復することができます。

エネルギー補填 ON



つまり、マイクロファセット・ローブに欠けている多重散乱の効果を近似する単純なBRDFローブができたということです。私たちは、ほとんどKelemenの論文の手法に従いましたが、以下の方法で表化の必要性を減らしました。
ラフネスのための小さなテーブルを使うこと。
平均フレネルに対する解析的なフィットを用いる。
そして、異方性を完全に無視しただけのものです。



ここまでがスペキュラで、次はディフューズの項を説明します。実は、Kelemenの論文は元々このような内容だったのです。
フレネルはエッジで1になるので、一定の拡散項を加えるだけでは、決してエネルギー保存にはなりません。
しかし、スペキュラー項だけのエネルギー保存を得るのに役立った同じ手法を、スペキュラー/ディフューズの組み合わせのエネルギー保存を得るために再利用することができます。
今回はBRDF全体の方向性アルベド(\(f+f_{ms}\))を記録する必要があるため、ラフネスとIORの両方を表にする必要があります。入射角コサインと合わせて、3Dテーブルを作ります。
エネルギー損失関数が以前よりさらに滑らかになっているのは良いことです。各次元に16個のエントリーを用意すれば、16kbのフロートとして格納できることがわかりました。



これはその結果です。繰り返しになりますが、一定のディフューズローブに対してマイクロファセットスペキュラモデルを単純に追加しただけでは、グレージング角度で余分なエネルギーが得られます。これは、低いラフネスでより顕著ですが、高いラフネスでもまだ起こります。
NOTE:この画像セットは、エネルギー保存のスペキュラを使用せずに生成されたものです。

エネルギー補填 OFF



そして、エネルギー補填カーブでディフューズを変調すると、完全にエネルギーを保存した結果が得られます。
NOTE:この画像セットは、エネルギー保存するスペキュラを用いて生成されたものです。

エネルギー補填 ON



今度は、最も複雑なケースであるガラスにたどり着きます。
また、通常、サーフェイスから離れるまでに数回のバウンスを要するため、エネルギー損失の問題が最も深刻な場所でもあります。
もうひとつ複雑なのは、相反の条件です。
媒体を変えるときに視野と光の方向を交換するには、IORの2乗でスケーリングする必要があります。これはすべてEric Veachの論文で説明されており、双方向性メソッドを使用する場合は適切に説明する必要があります。
誘電体拡散の場合と同じように、ここでもラフネスとIORの両方が重要です。ここでも3Dテーブルを使用しますが、今回は全球に渡って積分しています。
幸いなことに、関数が非常にスムーズなので、ここでも1次元あたり16個のエントリーが問題なく機能するようです。



ここでは、反射と透過の補填ローブを構築するための例を実行するつもりです。
まず、サーフェスに入るレイから始めます。



マイクロファセットは、サーフェイスの上と下の両方で光を散乱させます。



単一散乱を仮定しているため、若干のエネルギーが失われます。
足りないエネルギーを適切な量で反射や透過に回復させるエネルギー補填項を我々は構築したいです。
BRDFの場合と非常に似たような式になりますが、項ごとに紹介して、それぞれが何をするのかを説明します。



1つ目は、\(1-E\)をビューイングコサインで評価したものです。これは、回収しようとしているエネルギー量を表しています。
先ほどのスライドで、これは他のものをすべて打ち消した後に残った項であることを思い出してください。



反射と透過のローブがあるため、エネルギーをある比率で分割する必要があります。



そして最後に残りの項を足しますが、これらは積分して1になるように設計されています。反射の項は前と同じように働きますが、透過については、反対側からテーブル化したエネルギー曲線を使っていることに注意してください。
この慣例は、相反要件に由来します。
方向を交換するということは、IORを反転させるということでもあります。



早速ですが、レイがサーフェイスから離れるという逆のケースを紹介します。



この場合も、マイクロファセットモデルでは、利用可能なエネルギーのごく一部しか散乱させません。


今、\(E\)を逆のIORで評価していることに注意してください。



反射と屈折の項は前と同じですが、IORが反転しています。一番上の透過項はIORとIORの逆から\(E\)関数を使ったものです。
正誤表:\(f_{msR}\)の分母を修正(Emmanuel Turquin氏による指摘)。



多重散乱ローブの全体的な形は示しました。あとは、それらが本当に相反かどうかを確認する必要があります。
ビューとライトのコサインに依存する計算式の部分は、設計上、逆数になっています。ですから、全体のスケーリングファクターが一致するようにすればいいのです。
まだ比率を明示していないので、その自由度を利用して、物事が均等になるようにします。
しかし、方程式は1つだけで、2つの未知数、つまり、サーフェイスに入るときの比率とサーフェイスから出るときの2つの比率があるのです。



これをもう少し減らすために、比率が平均的なフレネルに近くなるような推測をするのです。そして、両者を等しくする小さなスケーリングファクターxを解けばよいのです。
そのため、最終的な反射と透過の比率を定義して、モデルを完成させることになります。



計算が大変だったから、その甲斐があったかどうか。
エネルギー保存のないガラス球の列がこちら…。

エネルギー補填 OFF



…そして今、私たちの拡張ローブが追加されました。
この補正により、先ほどと同じように、適度なラフネスの値であっても、見た目に大きな違いが出ています。

エネルギー補填 ON



これからは、薄型のガラスの説明をするアレックスにトークを託します。
また、誘電体薄膜のサーフェイスシミュレーションも行います。


薄いサーフェスでは、単一のサーフェスだけを使用して、完全にモデル化された薄いオブジェクトを作成できます。窓や葉っぱ、蝶の羽などに非常に有効です。このようなオブジェクトは、2つの側面でモデル化すると数値的な問題が発生します。


2回の屈折、反射、フレネル項、多重バウンスを考慮し、すべてのエネルギーを保存できるようにしています。サーフェイスは局所的に平らであると仮定します。



反射と屈折の2つのローブができ、その重みはバウンスとそれに伴う吸収の直列和に由来します。



屈折ローブにはミラー反射を用いますが、両変換のヤコビアンが異なるため、ラフネスの影響が異なります。この違いがどのように適用されるかのヒントは、2つのヤコビアンがレイPDFをどのように変換するかを関連付けることによって得られました。



我々は基本的に、各辺の異なるヤコビアンを用いて、ラフネスによってパラメータ化された最大可能PDFを等化し、制約を満たすために必要なラフネスのスケーリングが何であるかを求めます。我々は分散の大まかな推定で同様の結果を得ます。そして最後に、2つの屈折イベントがあることを考慮し、手動で調整しました。



このように、部分的に不明瞭な数学は少しお粗末かもしれませんが、私たちのニーズに合わせて形を整え、期待通りの動作をする、良い出発点となる曲線を与えてくれました。そして、この曲線は私たちに良いマッピングを与えてくれます。



これは、厚みをモデル化し,ガラスBSDFを描画したものです。


…そして、これは私たちの薄型レイヤーを使った単一のサーフェイスです。ラフネスが非常によく合致していますし、吸着による色も近いものがあります。普通は切り替わらないのですが、なるべく近づけたいと思いました。


これで表面散乱モデルはすべて網羅されました。次に、表面下散乱について説明します。クリスに話をお返しします。



誘電体境界を通して到達する密度一定の均質な媒質として、表面下散乱を記述します。つまり、ガラス内部の一定体積として表現しています。
今朝の「プロダクションボリュームレンダリング講座」では、サーフェスシェーダーに優先順位をつけて独自のボリューム内部を定義できるようにする方法を説明しました。今度は、アーティストが外観を制御する方法についても説明したいと思います。
平均自由行程や散乱半径によって粒子の全体密度を定義し、bleed量をコントロールできるようにしました。
そして、各粒子のアルベド\(\alpha\)によって色が定義されます。



\(\alpha\)は概念的にはディフューズカラーと同じ役割を持ちますが、同じ値を設定しても結果は大きく異なります。ここでは、前列はサブサーフェススキャッタリングを使用し、後列は同じ色に設定されたディフューズを使用しています。
これはすでに以前の講演で述べたことですが、宇宙物理学の文献から得た次の式を使うということだけ述べておきます。
この式は、\(\alpha\)と\(g\)(位相関数の偏心度)が与えられたときに、\(C\)がどのような色になるかを予測するものです。この式の前提は、全方向から一様に光が当たる半無限半空間であることです。これは決して正確なものではありませんが、典型的な散乱距離ではとてもよく機能します。



もちろん、私たちの場合は、与えられた色\(C\)を達成するためにどのような\(\alpha\)の値を使用するかを知りたいので、この式の逆数を求めます。



そして、このリマッピングの結果がこちらです。
これにより、アーティストにとってより使いやすいモデルになったことは明らかです。



ここで方程式のカーブをプロットして、何をやっているのかを実感してもらいたいのです。\(g\)を後方散乱から前方散乱へと変化させていきます…







…、カーブはどんどん曲がっていきます…



これは、光を境界に向かって反射させるためには、より明るいアルベドが必要だからです。









純粋な前方散乱の位相関数になると、曲線は不安定になります。
これは理にかなっています。なぜかというと、このモデルでは、何らかの色を返すためにはエントリーポイントに戻らなければならないと仮定していますが、その可能性はますます低くなっているからです。



もちろん、実際にはここまでする必要はないので、このような極端な値を避けるために、\(g\)の範囲をクランプします。



左から-1、1へと変化する\(g\)の影響を示した結果がこちらです。ここでも比較のためにディフューズ球を奥に置いています。
アルベドをリマッピングしても、\(g\)を無視すると強度が変化します。
これは、右側の前方散乱しているマテリアルに多く見られます。ライトの大部分が見る人から遠ざかるため、薄暗くなります。
もう少し微妙ですが、左の球は後方散乱でライトがすぐに押し戻されるため、明るくなります。



マッピングに\(g\)を使うことで、全体的に色を均等にすることができます。ただし、前方散乱の多いケースは、まだ正確に一致させるのは少し難しいですが。



しかし、アーティストがこの自動リマッピングを必ずしも好まないことが判明したため、シェーダーではオプションとして残しています。レンダラーに渡される量は、生のボリュームパラメータだけで、リマッピングロジックはすべてシェーダーに残しています。そのため、さまざまなケースに応じて異なるパラメータ化を提供することが非常に簡単です。
また、このリマッピングが全く機能しないという事実が、類似性理論の分野を動かしていることも指摘すべき点です。多くの場合、前方散乱材質の全体的な効果を模倣する等方散乱のパラメータセットが存在します。



今朝は、効率的なボリューム統合のための技術について詳しく説明しました。
私はこれからアレックスに話を譲りますが、アレックスは、表面下の散乱に対する境界の影響をどのように近似するかという重要な詳細について話してくれるでしょう。実際、これはパストレーサーで一般的にコースティクスをどのように近似するかということに、より広く関連しています。
そして、アレックスは、シェーディングモデルの残りの機能についても話してくれます。



これは典型的なコースティックのケースで、球体が点から来る光を集光しています。通常の後方経路追跡では、BSDFサンプリングで光源を見つけるのは本当に難しく、ガラスで光が遮断されるためnext event estimationも不可能になります。多くのノイズを発生させます。



この問題を解決するのがフォワード・パストレーシングです。しかし、私たちの仕事のほとんどは、パフォーマンス上の理由から、このような凝ったインテグレータを使用しません。また、ほとんどの場合、派手な光の形状やレンズ効果には関心がなく、ただ光がガラス窓を通過するようにしたいだけなのです。



我々の解決策:透明シャドウ。ガラスが透明で、光が曲がらないように見せかけるだけです。ガラスがザラザラしている場合は別ですが、その場合は本物を利用可能にすればいいのです。しかし、その場合、いくつかの問題に対処しなければなりません。



まず、間接照明にノイズとなるようなコースティクスが入らないようにする必要があります。そのためには、ラフネスをクランプする必要があります。拡散面をバウンスすると、すべてのガラスがラフに見えるので、残りのウォーキングを行います。次に、透明な影を適用して、滑らかなガラスから失われたエネルギーを埋めます。そして最後に、二重照明に対処する必要があります。間接照明と透明な影の両方が同じことを推測しようとし、それらが加算されることに注意してください。



二重照明を避けるために、透明な影と間接照明の2つの光源に重みをつけて、それらの重みを足したものが1つになるようにします。BDPTの重み付けにヒントを得て、最も高い確率を持つ方法が勝つようにしました。多くの情報が欠落しているので単純化しなければなりませんが、結局のところ、ある散乱イベントと次の散乱イベントの間のラフネスの違いに帰着します。



手短に言えば:サーフェイスが粗く、オクルーダーが滑らかな場合、透明シャドウが最適なアプローチであり、そのウェイトは高くなります。そうでない場合、サーフェイスが滑らかであれば、次に来るものは通常のパストレーシングで処理した方が良く、透明シャドウのウェイトが高くなります。私たちは、このシンプルな公式を考え出し、プロダクションで良い結果を出しています。



しかも、適用するはとても簡単です。パストレーシングやシャドートレーシングの際に、直前のイベントを見て、ラフネスを比較しながら、ライティングのための重みを計算します。完璧ではありませんし、内部バウンスにも注意しなければなりませんが、シンプルな割には非常にまともに見えているのがおわかりいただけると思います。



これはBDPTであり、これをグランドトゥルースの基準とします。ラフネスが増していくガラスの物体です。



ラフネスクランプされた間接な透明シャドウを組み合わせたパストレーシングです。二重照明のため、エネルギーがどのように膨れ上がっているかに注目してください。



そして、これは間接影と透過影に球状の加重をかけたパストレーシングです。BDPTの結果に非常に近いですが、はるかに安価です。



ラフなインターフェースを使えば、出射点でライトに接続するのも問題ありませんから、この方式にウエイトを置くことにしました。



スムーズなケースでは、透明シャドウに頼り、出射点でのライティングをウェイトダウンしますが、パスには引き続き間接照明が当たります。



では、一般的なBSDFの上に、どのようにコーティングやレイヤーを重ねていくかを説明します。



どのBSDFの上にも組み合わせられる便利なコーティングをほんの少しご紹介します。実際、これらを際限なく重ねることができ、その様子をOSLコードでご覧いただけます。



クリスが誘電・拡散エネルギー補填で説明したように、私たちはこれらのコートを適切なアルベドを維持するように構成することを心がけています。しかし,基礎となるBSDFは拡散だけでなく何でもあり得るので,それを再正規化する方法がありません。エネルギー損失を最小限に抑えながら、エネルギー損失を回避する方法でスケーリングするしかないのです。



例えば、このBSDFを例にとると…。



…そして、エネルギー増加なしにクリアコート(ニス層のようなもの)を追加します。



クリアコートは架空の厚みがあり、吸収を利用してきれいな発色をすることができます。



最後に、コーティングを外した状態での理想的なファーナステストをご紹介します。



また、コーティングを施しているため、多少のロスはありますが、アーティストからクレームが来るようなことはありません。



また、独自の光沢モデルも用意しています。私たちはそれを”charlie” sheenと呼んでいます。これは、スライドにあるようなマイクロファセットモデルで、正常配向のマイクロシリンダーから着想を得ています。ご覧のように、ラフネスをいじって見た目を変えることができます。



そして、他のコーティングと同じように構成されているので、このファーナステストでもわかるように、エネルギーを得ることはありません。



そのシャドウイング/マスキング項は解析的に導けないので、数値的にやってみたら、非常によく合うことがわかったんです。もし興味があれば、補足資料にもっと情報があります。



エンジニアとしては非常に満足のいく結果でしたが、アーティストからは「もっとソフトなターミネーターが欲しい」という要望がありました。



そのため、シャドウイング機能をクリエイティブに変更してソフトにする必要がありましたが、エッジのハイライトを殺しているのがわかると思います。



結局、このソフトニングはシャドウイング部分のみに適用しました。これによって、このモデルは非相反なものになりましたが、まあ、お客様はいつも正しいのです。



アレックス ありがとうございます。最後に、私たちのアーティストのために、どのようにこれらすべてをシェーダー化したかを紹介したいと思います。



プロダクションに展開したシステムは、やはりディズニーモデルからヒントを得たパラメータ・ブレンディングの考え方に基づくものです。シェーダーは、金属、プラスチック、ガラスの3つの基本的なローブを追跡し、それぞれのローブの中でパラメータブレンディングを行います。
これは単なる実装の詳細ですが、ガラスの上の汚れなどを行う際に、パラメータが混乱するのを防ぐのに役立ちます。汚れに設定されたIORが、ガラスの屈折に影響を与えることは避けたいところです。
もちろん、アーティストに限って言えば、どんなマテリアルでも混ぜることができます。
特定のパラメータをテクスチャリングするための「パターンクリエイト」というツールは、マテリアル全体をブレンドする「マテリアルコンバイン」へと進化しました。



これは、2つの既存のマテリアルの間にブレンドされている小さなマテリアルグラフの画面キャプチャです。もちろん、これらのマテリアルはそれ自体がグラフになることもあります。
これは、フラクタルノードを使って2つのマテリアルをブレンドし、変位を駆動するだけの非常にシンプルな例です。



これがそのグラフの結果です。
このツールは、私たちのライティング・ルックデバイスツールであるKatanaの中に組み込まれています。つまり、パイプラインの非常に遅い段階で、マテリアルグラフのこのような編集を行うことができるのです。
例えば、アーティストの方は、ベースとなるマテリアルがどのように作られているかを知らなくても、FXで駆動するペイントドロップをどんなマテリアルにも簡単に追加することができます。



もうひとつ、小さいけれども、私たちのシェーダーの重要なディテールに触れておきたいと思います。
GGX分布がすべての測定データにうまく当てはまらないことはよく知られています。いくつかの研究者は、そのテールを制御するために分布自体を拡張することを提案しています。- 例えば,GTR分布やSTD分布のようなものです。
しかし、マスキングとシャドウイングの機能は非常に複雑で、正確な重点サンプリングは困難です。



その代わりに、2つのラフネス値とブレンド量を公開するという、よりシンプルな解決策を選びました。
これは、エネルギー保存BRDFの線形結合を含むだけなので、実装も重要なサンプルも簡単で、我々のエネルギー補填スキームとシームレスに動作します。



ここでは、ラフネス0.3がラフネス0.1とラフネス0.5の50対50のブレンドとは大きく異なることがわかります。




実は今年、Pter Vangorpとcolleaguesが、このアプローチのメリットを示唆する知覚研究を行ったばかりです。



ここで、まだこれからやっていきたいことを簡単にお話しします。



Lambertianディフューズは、SSSの妥当な代用品と想定されます。しかし、本当にそうでしょうか?



ここでは、平均自由行程を縮小したボリュームとしてメッシュをレンダリングしています。




平均自由行程が十分に小さいと、BRDFとして表現できるように見えます。




実は、この正確な問題には閉形式の解があり、ずいぶん前に導出されているのです。ここでは、このBRDFが体積シミュレーションと正確に一致することを示しています。
BRDFは\(f(\mu_i, \mu_o) = \frac{\alpha H(\mu_o) H(\mu_i)}{4 \pi (\mu_i + \mu_o)}\)の形をしており、\(H\)関数の近似はd’Eon, A Hitchhiker’s Guide to Multiple Scattering, 2016に記載されています。
また、\(\alpha\)は単一散乱アルベドではないので、ブルートフォース表面下散乱のために先に議論したのと同じアルベド再マッピング技術を使用することが重要です。



一方、ランバートの結果とは全く一致しませんね!?
他の研究者の中にも、これを探求している人がいます。特にDisney BSDFモデルは、サブサーフェイスとディフューズをシームレスにマッチングさせようとしていますが、この分野ではもっとやるべきことがあると感じています。



私は、改良された拡散モデルを提案した最近の論文をいくつか挙げているだけです。
しかし、いずれもボリューム散乱の結果と正確に一致させようとしているわけではありません。



最後に、これほどまでにエネルギー保存にこだわることに意義があったのでしょうか?
私たちは、金属とガラスにとって非常に明確な勝利であると感じています。マテリアルを粗くしても、伝達されるエネルギーが少なくなるわけではないので、コースティック回避の仕組みと非常によくマッチしています。
しかし、実測値との比較はもっと行いたいと考えています。
もちろん、リアルタイムなアプリケーションでは、テーブル化よりも計算式があったほうがいいでしょう。2次元のテーブルについては、あと一歩のところまで来ていますが、3次元の場合はもっと難しいようです。



このスライドは、すべてのスライドをオンラインで共有できるように、意図的に制作事例を排除しています。しかし、これらは、最初にこの技術の一部を使用したプロダクションです。
これらの映画では、古いシェーダーに新しいローブを追加しただけです。また、新しいグラスシェーダも導入し、たくさん使ってもらいました…。



… そして、これらは、私たちの新しいパラメータブレンドシェーダとボリュームサブサーフェスを使用した最初のいくつかの映画です。
もちろん、今後出てくるプロダクションにも、この新しいシェーダーが使用されます。



最後に、シェーディングチームの努力に感謝したいと思います。特にLee KerleyとOle Gulbrandsenは、これらすべてをアーティストが使いやすいようにパッケージ化するために、私たちと一緒に働いてくれました。
また、これらのモデルの初期の議論とテストに参加したすべてのlookdevアーティストに感謝したいと思います。



以上で話を終わります。
ご清聴ありがとうございました。アレックスと私は喜んで質問をお受けいたします。







以下のスライドは、講演後にStephen Hill氏らからのフィードバックで追加されたものです。



多重散乱フレネル補正のロジックを見直すと、本当は\(k=1\)から和をとるべきであったことに気づかされました。さらに、項を正規化するために\(1-E_{avg}\)で割る必要があります。
スライドにある結果と比較すると、分子の\(F_{avg}\)の2乗が増えるだけです。これは、\(f+f_{ms}\)の全体のアルベドを減少させます。つまり、導体の見かけの色は、ラフネスの大きい方が小さい方より若干濃くなります。一方、元の係数は、粗いマテリアルがやや明るくなりすぎて、基準ほど飽和しないことを犠牲にして、全体の色を一定に保つ傾向があります。誘電体スペキュラに適用した場合、上記の補正がより自然なレスポンスを与えるのに対し、オリジナルの処方は「埃っぽい」外観をもたらす可能性があります。



Mathematicaで以下のようなフィットが分かりました。我々はよりよい適合が可能なはずだと考えていますが,まだ見つかっていません。グレージング角付近でわずかなエネルギーの増減を観察することができます。

効率的な実装のためには、多重散乱項の重点サンプリングが重要であり、特に低~中程度のラフネス値では、応答がグレージング角度に集中します。したがって、我々はこのフィットよりも表形式での表現がまだ好ましいと考えます。