ゲーム開発者向け最新技術論文の解説・実装講座

51
Imagire Day ゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲ ゲゲゲゲ ゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲ ゲゲゲゲ ゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲ ~~ ゲゲ ゲゲ ゲゲゲゲゲゲゲゲゲゲゲゲ ゲゲゲゲゲゲゲゲゲゲゲゲゲゲゲ ゲゲ

description

ゲーム開発者向け最新技術論文の解説・実装講座. ~遥かなるトップレンダリストの頂を目指して~. その②. 田村 尚希 シリコンスタジオ株式会社 ソフトウェアエンジニアリング部. 発表の流れ. 1. 概要 2. 論文紹介 「 Frequency Domain Normal Map Filtering 」 3. まとめ. 発表の流れ. 1. 概要 2. 論文紹介 「 Frequency Domain Normal Map Filtering 」 3. まとめ. 1. 概要. 発表内容 :. 最新論文のうち、ゲームにも関係が深い論文を紹介. - PowerPoint PPT Presentation

Transcript of ゲーム開発者向け最新技術論文の解説・実装講座

Page 1: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

ゲーム開発者向け最新技術論文の解説・実装講座ゲーム開発者向け最新技術論文の解説・実装講座~遥かなるトップレンダリストの頂を目指して~

田村 尚希シリコンスタジオ株式会社 ソフトウェアエンジニアリング

その②

Page 2: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

発表の流れ発表の流れ

1. 概要2. 論文紹介

「 Frequency Domain Normal Map Filtering 」

3. まとめ

Page 3: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

発表の流れ発表の流れ

1. 概要2. 論文紹介

「 Frequency Domain Normal Map Filtering 」

3. まとめ

Page 4: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要

• 発表内容 :

• 発表の目的 :

最新論文のうち、ゲームにも関係が深い論文を紹介

1. 最新技術の紹介及び理解 2. 技術論文に親しむ機会を提供

最新技術に興味を持つ人が増え、ゲーム業界全体の活性化に繋がることを期

Page 5: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要

  「 Frequency Domain Normal Map Filtering 」[Han et al. SIGGRAPH 2007]

• 紹介論文 :

Page 6: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要

• 一言で言えば :

法線マップにおけるミップマップフィルタリング法線マップにおけるミップマップフィルタリング

に関する論文

• 「 Frequency Domain Normal Map Filtering 」

Page 7: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要• 動画 :

Page 8: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要• 動画 :

Page 9: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

1.1. 概要概要• 利点

• 欠点

正確な法線マップミップマップフィルタリングが可能

拡散面から鏡面に近い光沢面まで適用可能

計算負荷が高い

テクスチャ消費量が多い

シーンによっては、適用前後でほとんど差がない

Page 10: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

発表の流れ発表の流れ

1. 概要2. 論文紹介

「 Frequency Domain Normal Map Filtering 」

3. まとめ

Page 11: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

Normal map filtering の説明手順

ミップマップフィルタリングの復

法線マップのミップマップの問題点

論文の手法説明

デモ・考察

Page 12: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.1 2.1 ミップマップフィルタリングミップマップフィルタリング

解像度を半分にし、情報を平均化した解像度を半分にし、情報を平均化した一連のテクスチャ群をミップマップテクスチャと呼ぶ一連のテクスチャ群をミップマップテクスチャと呼ぶ

• ミップマップテクスチャ

Page 13: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.1 2.1 ミップマップフィルタリングミップマップフィルタリング

• ミップマップフィルタリング(トリリニアフィルタリング)

Page 14: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.1 2.1 ミップマップフィルタリングミップマップフィルタリング

• ミップマップフィルタリングが必要な理由

スクリーン解像度とテクスチャ解像スクリーン解像度とテクスチャ解像度の不整合を解決するため度の不整合を解決するため

Page 15: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.1 2.1 ミップマップフィルタリングミップマップフィルタリング

• 解像度の差を解決する本質的な方法

ランタイム時のスーパーサンプリングは計算負荷が高いランタイム時のスーパーサンプリングは計算負荷が高い

⇒ スーパーサンプリング

Page 16: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.1 2.1 ミップマップフィルタリングミップマップフィルタリング

• スーパーサンプリングの代替手段

スーパーサンプリング ミップマップフィルタリング≒スーパーサンプリング ミップマップフィルタリング≒

⇒ ミップマップテクスチャ

Page 17: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

Normal map filtering の説明手順

ミップマップフィルタリングの復

法線マップのミップマップの問題点

論文の手法説明

デモ・考察

Page 18: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.2 2.2 法線マップのミップマップ法線マップのミップマップ

• 法線マップのミップマップテクスチャ

Page 19: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.2 2.2 法線マップのミップマップ法線マップのミップマップ

• 法線マップのミップマップの問題点

スーパーサンプリング≠ミップマップフィルタリングスーパーサンプリング≠ミップマップフィルタリング

≠正 誤

Page 20: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

スーパーサンプリング≠ミップマップフィルタリングスーパーサンプリング≠ミップマップフィルタリング

2.2 2.2 法線マップのミップマッ法線マップのミップマッププ• 論文の解決方法

スーパーサンプリング ミップマップフィルタリング≒スーパーサンプリング ミップマップフィルタリング≒

≠≒正 誤正

Page 21: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

Normal map filtering の説明手順

ミップマップフィルタリングの復

法線マップのミップマップの問題点

論文の手法説明

デモ・考察

アイディアの概要

アルゴリズムの詳細

NDF ミップマップテクスチャの作成

Effective BRDF の計算

前計算

実行時

Page 22: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

=

NDF BRDF Effective  BRDF

Page 23: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

N

1

•                          という概念 を導入

NDFNDF (( NNormal ormal DDistribution istribution FFunctionunction ))

基本的には   ・法線が存在する方向は 1

・法線が存在しない方向は 0という値を持ったバイナリ情報

で正規化

キューブマップ形式では、データ量が膨大 → 要圧縮キューブマップ形式では、データ量が膨大 → 要圧縮

N

1

法線の本数:N

Page 24: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

=

NDF BRDF Effective  BRDF

Page 25: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

• BRDF を可視化

s = 5s = 10

拡散面 :

光沢面 : oi

oihxhxoi

snnf

 )0,max();,(

)0,max();,( xixoi nnf

法線ベクトル光の入射ベクトル

Page 26: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

=

NDF BRDF Effective  BRDF

Page 27: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

);,(),(),( xoiio nfxLxB

)0,max();,( xixoi nnf

xqqoiio nf

NxLxB );,(

1),(),(

基本式

スーパーサンプリング

拡散面 :

光沢面 : oi

oihxhxoi

snnf

 )0,max();,(

サブピクセル位置サブピクセル数法線ベクトル

出射方向

入射方向ピクセル位置

ライトの強さ入射輝度ピクセルの色放射照度

:

:

:

:

:

:

:

)(:

)(:

q

N

n

x

BRDFf

L

B

o

i

• スーパーサンプリングを数式化

io

n

L

B

x

xq

qoiio nfxLN

xB );,(),(1

),(

Page 28: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

Effective BRDFEffective BRDF

⇒BRDF の項をスーパーサンプリングすれば良い

xq

qoi nfN

);,(1 を            と呼ぶ

xqqoiio nf

NxLxB );,(

1),(),(

Page 29: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

• Effective BRDF を可視化拡散面 :

光沢面 :xq

qoi nfN

);,(1

oi

oihxhxoi

snnf

 )0,max();,(

)0,max();,( xixoi nnf

Effective BRDFEffective BRDF法線ベクト

ル法線ベクト

法線ベクトル

Page 30: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3 2.3 アイディアの概要アイディアの概要

2. Effective BRDF をリアルタイムに計算

1. NDF を前計算で保存

Page 31: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

Normal map filtering の説明手順

ミップマップフィルタリングの復

法線マップのミップマップの問題点

論文の手法説明

デモ・考察

アイディアの概要

アルゴリズムの詳細

NDF ミップマップテクスチャの作成

Effective BRDF の計算

前計算

実行時

Page 32: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

アルゴリズムの詳細

NDF の圧縮

NDF ミップマップテクスチャの

作成

法線マップの入力 視点・光源位置の入力

Effective BRDF の計算

ピクセル色の出力

前計算前計算 実行時実行時

球面調和関数

Page 33: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

• 球面調和関数の要点

2.3.1 2.3.1 球面調和関数球面調和関数

各方向の輝度を高さに変換

本来の輝度分布

データ量

16個~ 64個の float :

キューブマップのデータ量 :

float × ( 32×32×6 ) pixel : 24576 byte

球面調和関数は、大まかな特徴を極めて効率的に近似可能

データ量

球面調和関数を用いた近似

64byte (16個の場合 )

データ量を 1/400 に圧縮 !!

球に投影

詳しくは、株式会社詳しくは、株式会社 PyramidPyramid (( http://www.pyramid-inc.net))の「使える最新の「使える最新 PRTPRT のススメ」参照のススメ」参照

Page 34: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3.1 NDF2.3.1 NDF の圧縮の圧縮

• NDF を球面調和関数を用いて圧縮

各方向の値を高さに変換

本来の NDF球面調和関数を用いた近似

データ量

16個~ 64個の float :

キューブマップのデータ量 :

float × ( 32×32×6 ) pixel : 24576 byte

球面調和関数は、大まかな特徴を極めて効率的に近似可能

データ量

64byte (16個の場合 )

データ量を 1/400 に圧縮 !!

Page 35: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

アルゴリズムの詳細

NDF の圧縮

NDF ミップマップテクスチャの

作成

法線マップの入力 視点・光源位置の入力

Effective BRDF の計算

ピクセル色の出力

前計算前計算 実行時実行時

球面調和関数

Page 36: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3.2 NDF2.3.2 NDF ミップマップテクスチャミップマップテクスチャ• NDF を、ミップマップの各レベル毎に球面調和関数 を用いて圧縮

Page 37: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

アルゴリズムの詳細

NDF の圧縮

NDF ミップマップテクスチャの

作成

法線マップの入力 視点・光源位置の入力

Effective BRDF の計算

ピクセル色の出力

前計算前計算 実行時実行時

球面調和関数

Page 38: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3.3 Effective BRDF2.3.3 Effective BRDF の計算の計算

• 全方向に関して、 NDF と BRDF を乗算し足し合わせる

畳み込み(畳み込み( ConvolutionConvolution )という演算に相当)という演算に相当

Page 39: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3.3 Effective BRDF2.3.3 Effective BRDF の計算の計算

,,,ˆ210effeffeffeff ffff

• 畳み込みは、球面調和関数空間では高速に処理可能

=

NDF

BRDF

Effective  BRDF

理論及び 理論及び f f の計算方法の詳細は論文の計算方法の詳細は論文 4.24.2 及び及び 4.34.3参照参照

球面調和関数空間

,,,ˆ210 NNNN

,,,ˆ210 ffff

Page 40: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

アルゴリズムの詳細

NDF の圧縮

NDF ミップマップテクスチャの

作成

法線マップの入力 視点・光源位置の入力

Effective BRDF の計算

ピクセル色の出力

前計算前計算 実行時実行時

球面調和関数

Page 41: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

• Effective BRDF の係数を、元の空間に復元

2.3.4 2.3.4 ピクセル色の出力ピクセル色の出力

)(),(),( effio fxLxB

i

yy の計算方法の詳細は、 の計算方法の詳細は、 「球面調和関数の多項式表現」参照 (( http://http://lucille.sourceforge.net/blog/images/shpoly.pdflucille.sourceforge.net/blog/images/shpoly.pdf))

,,,ˆ210effeffeffeff ffff Effective

  BRDF

係数が必要なのは特定の係数が必要なのは特定の 11 方向方向 ωω のみのみ

値方向の球面調和関数の :)(y

拡散面 :

光沢面 : h

)(ˆ)( j

jeffj

eff yff

Page 42: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.3.4 2.3.4 ピクセル色の出力ピクセル色の出力

}̂t vector coefficien BRDF and ector incident v , vector half :Setup{  fih

),,NDFTexture(texture2Dˆ tsN

)nconvolutio( ˆmultiply ˆˆ fNf eff  

• fragment shader 擬似コード

}caseglossy { case}, diffuse{ of tscoefficien SH compute hiy

)intensitylight is (PixelColor LfL eff

),ˆ(dot yff effeff

Page 43: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

Normal map filtering の説明手順

ミップマップフィルタリングの復

法線マップのミップマップの問題点

論文の手法説明

デモ・考察

アイディアの概要

アルゴリズムの詳細

NDF ミップマップテクスチャの作成

Effective BRDF の計算

前計算

実行時

Page 44: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.4 2.4 考察考察 11

圧縮に利用する関数を変更することで実現圧縮に利用する関数を変更することで実現

• 球面調和関数では鋭いスペキュラーなどは不可能

Page 45: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

アルゴリズムの詳細

NDF の圧縮

NDF ミップマップテクスチャの

作成

法線マップの入力 視点・光源位置の入力

Effective BRDF の計算

ピクセル色の出力

前計算前計算 実行時実行時

球面調和関数vMF

Page 46: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.4 2.4 考察考察 11

圧縮に利用する関数を変更することで実現圧縮に利用する関数を変更することで実現

→ 精度が高い反面、より計算負荷が高い

• 球面調和関数では鋭いスペキュラーなどは不可能

アルゴリズムの流れは変わらないので今回は割愛アルゴリズムの流れは変わらないので今回は割愛

Page 47: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

2.4 2.4 考察考察 22

効果がでないケース :

  拡散面、法線分布が緩やか、法線マップが低解像度

→ 状況によっては重要な問題

• 効果が顕著に現れる例と、それほど現れない例に分かれる

効果が顕著なケース :

  光沢面、法線分布が急激、法線マップが高解像度

法線マップのミップマップは潜在的に法線マップのミップマップは潜在的にこの問題を含んでいることを理解しておくことが重要この問題を含んでいることを理解しておくことが重要

Page 48: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

発表の流れ発表の流れ

1. 概要2. 論文紹介

「 Frequency Domain Normal Map Filtering 」

3. まとめ

Page 49: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

3 3 まとめまとめ

法線マップにおけるミップマップフィルタリング法線マップにおけるミップマップフィルタリング

  「 Frequency Domain Normal Map Filtering 」• 紹介した論文 :

Page 50: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

3 3 まとめまとめ

=

NDF BRDF Effective  BRDF

スーパーサンプリング≠ミップマップフィルタリングスーパーサンプリング≠ミップマップフィルタリング

データ量削減、処理の効率化のためデータ量削減、処理の効率化のため球面調和関数を利用球面調和関数を利用

スーパーサンプリング ミップマップフィルタリング≒スーパーサンプリング ミップマップフィルタリング≒

Page 51: ゲーム開発者向け最新技術論文の解説・実装講座

Imagire Day

御静聴ありがとうございました御静聴ありがとうございました

• 質問はございませんか ?