スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

CEDEC2008 ~1日目~ 

ゲーム開発者のためのカンファレンスである、CEDEC2008に行ってきました。
まだ2年目なので、本当は遠慮しようかと思ってたのですが、
たまたまチームの人が多忙で空いたので、入れてもらいました。
レポートですが、用語をかき集めた感漂いますが、その通りです。
GPU Gemsとかじゃないと載ってないレベルの用語とか一杯出てきます。
でも、何とか纏めてみたので、勘違いとかあったらコメント指摘してください_no

さて1日目はImagire Day、シェーダー関連が色々あります。
Imageあたりから来た言葉かと思ってたら、イマギレさんが出てるらしい('A
グラフィック系講習の人多すぎ、下の階行って、また上がって更に上の階まで列が。。。

受けた講習ごとに纏めようと思いますが、最初に思ったこと。
・やっぱり1時間20分は短いネー
・中級のレベル高すぎ、ある程度しか理解できなかった_no
・宣伝多くない?w

そんな感じで、まとめレポに入ります。


【 Imagire Day(1) レンダリスト養成講座 2.0 】
> トピック1:Real-time, All-frequency Shadows in Dynamic Scenes
SIGGRAPH 2008で出された論文の解説的なトピック。
何となく要約すると、
「今までのソフトシャドウは全ボケだけど、ボケとくっきり陰を分けられますよ。
 更に環境マップからシャドウ計算できますよ。」

ちなみに既存の手法ではSHEXPやWaveletを使った物があるとか。
1.環境マップを複数の面光源に分割。(明るい部分からフィルタサイズを計算)
2.各面光源ごとにライティング計算。
という流れ、予想される事ですが、やっぱり重いらしいです。

技術としては、Convolution Shadowmapという物の応用らしい。
ここで、影周りの技術を辿っていくセッションがあった。
・通常のシャドウマップ(くっきり影)があり、計算式ができる。
・上の影計算は0~1なので、それに平均フィルタをかけたPCF(ソフトシャドウ)
・PCFはシャドウテスト→フィルタリングの順を変えられない。
 それを逆に出来るようにしたのがConvolution Shadowmap。
 フィルタリング後にmipmapを作る事ができ、影のエイリアシング問題を軽減できる。

※何で今まで逆にできなかったのよ?
 シャドウ用の関数が2変数・不連続関数のため0か1になってしまう。
 上記手法はsinの集合計算で近似させているらしい。

で、今回の講義の新手法は、Convolution Shadowmapのフィルタ改良?
従来だとフィルタサイズが固定だが、新手法では自動計算によりフィルタサイズが可変になってる。
より詳しく知りたい人はSIGGRAPHとかの論文を読んでください。

[ 個人的まとめ ]
・環境マップによるソフトシャドウは可能、しかし実用的には重すぎて難しい。
・ライトが1つなら大丈夫と言っていた、それだったら平行光源でいいのでは。。。
・現実系のゲームじゃないと美を求めすぎぐらいの表現、他に処理使って欲しいw
 ただ、環境マップから生成は面白いし、実用化されたらちょっと感動するかも?


> トピック2:光学に基づいたボケ味の表現
簡単に言うと、
「実際のカメラのピントが合わなかった時の問題を再現して、現実っぽく見せる」
被写界深度との組み合わせで説明されていました。
ちなみに、スキャッターベースとギャザーベースの被写界深度があるらしく、
今回のはボケの形状をいじりやすいスキャッターベースを使うとか。

・実際のレンズには収差(全ての光が焦点に集まらない)がある。
 - 球面収差
  通常のレンズは球面なため、どこを通るかで若干焦点がずれる。
  そのため、場所によってぼけたりしてしまう。
 - 軸上色収差
  色の波長によって屈折率が変わり、ずれが生じる。
  そのため、輪郭付近で色が発生してしまう。

ちなみに、被写体の後方に出来る「後ボケ」と、被写体の前に出来る「前ボケ」で、
ボケの形状や、発生する色が変化します。

ダブレットレンズとかで補正するらしいですが、
それを使っても完全に補正しきれず、ちょっと珍しい形状(波形みたいな)が生まれます。
これをむしろ味としてエフェクトに使っていたのが、今回の講演。

レンズからレイキャストした情報をテクスチャに格納し、
収差用の関数(レンズのが分かればそれ)を適用する。
ダブレットレンズとかも、同じようにやるみたいです、詳細はそれほど語られませんでした。

[ まとめ ]
・あらゆるボケ味をパラメータ変えるだけで表現できる。
・シーンを限定する事で、テクスチャは事前に生成しておける。
・実際の写真はもっとほこりとかの汚れがある。
・口径蝕や円形以外のしぼりも作ると更に表現の幅が広がる。

・個人的にデモがすごい綺麗だったので、イルミネーション系に使うのは有りだと思う。
 リアルタイムにもできるらしいけど、さすがに重そうなので、イベントシーンとか?



【 Imagire Day(3) ゲーム開発のためのプロシージャル技術の応用 】
プロシージャル技術とは、プログラムによってリソースを自動で生成する技術。
最近利用しているエンジンでは、CryEngine2.0やfrostbiteがある。
これらの技術を使う事で、ゲームデザインその物が変わる、というお話。

用いるパターンとしては、
レベルデザイン(モデル)、AI、ユーザーアクション、ゲームシステムの4つと定義されました。

・レベルデザイン
法則性を持ったモデルをプログラムで自動生成する。
この場合の法則は、暗黙的な法則(物理法則など)がプログラム化される事が多い。
例えば、木のモデルを、葉の硬さなどをパラメータで与えてやる事で自動生成したりする。

・AI
あらゆる状態に対応できる物を作るのが理想ではあるが、状態空間が近年大きくなっている。
そのため、予め全てを作るのではなく、起こった状態に対して行動を生成するAIが求められるとの事。

・ユーザーアクション
ユーザーのする事ができる行為が定義される空間と言っていました。
プロシージャルにすることで、ユーザーの可能性空間を広げる事ができる、との事。
最近の物だとSporeというゲームが良く出来ていると紹介されています。
モデリング→テクスチャリング→モーション付けを簡易化していて、
ユーザーにとっては少ない労力で高度で大きなコンテンツを作ってる感覚になる。

・ゲームシステム
例えとしては、遺伝的アルゴリズムが挙げられた。
集団を一定の方向に進化させるための物で、混ぜ合わせたりする。
これについては、2日目の森川さんの講義を受けたので、そちらで纏める事とします。

これによって、ユーザーを解析しながらゲームを作っていく事が可能になるとの事。

[ まとめ ]
・どんどんリアルになって広大な世界を作る必要が出てきている。
 プロシージャル化する事で、その世界を現実的なコストで作れる可能性がある。
・近年CPUも高速化しているので、そろそろ本格的に使える頃かもしれない。
・プログラムも複雑な物となるので、コストの比較が必要。
・ありえない規模になりそうであったら、一度検討してみるのがいいんじゃない?というお話。



【 今後のインテル Visual Computingの方向性 】
正直、ちょっと期待外れだったこの講義。
そんなに特筆すべき事がなかったので、さらっと行きます。

[ マルチコアアーキテクチャにおける、DirectXを使用するアプリケーションの最適化 ]
これにすごく期待してたんですが、大した事言われませんでした。
グラフィックスには未だにCPUパワーがかなり必要であるので、
アプリケーション、DirectX API実行とオーバーヘッド、ビデオカードドライバの全体を解析する必要がある。
解析手法として、性能向上のゴール地点を先に用意するのが肝要との事。

マルチコアの物に対しては、どれだけ並列化できるかが性能向上率に繋がる。
この辺が複雑になってくるので、定期的に性能解析を行う必要がある。
・CPU解析ツール
 - VTuneアナライザー : DirectX SDKを入れるとシンボル解析が可能になる。
 - Intel スレッドプロファイラー
 - Microsoft PIX for Windows
・GPU解析ツール
 - Microsoft PIX for Windows
 - Perfhud
 - PerfStudio
 - Intel グラフィックスパフォーマンスアナライザ

後は、DrawPrimitiveは纏める事。
GPUの呼び出しを取得して何かやるなら、その部分は1つのスレッドでやること。
任意のCPUにスレッドを貼り付けるような事は禁止。
リソースの更新は、スレッドの最初か最後にまとめて行う事。

とかそんな感じの講義でした。

もう一個大きなトピックで、Many-CoreハードウェアのLarrabeeが発表されましたが、
こちらはSIGGRAPHで既にやった内容のようなので割愛します。
ざっと言うと、CPUとGPUを纏められて、レンダリングパイプラインは全てプログラミングできます。
みたいな感じでしょうか。

[ Larrabeeまとめ ]
・CPUの汎用性&GPUの並列性。
・GPUの制限から解き放つ事ができる。
・(コアを増やして行った時に)高効率でスケールするソフトウェアレンダラー。
・様々なアプリケーションへの対応。

[ まとめ ]
・これからよりマルチコア、メニーコアになって行く。
・ツールとかを使って総合的に解析しながら、効率の良い最適化をしないといけない。
・CPUとGPUが統合される日が来るかも・・・?
スポンサーサイト

[ 2008/09/10 00:12 ] 通常日記 | TB(0) | CM(0)
コメントの投稿














管理者にだけ表示を許可する
プロフィール

poro

  • Author:poro
  • プログラマやってる人です。
    絵とかも好きだったり、
    何か作りたいとか最近考えているらしい。
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。