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

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

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

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

LINEで4Gamerアカウントを登録
Rubyが雪原を駆ける「Whiteout」高解像度ムービーUp,解説も
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2007/05/14 13:01

ムービー

Rubyが雪原を駆ける「Whiteout」高解像度ムービーUp,解説も

 ATI Radeonファミリーのイメージキャラクターである「Ruby」を使ったリアルタイムデモ「Ruby 4: Whiteout」(以下Ruby4)。「ATI Radeon HD 2000」のアピール用となる同デモから作られた高解像度ムービーが,AMDから公開された。同社が提供しているのはH.264版だが,これをWMV形式に変換し,下に示したとおり4GamerにUpしている。
 今回は,オリジナルと同じ1280×720ドット版,そして低解像度に変換した856×480ドット版の二つを用意したので,手持ちのPCスペックに合ったほうを選択してダウンロードしてほしい。およその目安だが,前者の再生には最低限,「Pentium 4/3GHz」以上のCPUと「ATI Radeon 9600」もしくは「GeForce FX 5600」以上のGPU(グラフィックスチップ)が必要になるはずだ。

1280×720ドット版(89.2MB/93,546,723バイト)
856×480ドット版(46.1MB/48,383,639バイト)
(いずれも3分1秒:WMV)

■Rubyの新作は
■1フレーム当たり200万ポリゴン!


 Rubyのデモは,デモと同じ世代におけるATI Radeon(かつてはRADEON)のハイエンドモデルを比較的ぜいたくに使うことが慣わしとなっており,「ATI Radeon X1900」シリーズのデモとして発表された前作「Ruby 3: The Assassin」(以下Ruby3)と比較すると,そのリソース予算の拡大がすさまじい。

 例えば,Ruby3まで8万ポリゴンだったRubyモデルは,Ruby4で20万ポリゴンと,3倍以上の精度になった。
 そして,ATI Radeon HD 2000シリーズが統合型シェーダアーキテクチャを採用したことにより,頂点スループットが頂点シェーダユニットの数に縛られなくなり,結果としてシーン全体のポリゴン予算を劇的に増加させることに成功した。具体的には,Ruby3の1シーン全体で100万ポリゴンだったのが,Ruby4ではなんと200万ポリゴンに倍増されている。



 また,従来のRuby1〜3デモでは,どちらかといえばボディアクション主体のシーケンスで綴られており,顔のアニメーションがクローズアップされるシーンは少なかった。その点Ruby4では,序盤に脇役キャラとの会話シーンが挿入されており――かなり限定的ではあるものの――リップシンクを含む表情アニメーションも見て取れる。

 実際,Ruby3までは顔面上の25か所のアニメーションコントロールポイントが設けられていたものの,一度には4か所の制御しか行えていなかった。これに対してRuby4では,128か所のアニメーションポイントを同時に制御できるようになっている。これには,ATI Radeon HD 2000シリーズになってパフォーマンスが向上したことはもちろんだが,DirectX 10/SM4.0世代となって,定数レジスタの数が300倍近くに拡大されたことも大きく影響しているという。

これまでよりもRuby自身のアップのシーンが増え,表情アニメーションの豊かさがアピールされている


●歴代Rubyデモの仕様比較
 下に示したスライドは,「Ruby 1: DoubleCross」(以下Ruby1)とRuby3,Ruby4を比較したものだ(※Ruby 2は省略されている)。

ATI Radeon X800用だったRuby1とATI Radeon X1x00用のRuby3,そしてRuby4の仕様比較


Callan McInally氏(3DARG Manager, AMD Graphics Product Group, AMD)
 Ruby1からRuby3でシェーダプログラム数(No. of Pixel Shaders)が3倍以上の316に増えたのに対して,Ruby3→Ruby4で逆に210へと減少していることに疑問を抱いた人がいるかもしれない。
 この点について,ごく一部の報道関係者向けにチュニジアで開催された事前説明会でRuby4に関する解説を行ったAMDのCallan McInally氏は「ATI Radeon HD 2000シリーズ――DirectX 10/SM4.0世代となって,動的分岐制御つきで長いシェーダプログラムを現実的に動かせるようになったためだ」と説明している。

 DirectX 9/SM2.0〜3.0のGPUでは,動的分岐制御を活用するとパフォーマンス低下が無視できなかった。そのため,例えばだが,そのシーンにおける光源の数が異なった場合,「光源の数ごとにピクセルシェーダプログラムを個別に用意するというような」まどろっこしいテクニックを用いざるを得なかったのである。
 ところが,DirectX 10/SM4.0世代のATI Radeon HD 2000シリーズでは,動的分岐制御を駆使してもかなり高いパフォーマンスが得られる。よって,そうした光源の数ごとに個別に分けたシェーダプログラムを一つにまとめられるようになったのだ。

 その証拠に,スライドにあるピクセルシェーダプログラムの平均長(Avg. Pixel Shader Length)は74から142と倍近くになっているのが分かるだろう。
 さらに興味深いのが,スライド最下段で示されている,シェーダプログラムに含まれる演算命令(ALU)とテクスチャ命令(Tex)の比率(ALU:Tex Ratio)だ。最新世代では,より複雑な陰影処理や高度な反射モデルを実装しているために,演算命令の含有率が必然的に激増したのである。

●プロシージャル生成された雪山
 Ruby4において印象的なのは背景の雪山だ。この雪山はデザイナーが制作したものではなく,コンピュータによってプロシージャル生成(算術合成)されたものになる。
 技術的にはリアルタイム生成することも可能だが,このデモではRubyが滑走する演出上の都合もあるため,デモで用いられた雪山のセットは,オフラインでプロシージャル生成された固定的なものになっているという。



フラクタル図形として生成されたハイトマップ。ちょうど衛星写真のようなイメージだ
 雪山の凹凸,つまり谷や頂は,マンデルブロー集合を応用したフラクタル図形生成によって生成されている。16bitテクスチャに対して,ハイトマップの形式でフラクタル図形を生成しているのだ。
 ハイトマップはバンプマッピングや視差マッピング,ディスプレースメントマッピングなどの実現にもよく用いられる,濃淡で凹凸を表すテクスチャ。具体的にいうと「黒くなればなるほど低く,白くなればなるほど高い」イメージになる。

 このハイトマップを基に,大ざっぱなポリゴンモデルと,細かなディテールを再現するための法線マップ(のちにバンプマッピングで利用)を生成する。この部分も技術的にはリアルタイム生成できるが,Ruby4デモでは先述のとおり,オフライン生成されている。

左:先ほどのハイトマップから雪山のポリゴンモデルを生成
右:ディテール部は法線マップとして生成。雪山の細かい凹凸は法線マップを応用したバンプマッピングで表現しているわけだ


ただの岩山。これに対して雪テクスチャをプロシージャル生成する
 このままではただの岩肌の山なので,雪を積もらせる必要があるのだが,この雪の生成もプロシージャル生成の手法が用いられている。この部分は,オフラインではなく,リアルタイムシェーダの形で実装されており,実際にRuby4のデモが公開されたときにはその“積もり具合”をユーザーが自在にいじれるようになるはずだ。

 雪が積もるアルゴリズムは,意外に単純。ハイトマップの情報があるから斜面の傾斜(角度)が分かる。そこで,「急角度の斜面には確率的に積もりにくい」とし,「ひとたび積もると雪はくっつきやすいのでそこから雪の“積もり”が成長することもある」といったようなアルゴリズムを実装して,雪のテクスチャをピクセルシェーダを駆使してプロシージャル生成するのである。

プロシージャル生成される雪。左はほどほどに,右は完全に積もらせた場合の例だ


●そのほか,小技の見どころ
動的ファーのデモ
 このほかにも小技的なテクニックがいくつも用いられているが,トピックとなるものをかいつまんで紹介しておこう。
 一つはRubyが着ているコートにあるフードの,ファー部分のアニメーションだ。

 これは用意されたアニメーションデータを再生しているのではなく,風を受けてなびく動きや,Rubyの首の動きに追従しての慣性の法則に則った挙動を算出してGPU側でアニメーションを生成している。この動的なファーアニメーションについては,「ATI Radeon 8500」シリーズ用に公開された狩野智英氏による動的ファーのデモが分かりやすいので,そちらを参照してほしい。

ファーシェーダは一般的な多層シェル方式を採用しているように見えるが,この積層数はスゴい。シェルポリゴン自体はジオメトリシェーダを活用して生成していると思われる


 Rubyがスノーボードで滑走することで巻き上げられる雪煙のパーティクルは,ジオメトリシェーダによってプロシージャル生成されている。最近流行のソフトパーティクル(=パーティクルエッジを消すテクニック。詳しくは筆者の連載バックナンバーを参照のこと),パーティクルに対する疑似ライティングのテクニックも応用されている。

雪煙のパーティクルもジオメトリシェーダによるプロシージャル生成


■Ruby4の実行ファイルは
■ATI開発者サイトに公開予定


 現在公開されているRuby4のデモは,あくまでムービーとして出力されたものだけ。実際にATI Radeon HD 2000シリーズで実行できるEXEファイルは2007年5月14日時点でもまだ公開されていない。
 しかし,近い将来,AMD(のATIブランド)の開発者向けサイトにあるデモページに公開される予定だ。

 ジオメトリシェーダを活用したものになるのでWindows Vista専用になるはず。ATI Radeon HD 2000シリーズのユーザーとなった暁には,このデモをぜひとも実際に実行してみてもらいたい。(トライゼット 西川善司)

Ruby4はWindows Vista専用になる?
  • 関連タイトル:

    ATI Radeon HD 2900

  • 関連タイトル:

    ATI Radeon HD 2600

  • 関連タイトル:

    ATI Radeon HD 2400

  • この記事のURL:

キーワード

下線
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月05日〜11月06日