1.14k likes | 1.38k Views
物理ベースレンダリングを実装するときに役に立つこと. 五反田義治 ( 株 ) トライエース 研究開発部. 物理ベースレンダリング とは ?. 物理ベースレンダリング (PBR) レンダリング方程式の解を正しく求めること 各種パラメータが物理的要求を満たしていること. 本日のトピック. レンダリング方程式 今更ながらレンダリング方程式について. より正しい物理ベースへ. 現行機でより複雑な計算が可能に 従来だったら適当に処理していた部分がより 物理的に正しい式を実装可能に その実装はどのくらい物理的に正確 ? 検証 抜きで ad-hoc 的に対応していないか ?.
E N D
物理ベースレンダリングを実装するときに役に立つこと物理ベースレンダリングを実装するときに役に立つこと 五反田義治 (株) トライエース 研究開発部
物理ベースレンダリングとは? • 物理ベースレンダリング(PBR) • レンダリング方程式の解を正しく求めること • 各種パラメータが物理的要求を満たしていること
本日のトピック • レンダリング方程式 • 今更ながらレンダリング方程式について
より正しい物理ベースへ • 現行機でより複雑な計算が可能に • 従来だったら適当に処理していた部分がより物理的に正しい式を実装可能に • その実装はどのくらい物理的に正確? • 検証抜きでad-hoc的に対応していないか?
本当にエイリアシング? • PBRでより問題になるエイリアシング • とりあえずアンチエイリアシング • Post-processing anti-aliasing • Temporal anti-aliasing • でもそのエイリアシングは本当に物理ベースのせい? • あなたのレンダリング方程式は正しく実装されている?
困ること(1) • GGX • Roughness(s)が0に近い時にどうなる? ?
困ること(2) • Smith masking and shadowing function • Grazing anglesでどうなる? ?
レンダリング方程式を解く • [CEDEC 2011] レンダリストのための物理ベースレンダリング – 基礎理論編 – • ピクセルや絞りも考慮する • 本来なら(露光)時間も
レンダリング方程式 • レンダリング方程式は放射輝度を入力(Li)して放射輝度(Lo)を出力する • Pixelに格納されているのは放射輝度? • 本来はエネルギー • 放射輝度は放射束の2階微分 • 放射束はエネルギーの時間微分
レンダリング方程式 • レンダリング方程式自体も微分方程式
レンダリング • 常に方程式を意識する • レンダリング方程式を解いている • いろいろな微分方程式を解いている • 積分をしている • 常に積分範囲を意識しなればいけない
現在の基本的なレンダリング 定義を代入すると
現在の基本的なレンダリング Pre-filterのIBL, textureやpunctual, analytical lightsが基本 基本的には1spp(shading per pixel) FSAAすれば別 MSAAはシェーディングしているわけではない 絞りの大きさに起因する表現は基本的にポストプロセス つまりここも1spp 時間方向の積分もポストプロセスで疑似的に処理
現在のレンダリングの問題点 • 4つの積分それぞれにおいて積分範囲が正しく考慮されているか? • Pixel, Time, Aperture, (Incident) Light
Pixelのサンプリング問題 • Pixel積分の精度が足りないと • エイリアシング • ジオメトリによるエイリアシング • シェーディングによるエイリアシング • テクスチャによるエイリアシング • Analyticalなシェーダ計算によるエイリアシング
Pixelのundersampling • 現在の主な解決方法 • MSAA / Post-process AA • 主にジオメトリのみ • FSAA • 負荷が高い • TAA • チートがたくさん必要 • 基本的にはPost-process AA
時間のサンプリング問題 • 時間方向のサンプリングが少ないと • 極端に短いシャッタースピードで撮影している状態 • ただし明るさは確保できている • いわゆるモーションブラーが発生しない • 絵的には好ましいことも • 微妙な速度で移動しているピクセルのフリッカー • シェーディングに起因するエイリアシング
時間積分のundersampling • モーションブラー再現 • ジオメトリベース • ポストプロセスベース
Apertureのサンプリング問題 • Apertureのサンプリングが少ないと • 実際にレンダリング時に考慮されることはほとんどない • 絞りやカメラの機構によって発生する幾何光学現象が再現されない • De-focus blur (Bokeh)など
Aperture積分のundersampling • 基本的にはポストプロセス • De-focus Blurの再現 • 各種Vignettingの再現
Lightのサンプリング問題 • Lightのサンプリングが不十分だと • 正しくないシェーディング • 面積が正しく考慮されないライティング • Smoothなマテリアルが表現できない • サンプリング問題をフィルタリングでごまかすため
Lightのundersampling • DeferredやTile-basedの技法による多ライト化 • Pre-filtered textureによるImage-based Lighting • Screen SpaceLighting • Analyticalに積分(近似)された面光源
積分問題 • そもそも積分をちゃんとしないと何が問題か? • エイリアシングに起因する問題だけではない • デルタ関数問題 • 極限問題
デルタ関数問題 • GGXの例
極限問題 • Height-Correlated Smith Masking and Shadowing Functionの例 とおくと
極限問題 • 例えばcosqe=0となると、シェーダ内で極限問題が発生する • cosqe=0は物理的に不自然だが • cosqe<eでも問題は起きる • 正しい積分範囲は考慮されているか?
問題 • 根本的には積分を(モンテカルロ的に)離散サンプリングしていることに起因する • デルタ関数問題 • デルタ関数も適切に積分すれば1になる • 離散的にサンプリングすれば∞か0
問題解決 • 数値計算的に発生する問題 • Ad-hocに解決していないか? • 根本的(数学的)な原因は検討しない • とりあえずmin, max, saturate • 各種解決法に数学的, 物理的根拠はあるか?
数値積分の精度 • 数値積分の精度をあげたい • いろいろなアプローチ • 単にサンプリング数を増やす • Ad-hoc的だが数値積分的に意味のある増やし方であれば効果は確実 • 精度の高い(収束の速い)数値積分法 • 解析的な積分
積分の精度が上がると • 映像はボケます • というか1sppな状態は積分の精度が低すぎる • 信号処理的には最もエイリアシングが起きやすいサンプリング周波数 • その代わり一切のローパスフィルタがかかっていないので異常に高コントラスト • 非現実的 • レンズの波動光学的解像度の低下(エアリーディスク等)を考慮しなかったとしてもおかしい
例 • 簡単に数値積分の精度を上げるのには台形積分(ニュートン・コーツの1次式)が使える
平均? • 結局は単なる平均 • 例えばシンプソンの公式を使って高次にしたとしても結局は周囲のピクセルからの重み付け平均
数値積分精度 • それでも数値積分として考えると精度は飛躍的に高まる • つまり1sppの状態が数値積分的に異常だと認識する • 従来は信号の振幅が低いので1sppでも今よりは許容できた • しかし現在は信号の振幅が大きくなったので数値積分誤差が大きすぎる • 極端な言い方をすれば平均を取った(ボケた)状態が(統計的に)精度の高いレンダリング(数値積分)になる
よりよい解決策 • 解析的に積分できれば問題解決できる • 完全でなくてもより説得力がある • 物理的or数学的根拠 • レンダリング方程式に解析解は存在しない • 積分をサンプリング以外の方法で近似できないか?
なぜ? • レンダリング方程式全体を解析的に積分するのは複雑すぎて不可能 • 部分的に積分できないか • Pre-filter的なアプローチが応用できる • モデル化できるかもしれない
積分の分離 • レンダリング方程式に戻ってみる Microfacet modelを代入してみると
積分の分離 いろいろなモデル(関数)の積を積分している
積分の分離 • 「積の積分」の「積分の積」に分離したい • [CEDEC 2011]で触れた内容
復習[CEDEC 2011] • 畳み込み定理を使う • フーリエ変換が必要なので手軽ではない • 基底変換を使う • Spherical Harmonicsを利用したPRT等
復習[CEDEC 2011] • 無理やり分離 • 数学的には正しくない • AmbientBRDF • Pre-filtered Texture Lighting • 誤差をどう許容するか • 評価については[CEDEC 2011]で解説
他の手法 • ガウス関数(積分)を利用する • LEAN, CLEAN, Toksvig等で応用されているアイディア
ガウス関数の性質 • ガウス(正規)分布
ガウス分布の性質 • 以下のような(ガウスの)確率分布関数があるときs2が分散, mが平均となる
平均と分散の性質 • 数列{a,b,c,d}がある • (a+b+c+d)/4が平均mとなる • ( (a- m)2+(b- m)2+(c- m)2+(d- m)2)/4が分散s2となる
平均と分散の性質 • 数列{a,b,c,d}がある • 平均, 分散には以下の式(1)が成り立つか? 式(1)
証明 分散の定義から 式(2)
証明 =式(2)なので式(1)は成り立つ
平均と分散の性質 • 数列{x1, x2,… xn}がある • 平均, 分散には以下の計算が成り立つ 平均 分散
平均と分散の性質 • 数列{x1, x2,… xn}がある • nが偶数の時 平均 分散 (証明は省略)
ガウス分布の再生性 • s0, s1 およびm0, m1がガウス分布の独立したパラメータの時