CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance...

123
CEDEC 2012 ココココココ コココココココココココココココ ココ ココ ココ コ ココココココココココココ Modular Radiance Transfer ココココ

description

シリコンスタジオ株式会社 技術資料 http://www.siliconstudio.co.jp/presentations/

Transcript of CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance...

Page 1: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

コンピュータグラフィクス関連の最新論文紹介

田村 尚希安田 廉

シリコンスタジオ株式会社 

~ Modular Radiance Transfer 法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

bull 本セッションの目的ndash ゲーム業界にとって有望な技術の理解及び知識の共有

bull 本セッションの内容ndash [ Modular Radiance Transfer 法]を利用した  リアルタイム GI(Global Illumination) 技術の解説

発表の概要

CEDEC 2012

解説技術の特徴

bull 長所ndash とにかく高速ndash 多重反射を扱える

bull 短所ndash 使い所を選ぶndash 多少込み入った前計算が必要

使いこなせればワンランク上の表現が可

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 2: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

bull 本セッションの目的ndash ゲーム業界にとって有望な技術の理解及び知識の共有

bull 本セッションの内容ndash [ Modular Radiance Transfer 法]を利用した  リアルタイム GI(Global Illumination) 技術の解説

発表の概要

CEDEC 2012

解説技術の特徴

bull 長所ndash とにかく高速ndash 多重反射を扱える

bull 短所ndash 使い所を選ぶndash 多少込み入った前計算が必要

使いこなせればワンランク上の表現が可

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 3: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

bull 本セッションの目的ndash ゲーム業界にとって有望な技術の理解及び知識の共有

bull 本セッションの内容ndash [ Modular Radiance Transfer 法]を利用した  リアルタイム GI(Global Illumination) 技術の解説

発表の概要

CEDEC 2012

解説技術の特徴

bull 長所ndash とにかく高速ndash 多重反射を扱える

bull 短所ndash 使い所を選ぶndash 多少込み入った前計算が必要

使いこなせればワンランク上の表現が可

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 4: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 本セッションの目的ndash ゲーム業界にとって有望な技術の理解及び知識の共有

bull 本セッションの内容ndash [ Modular Radiance Transfer 法]を利用した  リアルタイム GI(Global Illumination) 技術の解説

発表の概要

CEDEC 2012

解説技術の特徴

bull 長所ndash とにかく高速ndash 多重反射を扱える

bull 短所ndash 使い所を選ぶndash 多少込み入った前計算が必要

使いこなせればワンランク上の表現が可

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 5: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

解説技術の特徴

bull 長所ndash とにかく高速ndash 多重反射を扱える

bull 短所ndash 使い所を選ぶndash 多少込み入った前計算が必要

使いこなせればワンランク上の表現が可

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 6: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

注意点

bull 元論文では Modular ( モジュール式 ) という概念が前面に押し出されており立方体を組み合わせたシーン以外は適用しにくいような印象を受けます

bull 本セッションでは Modular の部分は抑えて説明しますので論文の流れと多少異なります

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 7: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 8: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 9: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光の概要

bull そもそも間接光って何

rArr 光源から一度以上物体に反射して届く光

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 10: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光の概要

bull 間接光があると何が良いのか rArr 柔らかなライティングを再現できシーン全体の    説得力が増す

解説手法は様々な高速化や制約を設けてリアルタイム処理を実現

その分非常に計算負荷が高くリアルタイム処理は困難

直接光 + 間接光直接光

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 11: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

解説手法の計算概要

直接光

直接光 + 間接光

背景オブジェクト( 静的オブジェクトに

限る )その他オブジェ

クト

分類

統合

+

+

間接光計算 間接光計算光の伝播

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 12: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 13: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 14: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 15: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 16: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 17: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 18: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光計算の考え方

bull 背景オブジェクトの間接光はメッシュ頂点で計算

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 19: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光計算の考え方

bull メッシュ頂点のライティング状態をベクトルで表記

119826 シーンの頂点数

119826行 [119949120783119949120784119949120785⋮]1

ライティングベクトル

今後スライド中でライティング状態を

絵で示してもベクトルで表記しても等価

2

3

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 20: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F を用いた間接光計算119826 シーンの 頂点数

119949119941 サンプル点の直接光成分119949119946119951119941 サンプル点の間接光成分

直接光直接光 + 間接光 間接光+=

頂点の情報のみ抽出補間

間接光変換処理F[

119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 21: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光計算の考え方

bull 光の変換行列 F の計算

119826 シーンの頂点数

iquest119826行iquest

⋮⋮

⋮25 82

20

50 ⋯

光の変換行列F

行列 F は静的オブジェクト

なら前計算可能

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 22: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

間接光計算の考え方

bull 要点1 背景オブジェクトの間接光はメッシュ頂点で計算2 ライティング状態はベクトルで表記可能3 直接光は光の変換行列 F を用いて間接光に変換4 光の変換行列 F は静的オブジェクトなら前計算可

+=

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 23: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへ光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 24: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

問題提起

ただし実行速度が不十分 + 頂点数の増加で処理量が爆発

上記計算式で間接光は計算可能

F[119949119946119951119941120783119949119946119951119941120784119949119946119951119941120785⋮

119949119946119951119941119930] timesiquest [

119949119941120783119949119941120784119949119941120785⋮119949119941 119930

][ iquest ]

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 25: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入 1 間接光計算の考え方の説明 2 問題提起 3 キーアイディアの説明

   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 26: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 全ての直接光は前計算した既知の状態の重ね合わせで近似できると仮定

キーアイディア

times01

+

times02

times04

+

現在の状態既知の状態

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 27: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 直接光が変化しても係数のみが変化ndash 既知の状態は変化しない

キーアイディア

times04

+

times03

times01

+

現在の状態既知の状態

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 28: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull これはベクトルの足し合わせとして表現可能

キーアイディア

119960120783 +119960120784 +119960120785≑ [119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930]

119949119941 現在の 直接光の 状態

既知の状態

times01

+

times02

times04

+

[ 119949119941120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 29: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 各状態には対になる間接光の状態がそれぞれ存在

キーアイディア

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 30: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 直接光側と同じ重みで間接光側を足し合わす事でを近似可能

キーアイディア

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 31: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778times120778

bull このロジックは下記条件を満たせば非常に高速1 必要な係数が十分に少ない2 係数が高速に計算可能

キーアイディア

今後既知の状態をrdquo基底rdquoと呼ぶ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 32: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 33: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 34: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 直接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 35: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

を求める

bull 2方向のアプローチが考えられるndash 間接光優先 を先に求めて

から

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 36: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

を求める

bull 両方を並行して解説ndash 最終的には両方をハイブリッドしたアプローチで

より良い基底を算出

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

[119913119941120783120783

119913119941120783120784

⋮119913119941

120783119930][ 119949119941

120783

119949119941120784

⋮119949119941119930] [119913119941

120784120783

119913119941120784120784

⋮119913119941

120784119930] [119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119930]

[119913119946119951119941120783

120783

119913119946119951119941120783

120784

⋮119913119946119951119941

120783119930][ 119949119946119951119941

120783

119949119946119951119941

120784

⋮119949119946119951119941

119930] [119913119946119951119941

120784120783

119913119946119951119941120784

120784

⋮119913119946119951119941

120784119930] [119913119946119951119941

120785120783

119913119946119951119941120785

120784

⋮119913119946119951119941

120785119930]

times120778 times120778 times120778 times120778times119813minus120783 times119813minus120783 times119813minus120783 times119813minus120783

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 37: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

最適な基底

bull 最適な基底は同じシーンでも場合によって異なるndash それぞれに特化した基底のほうが良い結果を得ら

れる

サンプリングベースの基底を採用

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 38: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 様々な状況でライティングした結果を集め特異値分解を用いて基底を算出

サンプリングベースの基底

特異値分解 119861119889特異値分解 119861119894119899 119889

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 39: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプルの選び方について

bull 特異値分解で得られるのは「全ての入力サンプルを良く近似する基底」

bull サンプルで用いる光源のタイプ方向位置を予め分かっている範囲で厳選するのが好ましい

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 40: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 41: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 42: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 43: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

119871119889

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 44: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 45: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 46: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

サンプリング行列

bull 特異値分解を施すために各サンプルの頂点の入射光を列に並べた行列を作成

119871119889

119871119894119899119889

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 47: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 入力された行列をという 3 行列に分解ndash 数多くの数学ライブラリがサポート

特異値分解 (Singular Value Decomposition)

119872

SVD

119880 Σ 119881119879lowast lowastiquest

が異なれば当然も異なる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 48: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 49: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 50: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 51: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

特異値分解 (Singular Value Decomposition)

bull に特異値分解を適用すると行列がとなる

左から重要度順に並んでいるため必要な数だけ用いればよい

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 52: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

基底による直接光の近似

>

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 53: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 優先してサンプリングした方の近似精度が高いbull 近似したいのは間接光なので間接光優先が好まし

アプローチの比較

直接光の近似精度 間接光の近似精度直接光優先

間接光優先

ハイブリッド

論文ではもう一歩進んだハイブリッドなアプローチを採用

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 54: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

ハイブリッド手法の計算手順

119861119889=119880119889 Σ119889119881119898

直接光優先アプローチ

①で求めた基底を元に間接光サンプルを計算

間接光優先アプローチを利用してを算出

からを計算

119871119894119899119889=119865119880119889 Σ119889

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 55: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

係数の数の比較

bull 直接光優先 bull ハイブリッド

係数の数

4係数の数

32

直接光 + 間接光 直接光 + 間接光間接光のみ 間接光のみ

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 56: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説

1 最適な基底の計算方法 2 係数の計算方法

   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

ランタイムの計算処理

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 57: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

係数の計算方法

bull ランタイムで必要な計算は

ここで

bull が必要だがハイブリッド手法の場合

     

119897119894119899119889=119861119894119899119889119960 119960120783 +119960120784 +119960120785≑

119960=119861119889minus1 119897119889

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 58: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

ランタイムの計算処理

bull ここで k は使用する係数の数ndash 自分たちのデモではndash 頂点数に比べ非常に少ないrarr高速

119861119889minus1119861119894119899 119889 119897119889119897119894119899 119889iquest lowast lowast

iquest

119948

119948

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 59: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算   - 導入   - 手法の詳細解説   - ショートデモ Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 60: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

ショートデモ

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 61: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 62: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 63: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Light Probe

bull 背景以外のオブジェクトには Light Probe を用いる

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 64: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Light Probe

bull Light Probe とはndash 全方位の入射光を保持する仮想的な球ndash 今回は球面調和関数 (SH) を使用

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 65: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Light Probe によるライティング

bull Light Probe を離散的に配置ndash シェーダで近傍の Light Probe の値を補間して

間接光の表現が可能

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 66: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Light Probe によるライティング

bull 時間の都合上詳細は割愛詳しくは下記書籍をご参照下さいndash Chapter8 「 KILLZONE2」 Light Probe自体の解説ndash Chapter9 「バイオハザード 5」 Light Probe によるラ

イティング

西川善司著「 3D ゲームファンのための

グラフィックス講座」

ここまではあくまで既存の手法の話

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 67: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 静的オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播   - 手法概要の説明   - データ更新時における高速化の解説 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 68: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Light Probe の計算

bull 通常 Light Probe は前計算した後更新しないndash Light Probe の計算は負荷が高い

今回は動的に Light Probe を更新する必要がある

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 69: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

動的な Light Probe

bull 今回シーンのライティング結果は既知の状態の組み合わせに分解される

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

times120778 times120778 times120778times120778

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 70: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

動的な Light Probe

bull 間接光と同様にそれぞれに対応した Light Probe を計算しておけば足し合わせで高速に計算可能

119960120783 +119960120784 +119960120785≑

119960120783 +119960120784 +119960120785≑

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 71: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 背景オブジェクトの間接光計算 Step2 その他オブジェクトへの光の伝播 Step3 デモ及び考察

間接光計算の解説手順

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 72: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

デモ

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 73: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

デモ詳細

bull 背景オブジェクトndash 頂点数 10800 ( 頂点 )ndash基底の係数 22 (係数 )

bull Light Probendash Probe総数 500 (個 )ndash基底の係数 12 (係数 )ndash球面調和関数の係数 9 (係数 )

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 74: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

パフォーマンス

bull 解像度は 1400800 で測定bull 実装には Compute Shader を使用bull 前計算約 45 分

ndash 2520 光源サンプルndash 20回反射まで考慮ndash 最適化で 10倍以上の高速化の余地あり

影あり 影なし 影なし GIなし

Geforce GTX 680 500 fps 800 fps 1500 fps

Geforce GTX 560 360 fps 440 fps 750 fps

Radeon 6630 M 80 fps 120 fps 280 fps

実装の Tips は Appendix に記載

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 75: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

まとめ

bull 良い点ndash 非常に高速計算負荷が一定ndash 反射回数が無制限(行列 F に含められる )ndash 高速な Light Probe 計算ndash 様々な拡張

bull 悪い点ndash Light の位置方向を含めた前計算ndash 動的すぎるシーンは不可 (rarrDelta Radiance

Transfer)ndash 頂点カラーを念頭に置いたメッシュ分割頂点配置

ndash 複雑すぎない形状

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 76: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ

ndash 間接光計算手法の解説 (論文 4 節)ndash シーン分割による高速化の解説 (論文 5 節)

3 まとめ

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 77: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 78: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 79: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

問題提起 ( 14 )

bull 対象とする問題 シーンが複雑になった場合の計算負荷の増大

シンプルなシーン

より複雑なシーン

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 80: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

問題提起 ( 24 )

bull 複雑なシーンでは1 メッシュ頂点数が増加2 必要な係数の数の増大 rArr 計算量の増大}

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 81: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

問題提起 ( 34 )

bull 解決策シーンを複数の小領域に分割

rArr 適切に小領域を設定すればシーンの複雑さを   抑える事が可能bull 小領域の分割方法はユーザーが決定

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 82: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

問題提起 ( 44 )

bull 各小領域内の間接光は前述の方法で計算可能bull 小領域間の光の伝播を別途考慮する必要がある

小領域間の光の伝播の高速な計算方法を解説

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 83: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 84: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 85: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 16 )

bull 小領域間の光の伝播を個別に計算

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 86: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 26 )

bull 例として右rArr(中央)rArr左へ伝播する光を考える

キーアイディアでは多重反射を考慮しない光の伝播を考える

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 87: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 36 )

bull 小領域間の光の伝播は頂点間の影響に帰着

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 88: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 46 )

bull 小領域間の光の伝播行列 P を前計算119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

光の伝播行列P

119820行119821列[iquest ]P

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 89: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 56 )

bull 光の伝播行列 P を利用して光の伝播を高速に計算

[ 119956120783⋮119956119925]

119852 伝播元の小領域の頂点の色119941 伝播先の小領域の頂点の色

119820行119821列[iquest ][ 119941120783

⋮119941119924

] timesiquest P119820 伝播先の小領域の頂点数119821 伝播元の小領域の頂点数

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 90: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

キーアイディア ( 66 )

bull 光の伝播を係数からの変換に修正

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 91: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算

ndash キーアイディアの説明ndash 小領域間の伝播行列の計算

Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 92: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull ライトフィールドという概念を導入

光の伝播行列の計算 ( 17 )

ライトフィールドは任意の点群を通過する

光を体系的に記録するためのデータ構造

境界面に注目

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 93: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 27 )

bull 光の伝播行列 P を三要素に分割1 光の出射行列 Pout2 光の通過行列 Pthrough3 光の入射行列 Pin

右の小領域 中央の小領域 左の小領域P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 94: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 37 )

bull 光の出射行列 Poutndash 小領域 rArr ライトフィールド

119819120783 出射ライトフィールドのサンプル数119821 伝播元の小領域の頂点数

iquest119819120783行iquest

⋮⋮

⋮4 5 9

6

8

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 95: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 47 )

bull 光の通過行列 Pthroughndash ライトフィールド rArr ライトフィールド

119819120784 出射ライトフィールドのサンプル数119819120783入射ライトフィールドのサンプル数

iquest119819120784行iquest

⋮⋮

⋮5 8

2

5 ⋯

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 96: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 57 )

bull 光の入射行列 Pinndash ライトフィールド rArr 小領域

119820伝播先の小領域の頂点数119819120784 入射ライトフィールドのサンプル数

iquest119820行iquest

2 5 6

1

5⋮

Pin 計算時にヘミキューブ法などを用いて立体角を考慮

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 97: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 67 )

bull 全ての小領域間の光の伝播は三種類の行列の組み合わせで計算可能

P = Pin times Pout上記例ではは再利用不可能だがは共通

P = Pin times Pthrough times Pout

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 98: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

光の伝播行列の計算 ( 77 )

bull 光の伝播の計算のまとめ

119960120783 +119960120784 +119960120785≑ [ 119913119953120783120783

119913119953120783120784

⋮119913119953

120783119924

] [ 119913119953120784120783

119913119953120784120784

⋮119913119953

120784119924

] [ 119913119953120785120783

119913119953120785120784

⋮119913119953

120785119924

]

[ 119913119941120784120783

119913119941120784120784

⋮119913119941

120784119925] [ 119913119941

120785120783

119913119941120785120784

⋮119913119941

120785119925]

times119823 times119823 times119823times119823

[ 119956120783119956120784⋮119956119925]

[ 119941120783

119941120784

⋮119941119924

]

119960120783 +119960120784 +119960120785≑ [ 119913119941120783120783

119913119941120783120784

⋮119913119941

120783119925]

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 99: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 100: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 101: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

多重反射への拡張

bull 間接光計算を反復実行

間接光計算

間接光計算

間接光計算

直接光

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 102: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張

ndash 多重反射への拡張ndash モジュール導入による更なる効率化

Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 103: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

モジュールの導入 ( 13 )

bull モジュール( = 再利用可能な汎用小領域)の導入

bull 上記のようなシーンは「回転」も考慮すれば5種の立方体モジュールの組合わせで構成可能

3 方向壁 2 方向壁 2 方向壁 1 方向壁 0 方向壁

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 104: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

モジュールの導入 ( 23 )

通過行列は(直進 右折 左折)の三種類

ライトフィールドデータを一つの行列に格納

特異値分解

データ量の削減及び計算の高速化

詳しくは論文 51 節参照

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 105: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

モジュールの導入 ( 33 )

bull 立方体モジュールのメリット1 データ量及び前計算時間の削減2 再利用可能な光の通過行列が導入可能3 ライトフィールド用の基底が導入可能

メリットは多いがシーンの自由度とのトレードオフ

モジュールの使い所は要検討

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 106: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Step1 問題提起 Step2 小領域間の光の伝播の計算 Step3 手法の拡張 Step4 デモ及び考察

シーン分割による高速化の解説手順

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 107: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

デモ

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 108: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

考察

bull ライトフィールドは本当に必要か

bull 小領域間の位置関係が固定ならば(恐らく)不要

rArr レイトレーシング法で伝播行列 P を直接計算   した方が効率的bull 小領域を動的に入れ替える場合は必要

P = Pin times Pthrough times Pout

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 109: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表の流れ

1 発表の概要 2 技術紹介 + デモ 3 まとめ

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 110: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

発表内容のまとめ

bull Modular Radiance Transfer 法を解説ndash 長所

bull とにかく高速bull 多重反射を含んだ間接光が扱えるbull 技術のコア部分は汎用的で応用の余地が高い

ndash 短所bull 前計算を含め使い方に癖がある  ( 実験を通してノウハウを蓄積すれば余り問題にならない )

ゲームへの応用は十分可能

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 111: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

本スライド内で引用した論文の図の著作権は全て論文著者に帰属します

その他の図スライド本体挿絵等の著作権は

シリコンスタジオ株式会社に帰属します

著作権について

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 112: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

最後に

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

httpwwwsiliconstudiocojppresentationsindexhtml

スライドデモは弊社 HP で近日公開

制作協力 河野 駿介 辻 俊晶 古家 亙 後藤 晋也 京田 文人 三谷 健一郎

問い合わせ先  田村 nk-tamurasiliconstudiocojp 安田 re-yasudasiliconstudiocojp

シリコンスタジオは常に人材を求めています

ご興味ある方は弊社 HP をご覧ください

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 113: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A 実装について

bull 実装自体は様々なアプローチが可能bull ここではデモの実装でのアプローチを紹介

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 114: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A 前計算について

bull F の計算ndash メッシュの全頂点からキューブマップにレンダリングndash ピクセルには頂点 ID とウェイトを出力

bull 直接光サンプルの計算ndash 頂点カラーを Stream Out でバッファに出力ndash 頂点シャドウあり

bull Light Probe の計算ndash 各 Probe の中心からキューブマップにレンダリングndash の対応する基底ベクトル同士を足し合わせた

ベクトル ( 直接光 + 間接光 ) を頂点カラーとして使用

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 115: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム

bull 直接光の結果を Stream Out でバッファに出力ndash 頂点シャドウありndash カラーバッファへの書き込み OFFndash 複数オブジェクトの場合は単一バッファにオフ

セットを変えて出力

119897119889

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 116: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム 係数

bull Compute Shader で を計算ndash は極めて横長の行列 ( 行 ~100程度 列 頂点数 )ndash は GPU が少々苦手な処理ではあるものの

タイリングベースの実装で高速に処理可能

iquest

119897119889119960 lowast119861119889minus1

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 117: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム

bull Compute Shader で を計算ndash は極めて縦長 ( の転置と同サイズ ) なので素直に実装可能

iquest

119861119894119899119889 119960119897119894119899 119889 lowast

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 118: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム 最終パス

bull を頂点カラーとして入力としてピクセル単位の直接光のシェーディングと合成して最終結果を得る

iquest +

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 119: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム Light Probe(1)

bull Compute Shader でを計算ndash は縦長 ( 行 頂点数 timesSH係数の数 列 ~100程度 )

iquest

119880119907119900119897 119960119897119907119900119897 lowast

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 120: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix A ランタイム Light Probe(2)

bull Probe を用いて Dynamic Objects をライティングndash 各 Light Probe が SH を 9係数で保持するため

3D Texture ではなく Structured-Buffer で保持ndash Vertex Shader 内で自力 Tri-Linear 補間

iquest +

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 121: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix B 後半の補足

bull 大規模なシーンでの光の伝播bull 小領域間の光の伝播は個別に総当たりで計算

 rArr小領域間の光の伝播は距離によって大きく減衰

実際は大規模シーンでも概ね二つ隣の小領域まで考慮すれば十分

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 122: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

Appendix B 後半の補足

bull 小領域の境界

bull 小領域の境界部分が不連続になる rArr 小領域の境界部分は補間の必要がある

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記
Page 123: CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~

CEDEC 2012

bull スライドと論文で表記が違う記号があります

Appendix C 記号の表記

スライドでの表記 論文での表記

b

  • Slide 1
  • 発表の流れ
  • 発表の流れ (2)
  • 発表の概要
  • 解説技術の特徴
  • 注意点
  • 発表の流れ (3)
  • 発表の流れ (4)
  • 間接光の概要
  • 間接光の概要 (2)
  • 解説手法の計算概要
  • 間接光計算の解説手順
  • 間接光計算の解説手順 (2)
  • 間接光計算の解説手順 (3)
  • 間接光計算の解説手順 (4)
  • 間接光計算の解説手順 (5)
  • 間接光計算の解説手順 (6)
  • 間接光計算の考え方
  • 間接光計算の考え方 (2)
  • 間接光計算の考え方 (3)
  • 間接光計算の考え方 (4)
  • 間接光計算の考え方 (5)
  • 間接光計算の解説手順 (7)
  • 問題提起
  • 間接光計算の解説手順 (8)
  • キーアイディア
  • キーアイディア (2)
  • キーアイディア (3)
  • キーアイディア (4)
  • キーアイディア (5)
  • キーアイディア (6)
  • 間接光計算の解説手順 (9)
  • 間接光計算の解説手順 (10)
  • を求める
  • を求める (2)
  • を求める (3)
  • 最適な基底
  • サンプリングベースの基底
  • サンプルの選び方について
  • サンプリング行列
  • サンプリング行列 (2)
  • サンプリング行列 (3)
  • サンプリング行列 (4)
  • サンプリング行列 (5)
  • サンプリング行列 (6)
  • サンプリング行列 (7)
  • 特異値分解(Singular Value Decomposition)
  • 特異値分解(Singular Value Decomposition) (2)
  • 特異値分解(Singular Value Decomposition) (3)
  • 特異値分解(Singular Value Decomposition) (4)
  • 特異値分解(Singular Value Decomposition) (5)
  • 基底による直接光の近似
  • アプローチの比較
  • ハイブリッド手法の計算手順
  • 係数の数の比較
  • ランタイムの計算処理
  • 係数の計算方法
  • ランタイムの計算処理 (2)
  • 間接光計算の解説手順 (11)
  • ショートデモ
  • 間接光計算の解説手順 (12)
  • 間接光計算の解説手順 (13)
  • Light Probe
  • Light Probe (2)
  • Light Probeによるライティング
  • Light Probeによるライティング (2)
  • 間接光計算の解説手順 (14)
  • Light Probeの計算
  • 動的なLight Probe
  • 動的なLight Probe (2)
  • 間接光計算の解説手順 (15)
  • デモ
  • デモ詳細
  • パフォーマンス
  • まとめ
  • 発表の流れ (5)
  • シーン分割による高速化の解説手順
  • シーン分割による高速化の解説手順 (2)
  • 問題提起 (14)
  • 問題提起 (24)
  • 問題提起 (34)
  • 問題提起 (44)
  • シーン分割による高速化の解説手順 (3)
  • シーン分割による高速化の解説手順 (4)
  • キーアイディア (16)
  • キーアイディア (26)
  • キーアイディア (36)
  • キーアイディア (46)
  • キーアイディア (56)
  • キーアイディア (66)
  • シーン分割による高速化の解説手順 (5)
  • 光の伝播行列の計算 (17)
  • 光の伝播行列の計算 (27)
  • 光の伝播行列の計算 (37)
  • 光の伝播行列の計算 (47)
  • 光の伝播行列の計算 (57)
  • 光の伝播行列の計算 (67)
  • 光の伝播行列の計算 (77)
  • シーン分割による高速化の解説手順 (6)
  • シーン分割による高速化の解説手順 (7)
  • 多重反射への拡張
  • シーン分割による高速化の解説手順 (8)
  • モジュールの導入 (13)
  • モジュールの導入 (23)
  • モジュールの導入 (33)
  • シーン分割による高速化の解説手順 (9)
  • デモ (2)
  • 考察
  • 発表の流れ (6)
  • 発表内容のまとめ
  • 著作権について
  • 最後に
  • Appendix A 実装について
  • Appendix A 前計算について
  • Appendix A ランタイム
  • Appendix A ランタイム 係数
  • Appendix A ランタイム
  • Appendix A ランタイム 最終パス
  • Appendix A ランタイム Light Probe(1)
  • Appendix A ランタイム Light Probe(2)
  • Appendix B 後半の補足
  • Appendix B 後半の補足 (2)
  • Appendix C 記号の表記