510 likes | 642 Views
ゲーム開発者向け最新技術論文の解説・実装講座. ~遥かなるトップレンダリストの頂を目指して~. その②. 田村 尚希 シリコンスタジオ株式会社 ソフトウェアエンジニアリング部. 発表の流れ. 1. 概要 2. 論文紹介 「 Frequency Domain Normal Map Filtering 」 3. まとめ. 発表の流れ. 1. 概要 2. 論文紹介 「 Frequency Domain Normal Map Filtering 」 3. まとめ. 1. 概要. 発表内容 :. 最新論文のうち、ゲームにも関係が深い論文を紹介.
E N D
ゲーム開発者向け最新技術論文の解説・実装講座ゲーム開発者向け最新技術論文の解説・実装講座 ~遥かなるトップレンダリストの頂を目指して~ その② 田村 尚希 シリコンスタジオ株式会社 ソフトウェアエンジニアリング部
発表の流れ 1. 概要 2. 論文紹介「Frequency Domain Normal Map Filtering」 3. まとめ
発表の流れ 1. 概要 2. 論文紹介「Frequency Domain Normal Map Filtering」 3. まとめ
1.概要 • 発表内容: 最新論文のうち、ゲームにも関係が深い論文を紹介 • 発表の目的: 1.最新技術の紹介及び理解 2.技術論文に親しむ機会を提供 最新技術に興味を持つ人が増え、ゲーム業界全体の活性化に繋がることを期待
1.概要 • 紹介論文: 「Frequency Domain Normal Map Filtering」[Han et al. SIGGRAPH 2007]
1.概要 • 「Frequency Domain Normal Map Filtering」 • 一言で言えば: 法線マップにおけるミップマップフィルタリング に関する論文
1.概要 • 動画:
1.概要 • 動画:
1.概要 • 利点 正確な法線マップミップマップフィルタリングが可能 拡散面から鏡面に近い光沢面まで適用可能 • 欠点 計算負荷が高い テクスチャ消費量が多い シーンによっては、適用前後でほとんど差がない
発表の流れ 1. 概要 2. 論文紹介「Frequency Domain Normal Map Filtering」 3. まとめ
Normal map filteringの説明手順 ミップマップフィルタリングの復習 法線マップのミップマップの問題点 論文の手法説明 デモ・考察
2.1 ミップマップフィルタリング • ミップマップテクスチャ 解像度を半分にし、情報を平均化した 一連のテクスチャ群をミップマップテクスチャと呼ぶ
2.1 ミップマップフィルタリング • ミップマップフィルタリング(トリリニアフィルタリング)
2.1 ミップマップフィルタリング • ミップマップフィルタリングが必要な理由 スクリーン解像度とテクスチャ解像度の不整合を解決するため
2.1 ミップマップフィルタリング • 解像度の差を解決する本質的な方法 ⇒スーパーサンプリング ランタイム時のスーパーサンプリングは計算負荷が高い
2.1 ミップマップフィルタリング • スーパーサンプリングの代替手段 ⇒ミップマップテクスチャ ≒ スーパーサンプリング≒ミップマップフィルタリング
Normal map filteringの説明手順 ミップマップフィルタリングの復習 ≒ 法線マップのミップマップの問題点 論文の手法説明 デモ・考察
2.2 法線マップのミップマップ • 法線マップのミップマップテクスチャ
2.2 法線マップのミップマップ • 法線マップのミップマップの問題点 正 誤 ≠ スーパーサンプリング≠ミップマップフィルタリング
2.2 法線マップのミップマップ • 論文の解決方法 正 誤 正 ≠ ≒ スーパーサンプリング≠ミップマップフィルタリング スーパーサンプリング≒ミップマップフィルタリング
Normal map filteringの説明手順 ミップマップフィルタリングの復習 ≒ 法線マップのミップマップの問題点 ≠ 論文の手法説明 アイディアの概要 アルゴリズムの詳細 前計算 NDFミップマップテクスチャの作成 デモ・考察 Effective BRDFの計算 実行時
2.3 アイディアの概要 ≒ = EffectiveBRDF NDF BRDF
2.3 アイディアの概要 • という概念 を導入 NDF(Normal Distribution Function) 基本的には ・法線が存在する方向は 1・法線が存在しない方向は 0 という値を持ったバイナリ情報 で正規化 キューブマップ形式では、データ量が膨大 → 要圧縮
2.3 アイディアの概要 ≒ = EffectiveBRDF NDF BRDF
2.3 アイディアの概要 • BRDFを可視化 拡散面: 光沢面: 法線ベクトル 光の入射ベクトル s = 5 s = 10
2.3 アイディアの概要 ≒ = EffectiveBRDF NDF BRDF
2.3 アイディアの概要 • スーパーサンプリングを数式化 基本式 拡散面: 光沢面: スーパーサンプリング
2.3 アイディアの概要 ⇒BRDFの項をスーパーサンプリングすれば良い を と呼ぶ Effective BRDF
2.3 アイディアの概要 • Effective BRDFを可視化 拡散面: 光沢面: 法線ベクトル Effective BRDF 法線ベクトル 法線ベクトル
2.3 アイディアの概要 1. NDFを前計算で保存 2. Effective BRDFをリアルタイムに計算
Normal map filteringの説明手順 ミップマップフィルタリングの復習 ≒ 法線マップのミップマップの問題点 ≠ 論文の手法説明 アイディアの概要 アルゴリズムの詳細 前計算 NDFミップマップテクスチャの作成 デモ・考察 Effective BRDFの計算 実行時
アルゴリズムの詳細 法線マップの入力 視点・光源位置の入力 NDFの圧縮 球面調和関数 NDFミップマップテクスチャの作成 Effective BRDFの計算 ピクセル色の出力 実行時 前計算
2.3.1 球面調和関数 • 球面調和関数の要点 球面調和関数を用いた近似 本来の輝度分布 球に投影 各方向の輝度を高さに変換 ≒ 球面調和関数は、大まかな特徴を極めて効率的に近似可能 データ量を1/400に圧縮!! データ量 データ量 キューブマップのデータ量 : 16個~64個のfloat : float × ( 32×32×6 ) pixel : 24576 byte 64byte (16個の場合) 詳しくは、株式会社Pyramid(http://www.pyramid-inc.net)の「使える最新PRTのススメ」参照
2.3.1 NDFの圧縮 • NDFを球面調和関数を用いて圧縮 球面調和関数を用いた近似 本来のNDF 各方向の値を高さに変換 ≒ 球面調和関数は、大まかな特徴を極めて効率的に近似可能 データ量を1/400に圧縮!! データ量 データ量 キューブマップのデータ量 : 16個~64個のfloat : float × ( 32×32×6 ) pixel : 24576 byte 64byte (16個の場合)
アルゴリズムの詳細 法線マップの入力 視点・光源位置の入力 NDFの圧縮 球面調和関数 NDFミップマップテクスチャの作成 Effective BRDFの計算 ピクセル色の出力 実行時 前計算
2.3.2 NDFミップマップテクスチャ • NDFを、ミップマップの各レベル毎に球面調和関数 を用いて圧縮
アルゴリズムの詳細 法線マップの入力 視点・光源位置の入力 NDFの圧縮 球面調和関数 NDFミップマップテクスチャの作成 Effective BRDFの計算 ピクセル色の出力 実行時 前計算
2.3.3 Effective BRDFの計算 • 全方向に関して、NDFとBRDFを乗算し足し合わせる 畳み込み(Convolution)という演算に相当
2.3.3 Effective BRDFの計算 • 畳み込みは、球面調和関数空間では高速に処理可能 NDF BRDF 球面調和関数空間 = EffectiveBRDF ^ 理論及び f の計算方法の詳細は論文4.2及び4.3参照
アルゴリズムの詳細 法線マップの入力 視点・光源位置の入力 NDFの圧縮 球面調和関数 NDFミップマップテクスチャの作成 Effective BRDFの計算 ピクセル色の出力 実行時 前計算
2.3.4 ピクセル色の出力 • Effective BRDFの係数を、元の空間に復元 EffectiveBRDF 拡散面: 係数が必要なのは特定の1方向ωのみ 光沢面: yの計算方法の詳細は、 「球面調和関数の多項式表現」参照 (http://lucille.sourceforge.net/blog/images/shpoly.pdf)
2.3.4 ピクセル色の出力 • fragment shader擬似コード
Normal map filteringの説明手順 ミップマップフィルタリングの復習 ≒ 法線マップのミップマップの問題点 ≠ 論文の手法説明 アイディアの概要 アルゴリズムの詳細 前計算 NDFミップマップテクスチャの作成 デモ・考察 Effective BRDFの計算 実行時
2.4 考察1 • 球面調和関数では鋭いスペキュラーなどは不可能 圧縮に利用する関数を変更することで実現
アルゴリズムの詳細 法線マップの入力 視点・光源位置の入力 NDFの圧縮 vMF 球面調和関数 NDFミップマップテクスチャの作成 Effective BRDFの計算 ピクセル色の出力 実行時 前計算
2.4 考察1 • 球面調和関数では鋭いスペキュラーなどは不可能 圧縮に利用する関数を変更することで実現 → 精度が高い反面、より計算負荷が高い アルゴリズムの流れは変わらないので今回は割愛
2.4 考察2 • 効果が顕著に現れる例と、それほど現れない例に分かれる 効果が顕著なケース: 光沢面、法線分布が急激、法線マップが高解像度 効果がでないケース: 拡散面、法線分布が緩やか、法線マップが低解像度 → 状況によっては重要な問題 法線マップのミップマップは潜在的に この問題を含んでいることを理解しておくことが重要
発表の流れ 1. 概要 2. 論文紹介「Frequency Domain Normal Map Filtering」 3. まとめ
3 まとめ • 紹介した論文: 「Frequency Domain Normal Map Filtering」 法線マップにおけるミップマップフィルタリング
3 まとめ ≒ ≠ スーパーサンプリング≠ミップマップフィルタリング スーパーサンプリング≒ミップマップフィルタリング = EffectiveBRDF データ量削減、処理の効率化のため 球面調和関数を利用 NDF BRDF