GGX+Smith 微表面 PBR 漫反射光照

原标题

PBR Diffuse Lighting for GGX+Smith Microsurfaces

通用的微表面 BRDF

通用形式

宏观表面的 BRDF 只是许多微表面的平均。

  • 通用形式
    Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega\rho_m(L,V,m)D(m)G_2(L,V,m)\frac{m\cdot L}{|N\cdot L|}\frac{m\cdot V}{|N\cdot V|}dm

  • Ωdm\int_\Omega dm
    对半球面上所有微表面法线积分。

  • ρm(L,V,m)\rho_m(L,V,m)
    单个微表面如何响应,即法线方向的 BRDF,通常为理想镜面或理想漫反射。

  • D(m)D(m)
    法线分布概率密度函数。

  • G2(L,V,m)G_2(L,V,m)
    微表面 m 同时看到光源和观察者的概率。

  • D(m)G2(L,V,m)D(m)G_2(L,V,m)
    同时被光源和观察者可见的表面的概率密度函数。
    G2G_2 由两个方向(光源、观察者)的可视性 G1G_1 推出。

  • mLNLmVNV\frac{\lang m\cdot L\rang}{|N\cdot L|}\frac{\lang m\cdot V\rang}{|N\cdot V|}
    表面对光源来说有多大,表面对观察者来说有多大。

  • D(m)G2(L,V,m)mLNLmVNVD(m)G_2(L,V,m)\frac{\lang m\cdot L\rang}{|N\cdot L|}\frac{\lang m\cdot V\rang}{|N\cdot V|}
    从 L 出发,经过单次反射,到达 V 的概率密度函数。
    ΩD(m)G2(L,V,m)mLNLmVNVdm1\int_\Omega D(m)G_2(L,V,m)\frac{\lang m\cdot L\rang}{|N\cdot L|}\frac{\lang m\cdot V\rang}{|N\cdot V|}dm\leq 1

如何获得 specular

  • 微表面 BRDF 是完美镜面

  • 光线只在 m = H,的情况下反射

  • 在数学上,BRDF 是经过缩放的狄拉克函数δm(H,m)\delta_m(H,m)

  • 一般情况:
    Ωρ(L,V,N)cosΘVdV=1\int_\Omega\rho(L,V,N)cos\Theta_VdV=1

  • 更改积分域以计算 δ\delta
    Ωkδm(H,m)cosΘVdVdmdm=1\int_\Omega k\delta_m(H,m)cos\Theta_V\frac{dV}{dm}dm=1

  • kδm(H,m)k\delta_m(H,m) 是纯镜面 BRDF

  • k 是缩放参数

  • dVdm\frac{dV}{dm} 是 V 相对于 m 的变化速度

就结论而言,dVdm=4HV\frac{dV}{dm}=4H\cdot V
这是通过将 dv 从单位球投影至半径为 |L + V| 的球面上得到的。
dVdm

由于 m = H 以及 HV=HLH\cdot V=H\cdot L

  • Ωkδm(H,m)cosΘVdVdmdm=1\int_\Omega k\delta_m(H,m)cos\Theta_V\frac{dV}{dm}dm=1
  • Ωkδm(H,m)(mV)(4HV)dm=1\int_\Omega k\delta_m(H,m)(m\cdot V)(4H\cdot V)dm=1
  • k=14(HL)(HV)k=\frac{1}{4(H\cdot L)(H\cdot V)}

狄拉克函数在其定义域上的积分为 1
为什么 (mV)(HV)(m\cdot V)(H\cdot V) 要以 (HL)(HV)(H\cdot L)(H\cdot V) 的形式保留下来?

  • 故,完美镜面 BRDF:
    δm(H,m)4(HL)(HV)\frac{\delta_m(H,m)}{4(H\cdot L)(H\cdot V)}

  • 加上菲涅尔项
    ρm(L,Vm)=F(L,m)δH(m)4HLHV\rho_m(L,Vm)=F(L,m)\frac{\delta_H(m)}{4|H\cdot L||H\cdot V|}

  • 整合
    Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega\rho_m(L,V,m)D(m)G_2(L,V,m)\frac{\lang m\cdot L\rang}{|N\cdot L|}\frac{\lang m\cdot V\rang}{|N\cdot V|}dm

  • 代入得:
    ΩF(L,m)δm(H,m)4HLHVD(m)G2(L,V,m)mLNLmVNVdm\int_\Omega\frac{F(L,m)\delta_m(H,m)}{4|H\cdot L||H\cdot V|}D(m)G_2(L,V,m)\frac{\lang m\cdot L\rang}{|N\cdot L|}\frac{\lang m\cdot V\rang}{|N\cdot V|}dm

  • 由于狄拉克函数在积分中被消掉,以及 m = H 得:
    Specular BRDF = F(L,H)D(H)G2(L,V,H)4HLHV\frac{F(L,H)D(H)G_2(L,V,H)}{4|H\cdot L||H\cdot V|}

扩展至 diffuse

  • 兰伯特漫反射:
    ρm(L,V,m)=1π\rho_m(L,V,m)=\frac{1}{\pi}
  • 无闭合解。
    闭合指的是一个表达式包含有限个标准运算,极限、差分、积分都不算标准运算。

GGX+Smith 微表面模型的漫反射模拟

Shadowing / masking 函数

不相关 vs 高度相关的 G

G2(L,V,m)=G1(L,m)G1(V,m)G_2(L,V,m)=G_1(L,m)G_1(V,m)
不太现实,但是在实践中的效果很好。

Higher points more likely visible to both 𝐿 and 𝑉 (and lower points less likely)

  • 高度不相关的 G 会使镜面反射变暗

    • 越粗糙误差越大
    • 越接近掠射角误差越大
  • 角度相关性

    • 当 L = V,应有 G2(V,V,m)=G1(V,m)G_2(V,V,m)=G_1(V,m)
    • 不相关:G2(V,V,m)=G1(V,m)2G_2(V,V,m)=G_1(V,m)^2
    • 相关:G2G_2 介于两者之间

Smith shadowing / masking

  • 前面没看懂,中间没看懂,但是:

  • Λ(V)=12(α2+(1α2)(NV)2NV1)\Lambda(V)=\frac{1}{2}(\frac{\sqrt{\alpha^2+(1-\alpha^2)(N\cdot V)^2}}{N\cdot V}-1)

  • G1(V)=11+Λ(V)G_1(V)=\frac{1}{1+\Lambda(V)}

  • G2(L,V)=11+Λ(L)+Λ(V)G_2(L,V)=\frac{1}{1+\Lambda(L)+\Lambda(V)}

  • G1(L)G1(V)=11+Λ(L)+Λ(V)+Λ(L)Λ(V)G_1(L)G_1(V)=\frac{1}{1+\Lambda(L)+\Lambda(V)+\Lambda(L)\Lambda(V)}

  • G1(V)=G_1(V)=
    2NVα2+(1α2)(NV)2+NV\frac{2N\cdot V}{\sqrt{\alpha^2+(1-\alpha^2)(N\cdot V)^2}+N\cdot V}

  • G2(L,V)=G_2(L,V)=
    2(NL)(NV)NVα2+(1α2)(NL)2+NLα2+(1α2)(NV)2\frac{2(N\cdot L)(N\cdot V)}{N\cdot V\sqrt{\alpha^2+(1-\alpha^2)(N\cdot L)^2}+N\cdot L\sqrt{\alpha^2+(1-\alpha^2)(N\cdot V)^2}}

新的 Smith + GGX G2G_2 近似

  • G1G_1 的分母
    • α2+(1α2)(NV)2+NV\sqrt{\alpha^2+(1-\alpha^2)(N\cdot V)^2}+N\cdot V
    • lerp((NV)2,1,α2)+NV\sqrt{lerp((N\cdot V)^2,1,\alpha^2)}+N\cdot V
    • 近似:
    • lerp((NV)2,1,α2)lerp(NV,1,α)\sqrt{lerp((N\cdot V)^2,1,\alpha^2)}\approx lerp(N\cdot V,1,\alpha)
  • 故,G1(V)2NVNV(2α)+αG_1(V)\approx\frac{2N\cdot V}{N\cdot V(2-\alpha)+\alpha}
    • 和 Unreal 一致:
    • G1(V)NVNV(1k)+kG_1(V)\approx\frac{N\cdot V}{N\cdot V(1-k)+k}, k=α2k=\frac{\alpha}{2}
  • 通过近似的 G1G_1 近似来求得 G2G_2
    • G2(L,V)=2NLNVlerp(2NLNV,NL+NV,α)G_2(L,V)=\frac{2|N\cdot L||N\cdot V|}{lerp(2|N\cdot L||N\cdot V|,|N\cdot L|+|N\cdot V|,\alpha)}
    • 代入 BRDF,约分:
    • BRDF=F(L,H)D(H)2lerp(2NLNV,NL+NV,α)BRDF=\frac{F(L,H)D(H)}{2lerp(2|N\cdot L||N\cdot V|,|N\cdot L|+|N\cdot V|,\alpha)}
  • 开销:
    • G1(L)G1(V)G_1(L)G_1(V)F(L,H)D(H)(NL(2α)+α)(NV(2α)+α)\frac{F(L,H)D(H)}{(|N\cdot L|(2-\alpha)+\alpha)(|N\cdot V|(2-\alpha)+\alpha)}~4 cycles
    • G2(L,V)G_2(L,V)~6 cycles
    • 高度相关产生的额外成本可以忽略不计。
  • 质量:
    • 在粗糙材质的掠射角上效果更好。
    • 高度相关近似 VS 不相关近似
    • 高度相关准确 VS 高度相关近似
    • 感觉是否相关带来的差异比是否准确要大一些。

路径追踪

讨论了一些光追中,BRDF 中菲涅尔项对漫反射以及高光部分的权重问题,先略过。