拙訳
マテリアル・パラメータ
- partial coverage:
- 屈折率:
- 直角入射での透過における波長可変な係数:
- 視準の因数:
- は光学的に均質な材質を示す(=透明)
- は密で等方的な関与媒質を示す(=半透明)
- 透過係数:
- 実際の入射角で計算したを(1-BRDF)倍したもの
- の波長における平均:
OITを実現するためのブレンディング方程式
-
- は背面の不透明表面
- は波長
-
- は表面のpartial coverage
- は表面の透過率
-
- は反射+emitした放射輝度
- は波長における透過率の平均
- を使う
- はNDCでのZ値
- 詳細は以下の通り:
- カメラに向かって奥から手前へ個の半透明表面が並び、0番目に不透明表面があるとする
- 表面の点において波長に関してカメラに向かって出射する放射輝度は以下となる:
- をくくりだして係数をとするように式変形する
- は半透明表面からの放射輝度の重み付き総和になるが、事前には分からない
- 表面からカメラまでの間が均質な関与媒質で満たされるとした場合、その重みはBeerの法則によりになる
- 実際には、媒質は均質とはならないので、は深度に対して単調かつ超線形的に減少する場面依存の関数となる
- 表面からの透過率をすべて合計するとになることが分かっているので、は重みの合計で正規化できる
- 表面からカメラまでの間が均質な関与媒質で満たされるとした場合、その重みはBeerの法則によりになる
- は半透明表面からの放射輝度の重み付き総和になるが、事前には分からない
ディフュージョン
- 背面が無限遠にある場合:
- 各ピクセルにおける拡散の標準偏差について、すべての表面からの合計で推定する:
-
- は視野角
- はスクリーンのピクセル幅
- は1メートル手前にあるの表面によるガウシアンの標準偏差(メートル)
-
- 詳細は以下の通り:
- 一様な媒質での多重散乱はランダムウォークを発生させる
- スクリーン空間では、表面から光が出入りする間に起こるピクセルのズレがガウス分布を取る
- このガウス分布の標準偏差(=ピクセルにおける拡散具合)は、遠近法により、カメラからの距離および視準に従って減少する
- 一様な媒質での多重散乱はランダムウォークを発生させる
- 各ピクセルにおける拡散の標準偏差について、すべての表面からの合計で推定する:
- 背面が有限遠にある場合:
- 複合凸レンズを仮定して、背面に対する拡散の標準偏差を近似する:
-
- はカメラ空間での背面の深度値
- は表面の深度値
- は散乱する表面のimplied thickness(を使う)
-
- 詳細は以下の通り:
- 散乱の繰り返しは凹レンズの集合体と同じもの
- すべての散乱を表すガウス核の点像分布関数は散乱する表面の個々の関数の畳み込みで求められる
- その標準偏差は個々のガウシアンの標準偏差の総和で求められる
- このシステムによるdefocus量は表面から背面までの距離で増加する
- スクリーン空間でのガウスカーネルの標準偏差は表面をモデル化した層と背面との距離で増加する
- 散乱の繰り返しは凹レンズの集合体と同じもの
- 複合凸レンズを仮定して、背面に対する拡散の標準偏差を近似する:
一次線(primary rays)の屈折
- スネルの法則により、表面の点から射影の中心へ向かう光線が屈折してきた方向を求める:
-
- はレイの向き
- は法線
- が非負の場合に有効
- そうでなければ、透過は起こらない
-
- 固定の奥行きだけの先にある背面上の点は以下で求められる:
- スクリーン空間でのとピクセル位置との差分からオフセット値を求める
- カバレージと不透明度で重み付けして、すべてのレイヤーの平均を計算する
- 詳細は以下の通り:
- 固定の奥行きにある背面まで広がる均質な透過的媒質として、シーンを単純化したモデルを用いてスネルの法則を適用する
- スクリーン空間でのレイトレーシングによって、より正確な屈折を計算することもできる
- いずれにしても、フレームバッファに用意された背面オブジェクトを歪ませるためのピクセル座標でのオフセット値を作る
- 折り重なる表面で屈折するベクトルの組み合わせ方にはそれらしいものがないので、単純に混ぜ合わせる方法を取った
- 表面1つの場合と同じになるので、表面が複数ある場合には正しくないが、位置がズレる屈折の現象はきちんと現れる
- 固定の奥行きにある背面まで広がる均質な透過的媒質として、シーンを単純化したモデルを用いてスネルの法則を適用する
コースティクスおよび半透明影
- Colored stochastic shadow map[McGuire and Enderton 2011McGuire, M. and Enderton, E. 2011. Colored stochastic shadow maps. Symposium on interactive 3D graphics and games 89–96. 10.1145/1944745.1944760. https://casual-effects.com/research/McGuire2011CSSM/index.html.]で半透明影の密度変化を近似する
- partial coverageと(1-透過率)に比例する確率で波長のシャドウマップを作る
- コースティクスを模倣するため、入射角や屈折率に応じて変化するようにを改める
-
- シャドウマップのフィルタリングにはVariance Shadow Maps[Donnelly and Lauritzen 2006Donnelly, W. and Lauritzen, A. 2006. Variance shadow maps. Proceedings of the 2006 symposium on interactive 3D graphics and games 161–165. 10.1145/1111411.1111440. https://pierremezieres.github.io/site-co-master/references/vsm_paper.pdf.]を使う
- 15x15の三角関数のカーネルで行い、1/4にダウンサンプリングする
- VSMのライトリークを回避するため、不透明のシャドウマップは別に作る
- 詳細は以下の通り:
- 屈折によって影領域内の光が再分散することで、濃くなったり薄くなったりする領域が生まれる
- 入射角が直角に近いと明るくなり、平行に近いと暗くなる
解決
- アップサンプリング
- テント関数の7x7カーネルでjoint bilateral filteringを行う
- 屈折
- 背面の色をオフセット値だけずらしてサンプリングする
- 拡散
- 標準偏差を持つガウシアン点像分布関数に従って背面をサンプリングする
- 物体による遮蔽をモデル化するため、カーネルの一部をゼロでマスクアウトする
- となるところだけを集める
- このフィルタは分離可能ではなく、が大きいときに計算負荷が高い
- 変調
- 重なる部分での見た目のおかしさを緩和するため、self-modulationを加える
- 透過表面がに対してmodulateしないために発生する
- 重なる部分での見た目のおかしさを緩和するため、self-modulationを加える
- AO
- 透過を起こさないテクスチャでは、アルファを二値のまま使いたいので、MIPを使わないようにフラグ立てを行う
- 透明オブジェクトは深度バッファに書き込まれないので、AOの影響を受けも与えもしない
- アルファ抜きしたオブジェクトでは、アルファ値のフィルタリングによって、その輪郭が透明になることがある
- すると、AOの影響を受けない可視部分は周りに比べて明るくなりすぎてしまう
- そうでない場合、隣接ピクセルからAO値を推測する
- ピクセルシェーダにて、スクリーン空間でのアルファの勾配を取る:
- 勾配が無視できない程度なら、勾配のレイに沿ってAOのcross-bilateral filteringを行う
- カメラ空間のz値における双曲線形の重みを用いて、深度が違いすぎる表面からのAO寄与を小さくする
- 勾配が無視できる程度なら、スクリーン空間のボックスでフィルタリングする
- 勾配が無視できない程度なら、勾配のレイに沿ってAOのcross-bilateral filteringを行う
- ピクセルシェーダにて、スクリーン空間でのアルファの勾配を取る:
- 透過を起こさないテクスチャでは、アルファを二値のまま使いたいので、MIPを使わないようにフラグ立てを行う