MENU閉じる

HEXA BLOG

研究・開発

HEXA BLOGその他研究・開発2009.6.24

リアルタイムフォトンマッピング

こんにちは!イワサキですわーい(嬉しい顔)
梅雨雨真っ只中だというのに暑い日も多いですねぇ(むしろ蒸し暑い?)
これから徐々に暑くなってくる季節です晴れ
前回の紹介は簡単なデモでしたので今回は少し先を見据えた技術デモを公開したいと思いますパンチ
夏も近いということで少しでも涼しい気分に浸ってもらうために今回のテーマは
台風台風
です。
リアルタイムでレンダリングする場合DirectXかOpenGLの
ハードウェアアクセラレーションの恩恵を受けて描画するわけですが、
質感」を出すにはどのようにしたらよいでしょうか。
普通に画面にポリゴンを出すだけでは物足りませんよね。
今回は「」に焦点を絞って紹介します。
皆さんが普段から目にしている「」とは一体どのような見え方をしていますか?
お風呂いい気分(温泉)とかで身近に触れているものですよね。
詳しく観察すると簡単に次のような要素があることに気がつきます。
ペンゆらゆら動く(液体)
ペン透明
ペン海のように深いと色が青っぽい
ペン水面下が屈折してゆがんで見える
ペン水面下に光がゆらゆら映り込んでいる
ペン水面がきらきら反射している
GPUのプログラマブルシェーダーで上記の特徴・質感を再現してみましょう。
今回の技術デモにはこれらを実現するために次のようなものを実装してみました。
ひらめきリアルタイムフォトンマッピング(Realtime photon mapping)
ひらめきレイキャストレンダリング(Ray-cast rendering)
ひらめきリアルタイムレイトレース(Realtime ray tracing)
ひらめき水面屈折による色収差(Chromatic aberration)
ひらめきHDRレンダリング(High dynamic range rendering)
ひらめき水の透明度(Measure the clarity of the water)
ひらめきカメラ絞り羽根による光の回折現象(Diffraction of light)
この中で今回の技術デモでの特筆すべき点は「フォトンマッピング」です。
Henrik Wann Jensen氏が提唱したフォトン(光子)を実際に飛ばして密度を測定して
レンダリングするという物理現象に沿ったレンダリングをしていることが特徴です。
また、構造が非常にシンプルで、並列化・分散実行にも適しています。
フォトンマッピング―実写に迫るコンピュータグラフィックス
Henrik Wann Jensen (著), 苗村 健 (翻訳)
出版社: オーム社 (2002/07)
ISBN-10: 4274079503
ISBN-13: 978-4274079504
2009-06-24_03.jpg
このレンダリング手法では集光模様(Caustics)を忠実に再現できます。
レイトレーシングだけではこの模様を出すことは難しいですが、フォトンマッピングを
併用することで美しい模様を描き出すことが可能です。
集光模様とは何だ?という人は下記ページの写真などを参照ください。
Caustics (wikipedia)
http://en.wikipedia.org/wiki/Caustic_(optics)
今回は処理方式を限定化して高速化しています。DirectX9世代のGPUで実現可能です。
使用しているレイの本数は約26万本です。
とてもCPUではリアルタイムでは捌ききれないデータ量ですが、GPUを用いると
この膨大なデータを非常に高速に生成することが可能です。
DirectX9世代ということは現行のXbox360やPlayStation3でも実現可能な技術です。
ゲーム用CGである以上は「高速(快適)であること」「見た目が楽しいこと」が大前提ですよネ。
又、より一層屈折感を出すために屈折色収差をシミュレートしています。
「色収差」とは赤~紫の光の波長によって屈折率が異なる現象です。
色収差(wikipedia)
http://ja.wikipedia.org/wiki/%E8%89%B2%E5%8F%8E%E5%B7%AE
【波長と屈折率の例】
2009-06-24_01.png2009-06-24_02.png
理科の教科書などでプリズムで光が七色に分解されている様子「分光現象」の写真を
見たことがある人も多いと思います。虹もこの色収差が影響しています。
デモでは屈折したときに虹色模様が出ていることが確認できます目
今回のデモではこの現象を意図的に強調して計算しています。
2009-06-24_07.jpg
安いレンズで写真撮影カメラすると写真中心から離れた周囲にこの虹色の色収差が強く出ます。
高級なレンズぴかぴか(新しい)はこの収差が少ないレンズが用いられたり、非球面レンズなどで収差補正が施されているということになります。
」ってでもあり、粒子でもあり、不思議ですよね。
技術デモは下記よりダウンロード可能です。


◎動作可能な環境
GeForce 6800シリーズ以降
Radeon X1000シリーズ以降
基本的にはシェーダーモデル3.0以降で動作します。
特殊なレンダリング手法を用いていますのでドライバの不具合などで一部動作しない環境があるかもしれません。
なるべく最新のデバイスドライバで実行してください。
2009-06-24_04.jpg
Download
HexaWater.zip (約4.17MB)
【動作確認済ハードウェア】
nVIDIA GeForce9800GT
AMD RadeonHD4350
【操作方法】
画面左クリック&ドラッグ    視点を回転
    雫を滴下
    水面の挙動をリセット
    大波を起こす
2009-06-24_05.jpg2009-06-24_06.jpg


実行できない方のためにキャプチャした動画を用意しました。
HD解像度でアップロードしていますのでPC環境のスペックによって選択してください。
リンク先でフルサイズで閲覧できます。


今回の技術デモは見た目のインパクトを出すためにビジュアル面を重視しました。
レンダリング品質を大幅に向上させるためにリアルタイムレイトレースも行なっているため
ピクセルシェーダーが大変ヘビーな実装になっています。
なるべく演算器の多い上位機種での実行をお勧めします。
今後はこのような技法がゲームCGの世界にやってきそうです!
池の底や照り返しにコースティクスが発生していることと、光の回折現象などに
注目してみてください。これだけでリアリティが増していることがわかります。
この技術デモはまだ最適化・高速化の余地はたくさん残っています。
しかもまだまだ動作が重いです。
しかし、これを実用範囲まで高速化することは可能です手(チョキ)
実はこの中で一番重たい処理は水面の描画です。
フォトンマッピングは非常に軽量な処理となっています。
実際にゲーム制作に導入する際にはもっと高速に動作させる必要がありますグッド(上向き矢印)
ここもプログラマーの腕の見せ所ですよネパンチ
ヘキサドライブでは自社内製ゲームエンジン「ヘキサエンジン」を開発しています。
最新の技術をどんどんと取り入れて共にゲーム作品を作っていきませんか?目
グラフィクスだけでなく、物理、AI、サウンドなど多岐にわたります。
企画実現のための表現力の可能性をゲームを作りながら探っていきましょう!
新卒・中途ともにご応募お待ちしています。
皆さんに会えることを心待ちにしています手(パー)ぴかぴか(新しい)ぴかぴか(新しい)ぴかぴか(新しい)

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE