Skip to content
Go back

Stochastic light culling for vpls on GGX microsurfaces

· Updated:

doi paper slides web

拙訳

関連研究

GlossyなVPLでのStochastic Light Culling

  • Stochastic Light Cullingを用いる
    • シェーディング点での放射輝度に比例する確率に従って決定するロシアンルーレット法を用いてライトの影響範囲を決めることで、重要でないライトを無作為に除外する
    • ライトの放射輝度をL(ωo,l){L(ωo,l)p(ωo,l)(p(ωo,l)>ξ)0(otherwise)L(\mathbf{\omega}_o, l) \approx \begin{cases} \frac{L(\mathbf{\omega}_o, l)}{p(\mathbf{\omega}_o, l)} & (p(\mathbf{\omega}_o, l) > \xi) \\ 0 & (\text{otherwise}) \end{cases}で近似する
      • ξ[0,1)\xi \in [0, 1)は一様乱数
        • 光源ごとにξ\xiをひとつだけ用いて影響範囲を限定することにより、既存のカリング手法がunbiasedな方法で利用できるようになる
      • 点光源の放射輝度はL(ωo,l)=I(ωo)l2L(\mathbf{\omega}_o, l) = \frac{I(\mathbf{\omega}_o)}{l^2}で与えられる
        • I(ωo)I(\mathbf{\omega}_o)は放射強度
        • ωoS2\mathbf{\omega}_o \in S^2はライトへの方向
        • l[0,)l \in [0, \infty)はライトとの距離
      • 本論では、確率にp(ωo,l)=min(I(ωo)δl2,1)p(\mathbf{\omega}_o, l) = \min \left( \frac{I(\mathbf{\omega}_o)}{\delta l^2}, 1 \right)を用いる
        • δ(0,)\delta \in (0, \infty)は分散を制御するためのユーザー指定のパラメータ
  • BRDFに従う影響範囲を計算する
    • BRDFffで反射した放射輝度の等値面lmaxl_{\max}は以下のように求まる:
      • lmax(ωo)=p1(ξ)=Φf(ωi,ωo)max(ωon,0)δξl_{\max}(\mathbf{\omega}_o) = p^{-1}(\xi) = \sqrt{\frac{\Phi f(\mathbf{\omega}_i, \mathbf{\omega}_o) \max(\mathbf{\omega}_o \cdot \mathbf{n}, 0)}{\delta \xi}}
        • VPLの放射強度はI(ωo)=Φf(ωi,ωo)max(ωon,0)I(\mathbf{\omega}_o) = \Phi f(\mathbf{\omega}_i, \mathbf{\omega}_o) \max(\mathbf{\omega}_o \cdot \mathbf{n}, 0)で求まる
          • Φ\PhiはVPLに到達したフォトンの放射束
          • ωiS2\mathbf{\omega}_i \in S^2はフォトンの入射方向
          • nS2\mathbf{n} \in S^2はそのVPLのあるジオメトリの法線

GGX反射での境界楕円体

  • BRDFとしてGGXを用いる
    • マイクロファセットBRDF:f(ωi,ωo)=F(ωiωh)G2(ωi,ωo)D(ωhn)4ωinωonf(\mathbf{\omega}_i, \mathbf{\omega}_o) = \frac{F(\mathbf{\omega}_i \cdot \mathbf{\omega}_h) G_2(\mathbf{\omega}_i, \mathbf{\omega}_o) D(\mathbf{\omega}_h \cdot \mathbf{n})}{4 |\mathbf{\omega}_i \cdot \mathbf{n}| |\mathbf{\omega}_o \cdot \mathbf{n}|}
      • ωh=ωi+ωoωi+ωo\mathbf{\omega}_h = \frac{\mathbf{\omega}_i + \mathbf{\omega}_o}{||\mathbf{\omega}_i + \mathbf{\omega}_o||}はハーフベクトル
      • F(ωiωo)[0,1]F(\mathbf{\omega}_i \cdot \mathbf{\omega}_o) \in [0, 1]はフレネル項
      • DDはNDF。マイクロファセットの法線の分布を表す
        • GGXのNDFはD(cosθm)=α2χ+(cosθm)π(α2cos2θm+sin2θm)2D(\cos \theta_m) = \frac{\alpha^2 \chi^+ (\cos \theta_m)}{\pi (\alpha^2 \cos^2 \theta_m + \sin^2 \theta_m)^2}で定義される
          • α\alphaはラフネスのパラメータ
            • 本論では、α(0,1]\alpha \in (0, 1]とする
          • χ+\chi^+はHeaviside関数。正なら1、非正なら0を返す
      • G2(ωi,ωo)[0,1]G_2(\mathbf{\omega}_i, \mathbf{\omega}_o) \in [0, 1]はmasking-shadowing関数
        • 本論では、Smithのマイクロサーフェスモデルを用いる
          • G1(ωi,ωh)=χ+(ωiωh)G1dist(ωi)G_1(\mathbf{\omega}_i, \mathbf{\omega}_h) = \chi^+ (\mathbf{\omega}_i \cdot \mathbf{\omega}_h) G_1^{dist}(\mathbf{\omega}_i)
          • 可視法線分布の制約[Heitz 2014Heitz, E. 2014. Understanding the masking-shadowing function in microfacet-based brdfs. Journal of Computer Graphics Techniques (JCGT) 3, 2, 48–107. http://jcgt.org/published/0003/02/03/.]より、G1distG_1^{dist}は以下のように求まる
            • G1dist(ωi)=2ωinωin+(1α2)(ωin)2+α2G_1^{dist}(\mathbf{\omega}_i) = \frac{2|\mathbf{\omega}_i \cdot \mathbf{n}|}{|\mathbf{\omega}_i \cdot \mathbf{n}| + \sqrt{(1 - \alpha^2) (\mathbf{\omega}_i \cdot \mathbf{n})^2 + \alpha^2}}
  • 反射ローブを包む楕円体を計算する
    • GGX反射の等値面lmaxl_{\max}を覆う面s(ωo)s(\mathbf{\omega}_o)は以下のように求まる:
      • lmax(ωo)s(ωo)=ΦFmax(ωi)G1dist(ωi)D(cosθ2)4δξωin=rπD(cosθ2)l_{\max}(\mathbf{\omega}_o) \le s(\mathbf{\omega}_o) = \sqrt{\frac{\Phi F_{\max}(\mathbf{\omega}_i) G_1^{dist}(\mathbf{\omega}_i) D(\cos \frac{\theta}{2})}{4 \delta \xi |\mathbf{\omega}_i \cdot \mathbf{n}|}} = r \sqrt{\pi D(\cos \frac{\theta}{2})}
        • このとき、r=ΦFmax(ωi)G1dist(ωi)4πδξωinr = \sqrt{\frac{\Phi F_{\max}(\mathbf{\omega}_i) G_1^{dist}(\mathbf{\omega}_i)}{4 \pi \delta \xi |\mathbf{\omega}_i \cdot \mathbf{n}|}}
        • FmaxF_{\max}はフレネル項の最大値
        • 導出は以下の通り:
          • Smithのmasking-shadowing関数はバリエーションによらずG2G1distG_2 \le G_1^{dist}を満たすので、f(ωi,ωo)max(ωon,0)Fmax(ωi)G1dist(ωi)D(ωhn)4ωinf(\mathbf{\omega}_i, \mathbf{\omega}_o) \max(\mathbf{\omega}_o \cdot \mathbf{n}, 0) \le \frac{F_{\max}(\mathbf{\omega}_i) G_1^{dist}(\mathbf{\omega}_i) D(\mathbf{\omega}_h \cdot \mathbf{n})}{4 |\mathbf{\omega}_i \cdot \mathbf{n}|}を満たす
          • 完全鏡面反射の方向ωu=2(ωin)nωi\mathbf{\omega}_u = 2(\mathbf{\omega}_i \cdot \mathbf{n}) \mathbf{n} - \mathbf{\omega}_iを中心とする半径θ=arccos(ωoωu)\theta = \arccos(\mathbf{\omega}_o \cdot \mathbf{\omega}_u)の球上の円を考える:
            • 出射方向ωo\mathbf{\omega}_oがその中にあるとき、ωh\mathbf{\omega}_hは以下のいずれかとなる:
              • 半短軸semi-minor axisθ2\frac{\theta}{2}を持つ球上の楕円の中にある
              • 半長軸semi-major axisθ2\frac{\theta}{2}を持つ球上の双曲線の中にある
            • したがって、arccos(ωhn)θ2\arccos(\mathbf{\omega}_h \cdot \mathbf{n}) \ge \frac{\theta}{2}が得られる
            • すると、α(0,1]\alpha \in (0, 1]のとき、DDθm[0,π2]\theta_m \in [0, \frac{\pi}{2}]で単調減少するので、D(ωhn)D(cosθ2)D(\mathbf{\omega}_h \cdot \mathbf{n}) \le D(\cos{\frac{\theta}{2}})が成り立つ
    • この面s(ωo)s(\mathbf{\omega}_o)回転楕円体spheroidとなる
      • 半軸semiaxes(ru,rv,rw)=(1+α22αr,r,r)(r_u, r_v, r_w) = \left( \frac{1+\alpha^2}{2\alpha}r,r,r \right)
      • 回転行列はR=[ωuωw×ωuωw]\mathbf{R} = \left[ \begin{matrix} \mathbf{\omega}_u & \mathbf{\omega}_w \times \mathbf{\omega}_u & \mathbf{\omega}_w \end{matrix} \right]
        • ωwS2\mathbf{\omega}_w \in S^2n\mathbf{n}およびωu\mathbf{\omega}_uと直交する単位ベクトル
      • 中心はc=q+1α22αrωu\mathbf{c} = \mathbf{q} + \frac{1 - \alpha^2}{2 \alpha} r \mathbf{\omega}_u
        • qR3\mathbf{q} \in \mathbb{R}^3はVPLの位置

境界楕円体を用いるTiled Culling

  • 楕円体と錐台の交差判定
    • S=Rˊ[ru1000rv1000rw1]RˊT\mathbf{S} = \mathbf{\acute{R}} \left[ \begin{matrix} r_u^{-1} & 0 & 0 \\ 0 & r_v^{-1} & 0 \\ 0 & 0 & r_w^{-1} \end{matrix} \right] \acute{\mathbf{R}}^Tで空間を伸縮させて、球と錐台の交差判定に置き換える
      • Rˊ\acute{\mathbf{R}}はビュー行列の回転を付与したR\mathbf{R}
  • 高速化のための回転
    • B={[bxbxbz×bxbz×bxbzbz]T(bx>by)[by×bzby×bzbybybzbz]T(otherwise)\mathbf{B} = \begin{cases} \left[ \begin{matrix} \frac{\mathbf{b}_x}{||\mathbf{b}_x||} & \frac{\mathbf{b}_z \times \mathbf{b}_x}{||\mathbf{b}_z \times \mathbf{b}_x||} & \frac{\mathbf{b}_z}{||\mathbf{b}_z||} \end{matrix} \right]^T & (||\mathbf{b}_x|| > ||\mathbf{b}_y||) \\ \left[ \begin{matrix} \frac{\mathbf{b}_y \times \mathbf{b}_z}{||\mathbf{b}_y \times \mathbf{b}_z||} & \frac{\mathbf{b}_y}{||\mathbf{b}_y||} & \frac{\mathbf{b}_z}{||\mathbf{b}_z||} \end{matrix} \right]^T & (\text{otherwise}) \end{cases}で空間を回転させて、遠近面がZ軸と垂直にする
      • ここで、bx=S[100]T\mathbf{b}_x = \mathbf{S} \left[ \begin{matrix} 1 & 0 & 0 \end{matrix} \right]^Tby=S[010]T\mathbf{b}_y = \mathbf{S} \left[ \begin{matrix} 0 & 1 & 0 \end{matrix} \right]^Tbz=bx×by\mathbf{b}_z = \mathbf{b}_x \times \mathbf{b}_y
      • 錐台に対してよりタイトなAABBをつくることができるようになる

実装の詳細

  • Interleaved sampling
    • subregionにdeinterleaveして、それぞれ異なるライトsubsetを処理する
    • stochastic light cullingはsubregionごとに行う
    • バイラテラルフィルタでノイズを除去する
  • Diffuse VPLs
    • Diffuse VPLでの境界楕円体はほぼ球なので、長い方の半軸をその半径とする境界球を用いる
      • 中心はq+(13)34Φkπδξn\mathbf{q} + \left( \frac{1}{3} \right)^\frac{3}{4} \sqrt{\frac{\Phi k}{\pi \delta \xi}} \mathbf{n}
      • 半径は(427)14Φkπδξ\left( \frac{4}{27} \right)^\frac{1}{4} \sqrt{\frac{\Phi k}{\pi \delta \xi}}
      • ここで、kkはディフューズ反射率

制限事項

  • Highly specular surfaces
    • もともとのVPL数によってレンダリング品質が決まるので、高周波なBRDFではVPL数を増やす必要がある
      • 増やした分、カリングがボトルネックになるかも
    • デノイズすると細かなコースティクスがぼやけるかも
    • 本手法では完全な鏡面からのコースティクスをレンダリングできない
  • Glossy-to-Glossy interreflections
    • BRDFがサンプリング確率を無視しているので、highly specularなBRDFがあると分散が極端に高くなる
    • diffuse-to-glossyやglossy-to-glossyな相互反射では、SSRなどのbiasedな近似手法で代用できるかも
  • Anisotropic reflection lobes
    • マイクロファセットBRDFモデルの反射ローブはgrazingな入射方向では異方的になるので、ωw\mathbf{\omega}_w方向には改善の余地がある
    • 本手法の境界楕円体は異方的なNDFを考慮していない