公開カイオウ、ヒョウが登場。コンチェルト」カワイイ+“戦闘の楽しさ”に焦点。理由は「さらなるクオリティ向上のため」。冬」インタビューテーマは「コミュニケーション」。Nua]」ダウンロード版の発売が決定。期間限定無料追加パックを配信WIN「ファイターズクラブ」本日アップデートレベルキャップを30まで開放。ゆるかわロボット登場のロボット生産アプリiOS「バーコードフットボーラー」事前登録開始3兆通りの選手をバーコードで生成。“ビビッド・ハート”と“シンデレラ・ハート”。f」の楽曲やカスタマイズアイテムを配信!「ラグナロクオンライン」11月28日「大規模バランスアップデート」実装スキルやモンスターの調整を一新。クリードIII」Windows版を12月21日に発売ダウンロード版も同日発売。「イース」シリーズとコラボレーション。360用のGPUの詳細な技術ブリーフィングを行なった。ATIブースでは、最近のATIイメージキャラクタRUBYにそっくりなコスプレモデルがお出迎え。360試作機を使ってのリアルタイムデモを披露デモの内容は当然、RUBYの新作ムービークリップだ単なる数値スペックの羅列でしかなかった配付資料とは異なった、かなり詳細な情報が開示されたのでレポートしたい。360-GPUの開発経緯~ボトルネックのないGPUを創り出す簡単な前置きがあったのでまずはここから軽く整理しておこう。360-GPUのような一般名で呼ばれることになるのだそうだ。Headroom以上の4点だったという。抽象的でわかりにくいと思うので簡単に解説しておこう。Feldstein氏。360-GPU専用設計だ。eDRAM機能などPC用GPUとは異なる専用設計が多い。Powerは絶対的な性能を意味しており、それこそ競合機のPS3に負けないだけのパフォーマンスを獲得できる設計を目指すという意味になる。Balanceはボトルネックの排除を指している。様々なゲームが動作させられるゲーム機において、GPUにかかる負荷はタイトルごとに、あるいはシーンごとによって異なる。常に最大パフォーマンスを得るためには、グラフィックス処理を進めていく中でボトルネックがあっては困るのだ。これを検知して自動的に負荷を軽減できる仕組みがあればこれは素晴らしいことだ。Flexibilityは柔軟性......すなわちプログラマビリティや機能の多様性を意味している。360-GPUではその先にあるものを目指したという。Headroomは性能に余力があることを指している。ゲーム機は登場後、数年は、そのアーキテクチャが固定化されるために、性能が十分でないと、登場してくるゲームの根本設計に制限を与えてしまうことになる。GeForceには見られなかった独創的なアーキテクチャデザインであった。360-GPUアーキテクチャのパイプラインは図のようになる。みて驚くと思われるのが、プログラマブルシェーダに、頂点シェーダとピクセルシェーダという区分がないということ。汎用の強力なプログラマブルシェーダユニットが16基×3ブロック=48個あり、これを今実行しているグラフィックス処理における負荷状況に応じて、これらを任意に頂点処理とピクセル処理に振り分ける仕組みをもっているのだ。ここからは各ブロック別に解説を行なっていきたいと思う。Processorメモリから描画コマンド(描画リスト)を取り出しデコードするブロックだ。Grouper描画コマンドから頂点データを取り出し、これをどう処理していくかを計画するブロック。頂点データはここに来て、頂点シェーダにて頂点単位の光源処理や座標変換処理を行なう必要が出てくる。ここでSequencerを介して48個(16×3)あるシェーダアレイのうちどれかを「プログラマブル頂点シェーダ」として起用する。頂点キャッシュが効きやすいように、複数の頂点を適宜ピックアップして1グループとしてSequencerに発行する。このため、シェーダアレイから、いくつのシェーダリソースが「プログラマブル頂点シェーダ」として起用されるかは可変。Assembly透視変換(視点から見た情景を創り出すこと)してできあがったポリゴンで創られたシーンを画面上のピクセルに割り当てていく操作。いわゆるこれまでのGPUでいうところの「ラスタライザ」だ。この部分は完全に機能が固定されたロジックでプログラマビリティはない。Converterピクセル単位に分割された仕事を、Sequencerを介して48個あるシェーダのうちどれかを「プログラマブルピクセルシェーダ」として起用する。●SequencerSequencerは、大局的に見れば、48個あるプログラマブルシェーダリソースをプログラマブル頂点シェーダに割り振るのか、プログラマブルピクセルシェーダに割り振るのかを制御する部分というイメージになる。Feldstein氏の説明では、Sequencer自体がプロセッサのようなイメージで、ここでシェーダプログラム自体を実行しているとのこと。ここでは箱1つの図柄だが、実際には相当複雑かつ大規模なロジックになっていると思われる。命令セットは頂点シェーダとピクセルシェーダの命令セットを統合しており、プログラム実行には高度な分岐予測機構も組み込まれているという。Element)に優るとも劣らないレベルだと思われる。Pipe16基単位で3ブロック、合計で48基のシェーダユニット。実体としては浮動小数点実数(FP)で構成されるベクトル(SIMD)演算器というイメージだ。4要素のベクトル演算(積和算)とスカラFP演算(1要素FP)を同時に1サイクル(クロック)で行なうことができる。360-GPUは500MHz駆動されるので、ピーク性能はシェーダだけで432*500MHz=216GFLOPSとなる。実は、このシェーダ部分は仮想化がなされており、Sequencerからは64個のシェーダがあるように見える。64スレッドのシェーダ処理は、適宜48個のシェーダにて時分割的に行なわれる。Pipeはビデオメモリ上に配置されたテクスチャマップからテクセルデータ(テクスチャを構成している画素のこと)を取り出す役割を担う。4基しかないのは少なく思えるかもしれない。テクスチャ読み出しとはメモリの読み出しであり、プロセッササイクルと比較すればメモリの読み出しには結構な時間が掛かる。Pipeを増やしてもメモリの速度が十分でなければ意味がない。360の場合は22.4GB/sec~とのベストバランスを考えてこの構成となったようだ。Cache局所的な頂点データの取り出しを高速化する仕組み。Interp.プログラマブルシェーダ3.0仕様では2.0仕様に対して頂点シェーダからの出力として「2D座標系でのXY画面座標」や「面の向き」などの情報が追加された。Interpolatorの略で、頂点シェーダからの出力に対し、各ピクセルシェーダに渡す値として補間処理を行うユニットになる。ポリゴンはピクセルに分解されて最終的にレンダリングパスへと進む。頂点シェーダは必然的に複数のピクセル処理を生み出す。この際に、それぞれのピクセルシェーダへ受け渡す値を作り出しているのがこのブロックになる。360-GPUのような統合型シェーダアーキテクチャでは、各シェーダが頂点シェーダになったりピクセルシェーダになったりする。頂点シェーダとして働いた際の出力結果をこのブロックで一時保管して、ピクセルシェーダとして働く際にはここからその結果を引き継いで仕事をこなす。将来、プログラマブルシェーダがメジャーバージョンアップしたさいに頂点シェーダの出力が増えたとしても対応できるキャパシティを備えているという。Communicationの略だと思われる。360には組み込みメモリが搭載されており(詳しくは後述)、こことのやりとりを行なうのがこのブロックの仕事だ。Converter」という流れ(パイプライン)は、従来のGPUにおける「プログラマブル頂点シェーダ→ラスタライザ→プログラマブルピクセルシェーダ」そのものであり、その実行自体を「Sequencerを介して外注に出す」と考えれば、「これまでの見慣れたGPUの変形版」というふうにも思えてくるはずだ。360の象徴的な機能ブロックであるeDRAM。360のゲームタイトルに必須とされる要素。360-GPUの特徴の一つとなっている10MBのeDRAM(組込型メモリ)。ここにもあるように、この10MBのeDRAMはNECエレクトロニクスによって製造される。この10MBという中途半端な容量のeDRAMは、一体何に使われるのかが謎だったのだが、今回のブリーフィングで解明された。結論から言えば、一種のスクラッチパッドメモリ的な活用がなされる。単なるキャッシュメモリではない。ピクセル処理の際に活用され、“ひとかたまり”の複数のピクセルがここに集められ、各種ピクセル処理をここで一気に行なってしまうイメージになる。360-GPUのeDRAMは単なるメモリでなく、ピクセルプロセッサを内包しているのだ。その数は192個にも上る。この高速なeDRAMと大量のピクセルプロセッサで何の処理を行なうかというと、Z処理(深度情報処理)、α処理(透明度合成処理)、ステンシル処理(切り抜き処理)だ。アンチエリアス処理もここで行なってしまう。Z処理は、これから描画しようとしているピクセルが、既に描画済みの映像の存在の奥行き関係で見えるかどうかを調べ、見えなければ描画しないで破棄する/見えるのなら描画する......といった処理に必要とされる。Z処理はとどのつまりはZバッファからのZ値の取り出しと書き込みの繰り返しであり、つまりはメモリアクセスだ。Z処理は各種影生成の処理系でも活用されることになるため、そのメモリアクセス量は頻繁でパフォーマンス低下に結びつきやすい。α処理やステンシル処理、アンチエリアス処理も同様で、頻度の高いメモリアクセスとごく基本的な演算処理の組み合わせ突き詰められる。した処理系を、この高速なeDRAM内で、しかもここに組み込まれたピクセルプロセッサで一気に並列処理してしまえば、効果的ではないか......ということでこの仕組みが実装されたのだ。360の全てのゲームはかならずアンチエリアス処理が適用される」と強調したことは記憶に新しい。Feldstein氏によれば、4点サンプル式のアンチエリアス処理......いわゆる「4xFSAA処理」であれば、このeDRAMの仕組みにより、パフォーマンス低下はゼロだ(あるいはそれに近い)......と説明する。Memoryとは、この機能のことを行なっているのだ。Engineについても解説しよう。これは、ブロック図には存在しない。結論から言えば「ソフトウェア」と思ってもらっていい。言えば、開発サイドから見ればAPI的に提供されるもの......だ。Mapping......ハイダイナミックレンジレンダリング後のラチチュード補正。カメラの露出、瞳の絞り制御のシミュレーションといったものがあげられた。360-GPUのプログラマブルシェーダのプログラマビリティを活用して作られた、ソフトウェアベースのシェーダライブラリということになる。360-GPUのプログラマブルシェーダは非常に高度なプログラマビリティを備えており、しかも、各シェーダで取り扱うデータは、頂点処理、ピクセル処理といったグラフィックスのセマンティックスにとらわれない。そこで、これまではCPUでしか行なえなかった処理系をGPUフェーズで行なえるようになるのだ」と強調する。ブリーフィング後のインタビューで、筆者の「SPEのようにゲーム内物理を計算させることも可能か」という質問に「十分可能。Managerを務める(ア)について、Feldstein氏は「複数回の光の反射をシミュレーションする処理系」だというので、おそらくレイトレーシング的なものだと思われる。レイトレーシングというと3Dゲームグラフィックスのようなリアルタイム処理系とは縁遠い存在に思えるかもしれないが、そんなこともない。その3Dモデルがどのような遮蔽構造をしているかをテクスチャで表す遮蔽項マップなどの生成には、局所的なレイトレーシングの概念が活用される。360-GPUのシェーダユニットならばそれも可能になる。遮蔽項マップは通常、事前計算で用意するものだが、これが変形するキャラクタに対して毎フレームリアルタイムで高速に計算できれば、そのキャラクタ自身で完結してよいセルフシャドウ程度ならばかなり容易に表現できるようになる(さすがにこれは今世代では無理か?)。Transfer:PRT)などにも応用できるだろう。Illumintionの形(左端と中央)。Illuminationとは何か。光の伝搬とはこんなケースが考えられる。Illuminationを行なうのがPRTだテッセレータの例。RADEON8500では(c)のN-Patchをサポートした。360-GPUでは(d)の頂点テクスチャリングも可能(イ)も注目度の高いフィーチャーだ。Feldstein氏は「スプラインやベジェなど様々な関数メソッドでポリゴンを自在に分割する、適応型テッセレータを実現した」と述べた。「適応型テッセレータ」は次世代WindowsのLonghornのグラフィックサブシステム「WGF2.0」で、実装が断念/延期されたフィーチャーだ。Engineというソフトウェアの形で実装している。Detail(LOD:視点からの距離に応じて3Dモデルを構成するポリゴン数を増減させる仕組みのこと)の実現に相当する。MATROXは適応型テッセレータをParheliaシリーズに実装させた。360-GPUでは、次世代DirectXであるWGF2.0のさらに先のグラフィックスシステムを先取りして実現している......といってもいいかもしれない。次世代Windowsのグラフィックサブシステム。点線ボックスの「テッセレータ」は当面搭載が見送られることとなった。360の開発キットのAPIとして提供され、順次アップグレードがなされていくという。360の新たなグラフィックス特殊表現として追加されていくことになる。360-GPUは、そのGPUの中にSPEがあるような印象を抱かせ、可能性という意味に置いてはPS3に優るとも劣らない。360とPS3はそれぞれ異なった可能性を秘めているといえるのではないだろうか。