レイトレ合宿2!!参加レポート

こんにちわ,Pocolです。
皆さん元気にレイを飛ばしていますか?
今日は,先週参加してきたレイトレ合宿2!!についてレポートすることにします。
まず最初に結果ですが,今年の目標である「ビリ脱出!」をめでたく達成することができ7位入賞(7/15)を果たしました。
商品としてフィギュアで有名なグッドスマイルカンパニーさんのトイレットペーパーを頂きました。
10702239_630702457044562_7227892388743719624_n
あと,今年レンダリングした画像は下記のようになります。
frame_20140905_234109
一応わかりづらいので説明を追加しておくと,一番奥側がミラーになっていて手前のものが反射して見えるようになっています。右側はグロッシー(Phong)を表現するためのマテリアルに設定しています。
プレゼン資料をSlideShareにアップロードしたので興味がある方は見てください。



あと,各参加者のレンダリング画像と,レンダラーのソースコードおよびスライドがレイトレ合宿2!!のサイトに公開されているので,興味があるかたは是非見てみてください。

レイトレ合宿2!!ですが,今年は河口湖カントリーコテージBanにて開催されました。
Bw5IpQ-CIAAcZp1
10665075_630701617044646_2850027269058581096_n
去年は電車で行きましたが,荷物等を考えると色々と面倒なので,今年は自家用車にて現地に向かいましたが,東名高速で途中ゲリラ豪雨にあい,前が見えない状態で車を運転しました。
本当にマジゲリラ豪雨やばい。後ろから追突されないか非常に不安で,できるだけ車間をとって運転まじで神経使いました。さすがに疲れるので所々のPAで休憩をとりつつ無事に現地に到着。出発前はめちゃくちゃいい天気で,今日はBBQ日和だな~なんて思っていたのですが,現地に着いたら雨。これBBQできるのか?なんて思っていたのですが,屋根つきの場所だったのでみんなでおいしくお肉を頂くことができました!!
BBQの時に自己紹介があったのですが,八田さんが「レイトレ合宿のおかげで転職できました!」と言っていたのが印象深かったです。転職したいときにはレイトレすると良いのかもしれません。
BBQの後は各自お風呂に入って,その後セミナーという流れになりました。
今年のセミナーは内容が凄く濃くて非常に良かったです。以下はセミナーに参加した際のメモ内容です。


2014/09/06(Sat)
21:30~
kgussan 「フォトンマッピングGPU実装最新手法」
詳細は,http://www.slideshare.net/ssuser2e676d/gpu-h2609kgussan2-38830113を参照。

論文を読んでの内容を紹介。
大域照明は現行では2次までが多い。
アルゴリズムの比較について → raytracing.jpを参照。
リアルタイムレイトレーシング → 5FacesのMatt svobodaさん
今回紹介するリアルタイムフォトンマッピング処理 → Deep GBufferと,Alchemy AOやっている人による論文。
実装手法は4つ,3D Bounds, 2.5D Bounds, Hash Grid, Tiled。
手法の違いは,フォトンでループを回すか?ピクセルで回すか?射影するジオメトリ?どの空間?などで異なる。

(1) 3D Bounds
グラフィックスパイプラインのラスタライザを使う。
フォトンは20面体。
フォトンは格納せずラスタライズするときに直接つかっている感じで力技。
デメリット→ラスタライズでブルートフォースなので,ラスタライズの処理能力で頭打ちになる。

(2) 2.5D Bounds
スクリーンスペースでやる。ローカルリフレクションっぽい感じのやつ。
フォトンベースのループで,(1)よりも速い。
オクル―ジョンがある寄与の影響が出ない。

(3) HashGrid Cells
セル上にフォトンを分配して,スクリーンのピクセル座標を3D空間に投影する。
その座標に近いフォトンを3D空間上で探索・収集する。
離散下サンプル手法を使っているけどノイズがでるのでバイラテラルフィルタをかける。

(4)タイルベース手法
スクリーンスペースでタイル状にピクセルを区切って,そのタイルごとにフラスタムを生成。
フラスタムにのりしろをつけてフォトンを分配する。
タイルベースレンダリングのライトの代わりにフォトンを使ったような手法。

実行結果 → 2.5D BoundsとTiled Algorithmの結果が良好。

まとめ
データ構造で性能が大きくことなる。
映画ではフォトンが6桁ぐらい違うので,まだ適していない。
ネックはメモリバンド幅。
メモリレイテンシが追い付かない。

Q&A
・この技術使っているゲームある?
まだない。研究レベルでは多少例がある。
すごく限定的にすれば使えるのではないか?例えば懐中電灯をつかったドアップとか,ダイアを探せとか。

 


22:10~
shocker 「Monte Carlo Ray Tarcing アルゴリズム超概略」
詳細は,http://www.slideshare.net/shocker_0x15/2-38791622

・モンテカルロ積分
 期待値が真値に一致する。
 任意のPDFを使える

・重点的サンプリング
 理想的なPDFを求めることは困難。

・グローバルイルミネーション
 カメラに到達するあらゆる光経路の寄与を積分する。
 モンテカルロ積分を使って解く。

・Path Tracing
 入射方向を確率的にサンプル。
 光源に当たれば寄与が取れる。
 でもなかなか当たらない。

・Next Event Estimation
 光源上の点を明示的にサンプルし,視線経路と接続する。
 スペキュラーは使わない。

・Multiple Importance Sample
 光源とつなげる。
 一長一短がある。
 2つの戦略を重みをつけて合成するのがMIS。いいとこどり。
 MISウェイト
 バランスヒューリスティック。

・Bidirectional Path Tarcing
 MISを一般化。
 任意の経路に一般化。
 視線パスと光源パスの各頂点を接続。
 長さ(3, 1) → 目から3頂点,光源から1頂点を表す。

・Metropolis Light Transport
 ごく一部の領域の光輸送経路が重要となるシーンに弱い,そこでMLT。
 既存の有効パスへの変異を加えて新たなパスを生成。有効なものだけをとっていく。

・Primatry Sample Space MLT
 経路のもとになる乱数レベルで変異を加える。
 オリジナルのMLTよりも実装が簡単かつ,元よりもロバスト。

・Photon Mapping
 1.フォトントレーシング
 2.密度推定
 フォトンマッピングは経路をゆるく接続する。

・Progressive Photon Mapping
 あらかじめ輝度計算点を生成しておく
 フォトントレーシングを繰り返して統計量を更新。

・Stochastic PPM
 PPMはアンチエイリアスとかDOFが苦手。
 これらの効果は平均放射輝度推定を必要とする。
 正確な推定には無限の輝度推定点が必要。
 領域内で探索半径などの統計量を共有。
 すべてをまとめることで,平均輝度の推定値をプログレッシブに真値に近づけられる。

・PPM:Probabilistic Approach
 半径を徐々に小さくしていったオリジナルのフォトンマッピングの結果を重ね合わせるだけ。

・Adaptive Markov Chain Monte Calro PPM
 PPM(SPPM)の問題点。
 上からくる場合。
 不可視なフォトン経路=無駄な経路。
 PPM + PSSMLT + α
 可視なら採択していく。
 変異パラメータの自動調整も行う。
 ズームしても破綻しない。自動調整の結果。

・Unified Path Sample(Vertex Connection And Mergin)
 BPT
  光沢面の多いシーン得意
  SDSパス苦手

 PPM
  光沢面の多いシーン苦手
  SDSパス得意

 MISを使えばいいんじゃね?
 しかし問題がある。
 サンプリング次元が違う。
 バランスヒューリスティックで問題。単位が違う
  視線パスの端点をずらして光線パスの端点を追加。

・Path Space Regularization
 パストレをもう一度考える
 DRDFをぼかして寄与をとれるようにする。
 反復ごとに本来のBSDFへ近づいていく=本質的にはPPMの半径縮減と同じ。
 ディフューズ面には適用しない。
 Regularized MLT綺麗。
 さらに +MEで綺麗。

・Multiplexed MLT
 PSSMLTでは1つの提案分布と採択・棄却を組み合わせて目標分布を達成する。
 BPT等で実現されるマッピング(=提案分布)があまりよくない→棄却が増える。
 PSS内の変異を加えてマッピングの変更も行う。

・最新手法は基本的にMIS and/or (PSS)MLTの理論を使っているイメージ
 ボリュームレンダリングに関しては今回触れなかった。 
MLT系はアニメーションに向いていない。画面がちらつく,動画向きじゃない。

 


23:15~
perim 「MCMC based rendreing techniques」
詳細は,http://www.slideshare.net/OtsuHisanari を参照。

難しいシーン グロッシーとか
なぜ難しい?

解決手法
 マルコフチェインモンテカルロ
 MCMCを用いることによってエネルギー分布に従う光路をサンプリングできる。

目的
 ある分布に従うようなマルコフ連鎖を作る

MLT
 状態空間:Path space
 光路を直接変更することで変異を行う。

Metropolis-Hasting法 
 採択確率を決める

状態空間
 一様乱数列
 写像により光路変換。
 複雑な関数よりも特徴を抜き出した関数をいくつかサンプリングした方が効率的では?ということ

(このあと以降は難しすぎて理解できなかったのでメモるのをやめた。詳細はスライドを参照してください)

 


おすすめライブラリ。

今日は,アプリ開発に便利なライブラリを紹介してみようと思います。

・AntTweakBar
ライセンス: zlib/libpng License
詳細:http://anttweakbar.sourceforge.net/doc/
 知人の方に教えてもらったGuiライブラリです。OpenGL, DirectXどちらでも使えるようになっているのが魅力です。

・DirectXSH
ライセンス:Microsoft Public License (MS-PL)
詳細:http://blogs.msdn.com/b/chuckw/archive/2012/07/28/spherical-harmonics-math.aspx
 球面調和関数系の演算をまとめたライブラリです。D3DXの時代にあったやつの代用とかしたい場合に使えそうです。

・DirectXTex
ライセンス:Microsoft Public License (MS-PL)
詳細:http://directxtex.codeplex.com/
 Direct3D11でテクスチャ読み込みをするのに便利です。

・DirectXTK
ライセンス:Microsoft Public License (MS-PL)
詳細:https://directxtk.codeplex.com/
 一通り便利そうなものが整っています。

・DXUT For Direct3D11
ライセンス:Microsoft Public License (MS-PL)
詳細:http://dxut.codeplex.com/
 D3D11でDXUTベースで開発したい場合はこちらを利用すると良いです。

・Effects11
ライセンス:Microsoft Public License (MS-PL)
詳細:https://fx11.codeplex.com/
 FXファイルを扱うためのライブラリです。

・freeglut
ライセンス:MIT License
詳細:http://freeglut.sourceforge.net/
 オリジナルのglutはもうメンテナンスされていないので,こちらを利用すると良いです。

・glew
ライセンス:Modified BSD License, MIT License
詳細:http://glew.sourceforge.net/
 言わずと知れたGLEWです。今OpenGLで開発するなら,必須といっても過言ではないでしょう。

・glfw
ライセンス:zlib/libpng License
詳細:http://www.glfw.org/
 glutがメンテナンスされていない関係で,自分が最近使うOpenGLのフレームワークです。デフォルトでフォント描画がないのが痛い所ですが,AntTweakBarと組み合わせて使うなら問題ないでしょう。

・lua
ライセンス:MIT License
詳細:http://www.lua.org/home.html
 luaスクリプトです。ゲーム開発に重宝すると思います。

・Squirrel
ライセンス:MIT License
詳細:http://www.squirrel-lang.org/
 Squirrelスクリプトです。ゲーム開発に重宝すると思います。

・TinyXML-2
ライセンス:zlib License
詳細:https://github.com/leethomason/tinyxml2
 XMLを取り扱うライブラリです。ツール周りの実装で役立つかと思います。

・stb
ライセンス:public domain
詳細:https://github.com/nothings/stb
  レイトレ合宿で教えもらった,1ファイルヘッダオンリーのライブラリ集です。

・eigen
ライセンス:MPL2 License
詳細:http://eigen.tuxfamily.org/index.php?title=Main_Page
 線形代数のライブラリです。自前で演算ライブラリを作るよりもこちらを使った方が良いと思います。

今日はレイトレ合宿2!!

今日はレイトレ合宿2!!のために河口湖カントリーコテージに来ています。
今年は,20人弱の参加で,先ほどみんなでBBQを行いました。
これからセミナーが行われるので,明日以降でレポートを行いたいと思います。

Bw5IpQ-CIAAcZp1

いよいよ明日からCEDEC 2014です。

いよいよ明日からCEDEC 2014ですね。
今年も残念ながら,自分は参加できそうにないです。どうにかならんですかね?
今年は,というか今年もグラフィックス関係のセッションは少ないようです。

そんなわけで,自分だったらこれ見たいな~というセッションを上げておきたいと思います。

9/2
・13:30 ~ “次世代のライティング“実用的速度で動作するボクセルコーントレースライティング解説
・14:50 ~ 「deep down」のグラフィックス表現の技術解説
・16:30 ~ PlayStation®4のGPGPUを活用した剛体シミュレーション最適化事例
・17:50 ~ Unity 5からその先の話

9/3
・11:20 ~ モンテカルロレイトレーシングの基礎からOpenCLによる実装まで(実装編)
・13:30 ~ アンリアル・エンジン4を技術者が活用するための最新ノウハウ
・14:50 ~ アンリアル・エンジン4でのコンテンツ制作の深~いお話
・16:30 ~ リアルタイムレンダリングにおけるPtex手法について

9/4
・11:20 ~ カメラ的に正しいフォトリアルグラフィック制作ワークフロー
・13:30 ~ Second Son Particle System Architecture (Second Son パーティクル・システム・アーキテクチャ)
・16:30 ~ 西川善司のゲーム開発マニアックス「グラフィックス編」2014

この中で特に聞いておきたいのは9/4のInfamousの話でしょうか。次はdeep downかなって思います。その次はVoxel Cone Tracing。残りのセッションは資料があればどうにかなりそうな気がするので,別に聞きに行かなくてもよいかなって気がしています。
今年も参加できないので,CEDECに行く方がいらっしゃいましたら,ぜひブログ等にて報告書いてほしいですね。