お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2009/03/27 20:41

ニュース

[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る

テッセレーションによるハイポリゴンのモデル表示例
画像集#002のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
 PCゲーム業界の今後を占ううえで,避けて通れないDirectX 11(Direct3D 11)。GDC09では,MicrosoftやAMDが,いくつか関連するセッションを用意していたが,本稿では,両社のセッションから,テッセレーションに関する部分をまとめてみたいと思う。題材となるのは,北米時間2009年3月25日に行われた,Microsoftの「Direct3D 11 Tessellation Deep Drive」,そして26日に開催された,AMDの「Your Game Needs Direct3D 11,Get Started Now!」だ。


DirectX 11のテッセレーションデモを見る


 さて,DirectX 11のテッセレーション(Tessellation,あるポリゴン面を,複数のポリゴン面へと細かく分割すること)用SDK(Software Development Kit,ソフトウェア開発キット)では,「Cutmull-Clark」分割アルゴリズムが実装されているとのことだ。ほかのアルゴリズムを利用することもできるようだが,Cutmull-Clarkは,さまざまなツールで採用されていて,事実上の業界標準といえるため,これを使うことがSDKでは想定されている,といった感じか。

画像集#003のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#004のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#005のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
Cutmull-Clarkの分割アルゴリズム
画像集#006のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#007のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る


画像集#008のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
 ポリゴン面の細分割ということで,なんとなく,辺を半分ずつにしていくのかなと漠然と思っていたのだが,デモを見る限り,それは「Pow2 Partitioning」,つまり2のn乗で分割が指定されているときのみ。さらにいえば,実際の分割レベルは,実数値で指定されているようにも見える。以下,写真を何枚か撮ってみたので,拡大しながらチェックしてみてほしい。

2のn乗指定の場合。設定値は左から4,16,64
画像集#009のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#010のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#011のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
整数指定の場合。設定値は左から2,3,13
画像集#012のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#013のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#014のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
実数指定の場合。設定値は左から1.88,15.62,24.75
画像集#015のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#016のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#017のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る

 Cutmull-Clarkのアルゴリズムのままでは,設定値ごとに4倍(2×2)で頂点数が増えていくのだが,このデモでは,もっと段階的に増やせるよう,「Charles Loop」と「Scott Schaefer」による双三次近似が適用されているという。
 ちょっと難しいので,以下,流してもらってもかまわない前提で,突っ込んだ説明は行わないが,与えられた四角形の基本パッチに対し(※Loop-Schaeferの近似は現状では四角形にしか使えないらしい),四角形の4辺それぞれで分割数が指定されていることも分かる。辺ごとで独立して,ほとんど無段階に分割数を増やせるものが,今回のデモには実装されているようだ。

「左辺を23.16個に割り,上と右は1個,下側は11.21個に分割」するデモも行われた
画像集#018のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
 LODモデルの切り換えのように,ある距離でいきなりボコっと変形するようなこともなく,ぬるぬると無段階で変化させることができ,ちょっと負荷が高いときには分割量を微妙に少なくしたりなど,応用範囲の非常に広いものになっている。
 実際問題として,左辺を23.16個に割り,上と右は1個,下側は11.21個に分割するといわれても想像しにくいのだが,そんなこともできるらしい。

 また,分割モードもいろいろあるので,これだけでもかなり多彩な面分割が可能になる。

画像集#019のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#020のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#021のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る

現状,リアルタイム分割は実用的な速度で動かない。そのため……(※下の写真に続く)
画像集#022のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
 ところで,現状ではDirectX 11対応ハードウェアが存在しないため,リファレンスラスタライザで実行するしかない。そのため,分割数2でフレームレートは1fpsを下回るレベルになっており,カクカク,どころの騒ぎではなかったりする。
 ちなみに,Direct3D 11におけるテッセレーションの最大レベルは64。1辺を最大64個に分割できる仕様になっているようで,DirectX 11世代のハードウェアに要求される演算能力はとてつもないものになりそうだ。

デモでは,Autodeskの「Maya」上で処理して形状を確認したりしていた
画像集#023のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る 画像集#024のサムネイル/[GDC 2009#23]こんな割れ方をしていたなんて! DirectX 11テッセレーションの動作を探る
  • 関連タイトル:

    DirectX

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月17日〜12月18日