CEDEC2013 のグラフィックスやアニメーションの参加セッションのメモ

概要

  • CEDEC2013 の講演のうち, いくつかのグラフィックス系の講演の個人的なメモを下に書いてみました.
  • 下の文章については申し訳ないですが, 僕自身の理解が足りなかったり, あるいはまだ資料が公開されていないので間違っている可能性が十分あります.
  • その場合は CEDEC Digita Library などで公開される講演者の講演内容の方が正しいので, ご注意下さい.

感想

  • 個人的に特に良かったと思ったセッションは以下の 2 つです.
    • OpenSubdiv:オープンソースのRenderMan完全互換GPU対応サブディビジョンサーフェスライブラリ
    • "グローバルイルミネーションを高速化する時空間アップサンプリング"
      • 理由 : リアルタイム GI で難しいシャープなスペキュラ間接光を実現するために, 最適化の手法をうまく組み合わせていてとても勉強になりました.

OpenSubdiv: オープンソースの RenderMan 完全互換 GPU対応 サブディビジョンサーフェスライブラリ

  • この講演については, 今のところもう少し調査して別途ブログ記事を書く予定です.
  • 一番印象的だった内容は Pixar でのテッセレーションの使い方です.
  • Pixar の映画のキャラクターモデルのベースモデルの頂点数は意外と少ない(Toy Story のウッディは約2万ポリゴン以下)けど, それに対して多くのリグやデフォーマ(4000-5000個)を設定して頂点変位のアニメーションを計算し, その後にテッセーレションをかけてポリゴンを滑らかに再分割しているらしいです. こうすると, アーティストさんがアニメーション結果の簡易プレビューがしやすいという利点もあるそうです.
  • 上と同様の方法で GPU でリアルタイムにモデルをレンダリングする場合, 複雑で処理負荷が高い頂点シェーダを使ったとしても, それに対して少ないポリゴン数のモデルデータを与えて, 最後にテッセレーションしてハイポリゴンにするというアプローチができるのではないか ? という話がありました.

"グローバルイルミネーションを高速化する時空間アップサンプリング"

  • ボクセルコーントレーシングで 1 回バウンスのスペキュラ間接光(リフレクション)のうち, ラフネスが滑らかな場合(コーンが細い場合)のものをリアルタイムに計算するのが今回の主な狙いです.
  • しかしこの場合にはトレーシングするコーンが細くて高周波なので, きれいな結果を得るためにはより細かくて多いサンプリングが必要です.
  • 従って, 毎フレームにタップ位置をずらしたサンプリングを少しずつ行い(空間アップサンプリング), さらに古いフレームの結果をブレンドして再利用します(時間アップサンプリング).
  • また各アップサンプリング時のアーティファクトを避けるための重み関数などの実装の紹介していました.

"フルボディIKエンジンの作り方その2 (モーション補間編)"

  • デザイナーさんが作ったキャラクターのモーションを他のモーションへと切り替える際には滑らかに遷移しないと見た目が不自然になっていしまいます.
  • この問題を解決するためにあるモーションからあるモーションへと遷移するためのモーションを使って利用するという方法もありますが, その場合にはモーションの数が増えると遷移モーションが組み合わせで爆発的に増えるという問題が発生します.
  • そこで, モーション <-> ポーズ と ポーズ <-> ポーズ の遷移の場合についてのモーションを綺麗につなげるための補間のアニメーションをゲーム向けの計算コストでプロシージャルに求める方法について紹介していました.
  • 具体的にはモーションの遷移時の人型キャラクターの補間のモーションが不自然な状態(足が滑る, 足がめり込む, 急に加速するなど)にならないように, キャラクターの足の運びや重心位置の移動をお憂慮した上でフルボディ IK を使って, モーション遷移時の補間モーションをプロシージャル生成していました.
  • ただ今のところは補間モーションのプローシージャル生成は, モーションの種類の遷移ごとの泥臭いコードになりがちで, そのような補間モーションを自動で一般的に解く方法が難しそう, という見解でした.
  • 参考資料

実践クラスタードシェーディング

  • DICE Battlfield3 のタイルベースドのライトカリングのようにスクリーンスペースで 2 次元的にカリングするのではなく, 下図のようにカメラの視錐台の中で 3 次元的な空間単位でカリングする内容でした.

次世代機を見据えた物理ベースリフレクタンスモデルの設計

  • スペキュラ用の BRDF
    • マイクロファセットの分布関数 D(m) は GGX.
    • 幾何減衰率 G は GGX-Smith.
    • フレネルは Spherical Gaussian で近似. ( X : Schlik の近似を, Spherical Gaussian で近似)
  • ディフューズ用の BRDF
    • ランバートは使わない. マイクロファセットを考慮したディフューズシェーディングがしたい.
    • Oren-Nayer を改良して, 物理ベース BRDF の条件を満たすように改良する.
  • 最終的な BRDF は以下のようになった.


  • Ambient BRDF
    • IBL 用の環境マップの事前フィルタリング : フィルタ処理用のカーネルを Phong->GGX に変更.
    • Ambient BRDF : ALU 化したり, 積分計算はオフラインで計算してテクスチャに焼いて, テーブル参照する.

    • Diffuse SH 用の Ambient BRDF は式と AmbientBRDF の両方を使う.

    • Screen Space Local Reflection では AmbientBRDF を再利用する.


GPU 上でのvoxel構築手法について

  • 講義資料
  • 参考文献
    • An Accurate Method for Voxelizing Polygon Meshes[Huang et al. 98]
    • Fast Parallel Surface and Solid Voxelization on GPUs [Michael et al. 10]
    • Octree-Based Sparse Voxelization Using the GPU Hardware Rasterizer [Cyril et al. 11]

モンテカルロレイトレーシングの基礎から OpenCL による実装まで

  • 本に載っている内容のモンテカルロレイトレーシングを図を多めに使ってわかりやすく説明.
  • 残念ながら上の説明で時間切れになったので, OpenCL による実装については発表資料を参考にする必要がありそう.

"Compute Shader Magic 〜あなたの描画エンジンでコンピュートシェーダを活用するアイデア"

  • コンピュートシェーダによる GPU 用の描画の効率化のアイディアを紹介していました.
  • 具体的には スキニング, BlendShape, パーティクル, インスタンシング用のグラフィクスリソースをコンピュートシェーダで計算する最適化のアイディアなどについてです.
  • 最後にカリング付きインスタンシング・コンピュートシェーダによる描画のバッチングを提案していました.

西川善司の「CEDEC 2013」ゲーム開発マニアックス(グラフィックス編)

DIY で出来る! フォトリアリスティックレンダリング

  • フォトリアリスティックレンダリング用の既存の手法を日曜プログラミングで低コストでやってみよう, という内容.
    • (スペキュラの) 物理ベースレンダリング
    • 偏光板とカメラ, フラッシュを使ったアルベドテクスチャ撮影用のディフューズライティングとスペキュラライティングの分離
    • クロムボールや HDR Shop 1.0 を使った IBL 用の環境マップの作成
    • Voxel Cone Tracing

今回の CEDEC 2013 の講演のうち, 他のカンファレンスで似た講演があったもの