序文
Unity で BRDF を実装する方法について説明したので、式をシェーダーにコピーするだけなので、この記事では主に、物理ベースの BRDF 式がそのように見える理由について原理的な観点から説明します 。この記事は主に、昨年 ( 2022年) 12 月末に書かれたマイクロプレーン理論に基づいて BRDF に関するいくつかのことを整理することを目的としています。主に 2 つの古典的な論文に基づいています。]、もう 1 つは GGX モデルMicrofacet Models for Refraction through Rough Surfaces[2007] (この論文の著者には私のメンターもいます... どうしても言いたい場合は、内容の由来に関するいくつかの話があります。この記事の)。
本来の予定では2、3記事あるはずですが、ここ数日(もしくは 長期).
BRDF
双方向反射率分布関数 (Bidirectional Reflectance Distribution Function, BRDF) は、物体の表面での入射光と反射光の関係を表します. 具体的には、入射方向の放射輝度に対する出射方向の放射輝度の比率として定義されます. ここでまた、放射分析への単純な追加. 関連定義:
- 放射エネルギー: 電磁放射のエネルギー、QQQ
- 放射束/電力 (放射束/電力): 単位時間あたりに特定の領域を通過するエネルギー、Φ = d Q dt \Phi = \frac{dQ}{dt}ファイ=d tdQ _
- 放射強度 (Radiant Intensity): 単位立体角内の放射束、I ( ω ) = d Φ d ω I(\omega) = \frac{d\Phi}{d\omega}私( ω )=dω _dΦ _
- 放射照度: 単位面積あたりの放射束、E ( x ) = d Φ ( x ) d AE(x) = \frac{d\Phi(x)}{dA}E ( x )=dA _d Φ ( x )
- 放射輝度 (Radiance): 単位立体角および単位投影面積あたりの放射束、L ( p , ω ) = d 2 Φ ( p , ω ) d ω d A cos θ L\left( {p,\omega} \right ) = \frac{d^{2}\Phi(p,\omega)}{d\omega dAcos\theta}L( p 、ああ)=d ω d A cos θd2 Φ(p,ω)
このとき、レンダリング方程式をもう一度見てみましょう、L i ( p , ω i ) n ⋅ ω id ω i L_{i}\left( {p,\omega_{i}} \right)n \cdot \omega_ {i}\ mathbb{d}\omega_{i}L私( p 、おお私)n⋅おお私dω _私実際、計算は入射方向の放射照度d E ( ω i ) {d}E(\omega_{i})です。d E ( o私)、中央の内積は、入射角が異なるために受信エネルギーが異なるためです。
翻fr ( p , ω i , ω o ) L i ( p , ω i ) n ⋅ ω id ω i f_{r}\left( {p,\omega_{i},\omega_{o}} \right) L_{i}\left( {p,\omega_{i}} \right)n \cdot \omega_{i}\mathbb{d}\omega_{i}へr( p 、おお私、おおo)L私( p 、おお私)n⋅おお私dω _私この方向から入射する放射輝度のうち、オブジェクトの表面を通過した後に出射方向に分配される量です。そのため、そのような積分値とそれ自体の自己照明の放射輝度を足したものが、必要な出射方向の放射輝度です。 BRDFの役割です。
L o ( p , ω o ) = L e ( p , ω o ) + ∫ Ω fr ( p , ω i , ω o ) L i ( p , ω i ) n ⋅ ω id ω i L_{o}\left ( {p,\omega_{o}} \right) = L_{e}\left( {p,\omega_{o}} \right) + \int_{\Omega}^{~}{f_{r}\ left( {p,\omega_{i},\omega_{o}} \right)L_{i}\left( {p,\omega_{i}} \right)n \cdot \omega_{i}\mathbb{ d}\omega_{i}}Lo( p 、おおo)=Le( p 、おおo)+∫おお なへr( p 、おお私、おおo)L私( p 、おお私)n⋅おお私dω _私
マイクロプレーン理論とクック・トランス
BRDF自体に戻ると、物理学に基づくBRDFの基本理論は、物体の巨視的な表面が小さな表面で構成されていると信じているマイクロプレーン理論であり、マイクロプレーン上の光の理想的な鏡面反射または屈折は、粗いほどマイクロプレーン分布では、オブジェクトのハイライトがぼやけます:
マイクロプレーン理論に基づく古典的な BRDF モデルは Cook-Torrance モデルであり、その BRDF 項には拡散反射R d R_{d}が含まれます。Rdおよび鏡面反射R s R_{s}Rs2 つの部分から、式の構造は基本的に前の実装で説明した GGX 式と同じであることがわかります。違いはR s R_{s}にあります。RsCook-Torrance の分母はπ \piです。GGX が4 4のときのπ4、一般にここで4 44の方が合理的です:
R = s R s + d R d R = sR_{s} + dR_{d}R=s Rs+d Rd
R s = F π DG ( N ⋅ L ) ( N ⋅ V ) R_{s} = \frac{F}{\pi}\frac{DG}{({\mathbf{N}} \cdot {\mathbf{ L}})({\mathbf{N}} \cdot {\mathbf{V}})}Rs=円周率ふ( N⋅L ) ( N⋅Ⅴ)D G
その中で、鏡面反射は物体の表面から反射される光を表し、拡散反射は本質的に表面下散乱と同じです(Cook-Torranceの論文では、拡散反射には物体の微小表面での光の多重反射も含まれると考えられています)。表面が十分に粗い場合の物体の放出, 鏡面反射では多重放出の反射現象が考慮されていないことが次のことからわかる. 現在, それについては別の研究があるようであり, エネルギーは保存されるべきである.粗さが変化する場合)、すべてオブジェクトの表面に入った後、光が散乱し、違いはレンダリング ピクセルの距離に比例します。光が同じピクセルに出入りする場合、拡散反射と見なされ、異なると見なされます。ピクセルは表面下散乱と見なされます。
拡散反射の場合、正規化 (正規化はエネルギー保存を保証するためのもので、拡散反射強度係数が 1 の場合、入射エネルギーと出射エネルギーは等しくなります) ランベルト拡散反射モデル、モデルは単純であり、フレネルの効果は考慮されていません入射光の量に対する反射率ですが、うまく機能しますが、次の式で与えられます。
R d = 1 π R_{d} = \frac{1}{\pi}Rd=円周率1
フレネル項 F
フレネル用語とは、視線と対象物の表面との間の角度が小さいほど (グレージング角度に近いほど) 反射が強くなる現象を表し、近くの海面では水面下のものが見えるなど、遠方の海面は空を反射しますが、色 (本質的に、フレネル反射係数は、オブジェクトの表面に入る光の量と、光の一部がオブジェクトの表面で直接反射される量を表します)。同じ素材でも、波長によって強度が異なる場合があります。これが、金属のハイライトに色がある理由です。
通常、近似式を使用して記述します。ここで、F 0 F_{0}ふ0は入射角が 0 のときのフレネル反射率で、通常、金属では高く、非金属では低くなります。巨視的な表面のフレネル反射効果は、微視的な表面のフレネル反射によって生成されることに注意してください. 式の表現では、微視的な表面 (理想的な表面) の下でのフレネル反射を記述します (取る m \mathbf{m }m ) であり、導出によって巨視的な BRDF 式の一部になりました:
FS chlick ( i , m ) = F 0 + ( 1 − F 0 ) ( 1 − ( i ⋅ m ) ) 5 F_{Schlick}\left( {
{\mathbf{i}},{\mathbf{m}}} \right) = F_{0} + \left( 1 - F_{0} \right)\left( 1 - ({\mathbf{i} } \cdot {\mathbf{m}}) \right)^{5}ふシュリック_ _ _ _ _ _(私,m )=ふ0+( 1−ふ0)( 1−(私は⋅m ) )5
正規分布関数 D
正規分布関数は、マイクロプレーン法線m \mathbf{m}を表しますmの統計分布。D ( m ) D({\mathbf{m}})D ( m )は次のように定義される密度関数です: withd ω m \mathbb{d}\omega_{m}dω _メートルm, d A \mathbb{d}Aを中心とする無限に小さい立体角を表すd A は無限に小さい巨視的領域を表し、D ( m ) d ω md AD({\mathbf{m}})d\omega_{m}dAD ( m ) d ωメートルdA は、法線が立体角内にある対応する微小面の総面積を示します。以下にいくつかのプロパティを示します。
- 0 ≤ D ( m ) ≤ ∞ 0 \leq D({\mathbf{m}}) \leq \infty0≤D ( m )≤∞
- 1 ≤ ∫ D ( m ) d ω m 1 \leq \int{D({\mathbf{m}})d\omega_{m}}1≤∫D ( m ) d ωメートル、微小表面積は対応する巨視的表面積以上
- ( v ⋅ n ) = ∫ D ( m ) ( v ⋅ m ) d ω m \left( { { \ mathbf{v}} \cdot {\mathbf{n}}} \right) = \int{D({ \mathbf{m}})\left( { {\mathbf{v}} \cdot {\mathbf{m}}}\right)d\omega_{m}}( v⋅n )=∫D ( m )( v⋅m )dω _メートル、両方とも同じ投影面積
- ∫ D ( m ) ( n ⋅ m ) d ω m = 1 \int{D({\mathbf{m}})\left( { {\mathbf{n}} \cdot {\mathbf{m}}} \右)d\mega_{m}} =∫D ( m )( n⋅m )dω _メートル=1 、つまり、上記の式のv \mathbf{v}v与n \mathbf{n}n偶然の特殊なケース、つまり正規化により、エネルギー保存が保証されます。
フォン分布、ベックマン分布、GGX (Trowbridge-Reitz) 分布などの一般的な分布は、実際には関数を使用してオブジェクトの表面の正規分布を近似しようとしています. 式は次のとおりです (すべて正規化されています, 主にエネルギー保存を確実にするために、Cook-Toranc は正規化されていないベックマン分布を使用します)。
- 形式: D ( m ) = α + 2 2 π cos α θ D({\mathbf{m}}) = \frac{\alpha + 2}{2\pi}{cos}^{\alpha}\thetaD ( m )=午後2時+ 2 _コスα θ,cos θ = ( n ⋅ m ) cos\theta = ({\mathbf{n}} \cdot {\mathbf{m}})cosθ _=( n⋅m )
- ベックマンの式: D ( m ) = 1 π α 2 cos 4 θ e − ( tan θ α ) 2 D({\mathbf{m}}) = \frac{1}{\pi\alpha^{2}{cos }^{4}\theta}e^{- {(\frac{tan\theta}{\alpha})}^{2}}D ( m )=パパ_2コス4私1e− (aタンθ _)2 ,cos θ = ( n ⋅ m ) cos\theta = ({\mathbf{n}} \cdot {\mathbf{m}})cosθ _=( n⋅m )
- フォーム GGX: D ( m ) = α 2 π cos 4 θ ( α 2 + tan 2 θ ) 2 D({\mathbf{m}}) = \frac{\alpha^{2}}{\pi{cos} ^{4}\シータ\左(\アルファ^{2} + {タン}^{2}\シータ\右)^{2}}D ( m )=πcos _4私(_2 +タン_2私)2a2, cos θ = ( n ⋅ m ) cos\theta = ({\mathbf{n}} \cdot {\mathbf{m}})cosθ _=( n⋅m )
シャドウマスキング機能G
シャドウ オクルージョンの用語は、オブジェクトのマイクロプレーンによって光がどのように遮断されるかを表します。シャドウは入射光の方向の遮蔽を指し、オクルージョンは入射光の方向の遮蔽を指し、そのプロパティのいくつかは次のとおりです。
- 0 ≤ G ( i , o , m ) ≤ 1 0 \leq G({\mathbf{i}},{\mathbf{o}},{\mathbf{m}}) \leq 10≤G ( i ,o、m )≤1、1 以下の場合もエネルギー保存が保証されます
- G ( i , o , m ) = G ( o , i , m ) G\left( { {\mathbf{i}},{\mathbf{o}},{\mathbf{m}}} \right) = G({\mathbf{o}},{\mathbf{i}},{\mathbf{m}})G(私,o、m )=ぐ(お、私は、m )、入射方向と出射方向のオクルージョン係数は変更されません
- G ( i , o , m ) = 0 G\left( { {\mathbf{i}},{\mathbf{o}},{\mathbf{m}}} \right) = 0G(私,o、m )=0 ,当( i ⋅ m ) ( i ⋅ n ) ≤ 0 ({\mathbf{i}} \cdot {\mathbf{m}})({\mathbf{i}} \cdot {\mathbf{n}} ) \leq(私は⋅m ) ( i⋅n )≤0または( o ⋅ m ) ( o ⋅ n ) ≤ 0 ( {\mathbf{o}} \cdot {\mathbf{m}})({\mathbf{o}} \cdot {\mathbf{n}}) \leq( o⋅m ) ( o⋅n )≤0、つまり、マイクロサーフェスの裏側がマクロサーフェスの正の方向に見えない
GGX は、スミス シャドウ マスキング機能を使用して、GG を双方向のシャドウでカバーします。G は、 2 つの一方向シャドー項G 1 G_1G1G ≈ G 1 ( i , m ) G 1 ( o , m ) G \approx G_{1}({\mathbf{i}},{\mathbf{m}})G_{1} (
{\mathbf{o}},{\mathbf{m}})G≒G1(私,m ) G1(お、m )
G 1 G_1G1は正規分布関数 D から導出され、GGX 分布は Smith G 1 G_1を導出します。G1例:
G 1 ( v , m ) = 2 1 + 1 + α 2 for 2 θ , cos θ = ( v ⋅ n ) G_{1}\left( { {\ mathbf{
v}},{\mathbf{ m }}} \right) = \frac{2}{1 + \sqrt{1 + \alpha^{2}{tan}^{2}\theta}},cos\theta = ({\mathbf{v} } \cdot{\mathbf{n}})G1( v、m )=1+1+a2トン_2私な2,cos θ=( v⋅n )
GGX 数式の導出
上記の項目の定義により、巨視的に粗い表面のBRDFは、マイクロプレーンの理想的な鏡面反射を使用して導出でき、巨視的なBRDFは、対応するマイクロファセットの寄与を統合することで計算できます(もちろん、GGXは実際に提案しています完全な BSDF モデル、ここではその BRDF 部分についてのみ):
fr ( i , o , n ) = ∫ ∣ i ⋅ mi ⋅ n ∣ frm ( i , o , m ) ∣ o ⋅ mo ⋅ n ∣ G ( i , o , m ) D ( m ) d ω m f_{r}\left( {
{\mathbf{i}},{\mathbf{o}},{\mathbf{n}}} \right) = \int{ \left| \frac{ {
\ mathbf{i}} \cdot {\mathbf{m}}}{ {
\mathbf{i}} \cdot {\mathbf{n}}} \right|f_{r}^{ m}\left( { {
\ mathbf{i}},{\mathbf{o}},{\mathbf{m}}} \right)\left| \frac{ {\mathbf{ o}} \cdot {
\ mathbf{m}}}{
{ \mathbf{o}} \cdot {\mathbf{n}}} \right|G\left( { {
\mathbf{i}},{\mathbf{o}},{\ mathbf{m}}} \right )D({\mathbf{m}})d\omega_{m}}へr(私,o、n )=∫
な私⋅n私⋅メートル
なへrメートル(私,o、m )
なo⋅no⋅メートル
なG(私,o、m )D ( m ) d ωメートル
左∣ i ⋅ mi ⋅ n ∣ \left| \frac{
{\mathbf{i}} \cdot {\mathbf{m}}}{
{\mathbf{i}} \cdot {\mathbf{n}}} \right|
な私⋅ n私・m
な, ∣ o ⋅ mo ⋅ n ∣ \left| \frac{
{\mathbf{o}} \cdot {\mathbf{m}}}{
{\mathbf{o}} \cdot {\mathbf{n}}} \right|
なo ⋅ no・m
なは、マクロ表面とマイクロファセットの間の変換係数です。これは、前述の放射分析の定義に関連しています。これは、マイクロファセットの法線がマクロ表面の法線と同じではない可能性があるためです。ここで:
frm ( i , o , m ) = F ( i , m ) δ ω m ( h , m ) 4 ( i ⋅ h ) 2 f_{r}^{m}\left( { {\mathbf{i
} },{\mathbf{o}},{\mathbf{m}}} \right) = F({\mathbf{i}},{\mathbf{m}})\frac{\delta_{\omega_{m }}\left( {\mathbf{h}},{\mathbf{m}} \right)}{4\left( {\mathbf{i}} \cdot {\mathbf{h}} \right)^{ 2}}へrメートル(私,o、m )=F ( i ,m )4(私は⋅h )2dおおメートルな( h、m )
δ ω m ( hr , m ) \delta_{\omega_{m}}\left( {\mathbf{h}}_{r},{\mathbf{m}} \right)dおおメートルな(時間r、h = m {\mathbf{h}} = {\mathbf{m}}の場合、 m )はディラック関数です。時間=mは無限大、そうでない場合は 0、つまりミラーの反射方向のみが 0 でない、またはm \mathbf{m}m与h \mathbf{h}hと一致するマイクロプレーンは、マクロ BRDF に寄与します (これは、m \mathbf{m}m は最終的にh \mathbf{h}に置き換えられましたh )、そのプロパティは次のとおりです (g は任意の関数です)。
∫ Ω g ( o ) δ ω o ( s , o ) d ω o = { g ( s ) , ifs ∈ Ω 0 , また \int_{\mathbf{o}} )\delta_{\omega_{o}} \left( { {\mathbf{s}},{\mathbf{o}}} \right)d\omega_{o} = \left\{\begin{matrix}{ g({\mathbf{s}}) ,~if{\mathbf{s}}\in\Omega}\\{0,one}\\\end{matrix}\right.}∫おお なg ( o ) dおおoな( s ,o )dω _o={ g ( s ) , 私は_εおお0 、他の
この式は、鏡面反射が考慮されているため、特定の導出の後に実際に導出されます。i ⋅ h \mathbf{i} \cdot \mathbf{h}私⋅h和o ⋅ h \mathbf{o}\cdot\mathbf{h}o⋅hは同じで、ディラック関数を積分してから置き換えると生成されるヤコビ行列式なので、分母に式があります. 詳細な数学的導出に興味がある場合は、元の論文を読むことができます. ここでディラック関数を追加します
上記の式を積分に置き換えて、共通の BRDF 式を取得します:
fr ( i , o , n ) = F ( i , h ) G ( i , o , h ) D ( h ) 4 ∣ i ⋅ n ∣ | o ⋅ n ∣ f_{r}\left( {
{\mathbf{i}},{\mathbf{o}},{\mathbf{n}}} \right) = \frac {F\left( {
{\mathbf{i}},{\mathbf{h}}} \right)G\left( { { \mathbf{i}
},{\mathbf{o}},{\mathbf{ h}}} \ right)D({\mathbf{h}})}{\left.4\left| { {
\mathbf{i}} \cdot {\mathbf{n}}} \right| \middle| {\mathbf{o }} \cdot {\mathbf{n}} \right|}へr(私,o、n )=4∣私⋅n ∣∣o⋅n ∣ふ(私,h )G(私,o、h )D ( h )