ムービー
Rubyが雪原を駆ける「Whiteout」高解像度ムービー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万ポリゴンに倍増されている。
実際,Ruby3までは顔面上の25か所のアニメーションコントロールポイントが設けられていたものの,一度には4か所の制御しか行えていなかった。これに対してRuby4では,128か所のアニメーションポイントを同時に制御できるようになっている。これには,ATI Radeon HD 2000シリーズになってパフォーマンスが向上したことはもちろんだが,DirectX 10/SM4.0世代となって,定数レジスタの数が300倍近くに拡大されたことも大きく影響しているという。
●歴代Rubyデモの仕様比較
下に示したスライドは,「Ruby 1: DoubleCross」(以下Ruby1)とRuby3,Ruby4を比較したものだ(※Ruby 2は省略されている)。
この点について,ごく一部の報道関係者向けにチュニジアで開催された事前説明会で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が滑走する演出上の都合もあるため,デモで用いられた雪山のセットは,オフラインでプロシージャル生成された固定的なものになっているという。
ハイトマップはバンプマッピングや視差マッピング,ディスプレースメントマッピングなどの実現にもよく用いられる,濃淡で凹凸を表すテクスチャ。具体的にいうと「黒くなればなるほど低く,白くなればなるほど高い」イメージになる。
このハイトマップを基に,大ざっぱなポリゴンモデルと,細かなディテールを再現するための法線マップ(のちにバンプマッピングで利用)を生成する。この部分も技術的にはリアルタイム生成できるが,Ruby4デモでは先述のとおり,オフライン生成されている。
雪が積もるアルゴリズムは,意外に単純。ハイトマップの情報があるから斜面の傾斜(角度)が分かる。そこで,「急角度の斜面には確率的に積もりにくい」とし,「ひとたび積もると雪はくっつきやすいのでそこから雪の“積もり”が成長することもある」といったようなアルゴリズムを実装して,雪のテクスチャをピクセルシェーダを駆使してプロシージャル生成するのである。
●そのほか,小技の見どころ
一つはRubyが着ているコートにあるフードの,ファー部分のアニメーションだ。
これは用意されたアニメーションデータを再生しているのではなく,風を受けてなびく動きや,Rubyの首の動きに追従しての慣性の法則に則った挙動を算出してGPU側でアニメーションを生成している。この動的なファーアニメーションについては,「ATI Radeon 8500」シリーズ用に公開された狩野智英氏による動的ファーのデモが分かりやすいので,そちらを参照してほしい。
■Ruby4の実行ファイルは
■ATI開発者サイトに公開予定
現在公開されているRuby4のデモは,あくまでムービーとして出力されたものだけ。実際にATI Radeon HD 2000シリーズで実行できるEXEファイルは2007年5月14日時点でもまだ公開されていない。
しかし,近い将来,AMD(のATIブランド)の開発者向けサイトにあるデモページに公開される予定だ。
ジオメトリシェーダを活用したものになるのでWindows Vista専用になるはず。ATI Radeon HD 2000シリーズのユーザーとなった暁には,このデモをぜひとも実際に実行してみてもらいたい。(トライゼット 西川善司)
- 関連タイトル:
ATI Radeon HD 2900
- 関連タイトル:
ATI Radeon HD 2600
- 関連タイトル:
ATI Radeon HD 2400
- この記事のURL:
(C)2007 Advanced Micro Devices, Inc.
(C)2007 Advanced Micro Devices, Inc.
(C)2007 Advanced Micro Devices, Inc.