約束の理想郷 ― Avalon の真実

約束の真実

某誌の記事の参考資料として,WinHEC 2004 のレポート記事を読んでいました.
本田雅一の「週刊モバイル通信」第239回『明らかになってきたAvalonの実装手法』より.

●階層型のデスクトップ描画構造

(中略)

また、Avalonの描画アーキテクチャはネットワーク透過に設計されており、Ethernetや無線LANなどのネットワークを通じて高速に実行できるとも言われている。

(中略)

Avalonの描画モジュールは、「Unified Composition Engine(UCE)」という名前が付けられている。UCEは、後述する“Visual Tree”というプレゼンテーション要素を構造化したデータを受け、それを描画バッファの中に生成したり、オーディオ出力データを生成するモジュールだ。

UCEはアプリケーションごとにインスタンス(複製)が並行動作。デスクトップのユーザーインターフェイスを司るシェルも含め、各アプリケーションごとに独立したUCEが描画イメージを生成し、テクスチャとして描画バッファに保存される。

最終的にデスクトップを描画するのは、「Desktop Window Manager(DWM)」だ。DWMは各アプリケーションごとのUCEインスタンスが作り出したテクスチャを元に、正しい位置、サイズ、描画パラメータ(半透明処理や影付き処理など)でVisual Treeを作り、それを再度UCEでレンダリングさせ、Direct3Dのバックバッファに出力する。

このように階層構造でのデスクトップ描画になっているため、DWMの味付け、設定によってデスクトップ上におけるグラフィック効果の自由度は非常に高くなる。以前、WinHECにおけるデモで、ウィンドウを移動する際にウィンドウ形状が揺れたり、あるいはウィンドウサイズを縮小して置いておくといったユーザーインターフェイスが披露されたが、(実際にどのようなユーザーインターフェイスになるかは別として)Direct3Dで表現できるあらゆる手法を用いてデスクトップを作ることができる。

今になって読むとよく分かるのですが,なんというか,リリースされた Vista の描画アーキテクチャって,面白くないぐらいに予告通りになっています.2003 年に Microsoft は MIL 絡みの特許を申請している のですが,アーキテクチャの大枠はこの時点でほとんど決まっていて,後はひたすら実装だったみたいですね.

最初の過ちをどうか……

そして結果は皆さんご存じの通り.「3D デスクトップ」といった不用意な期待を煽ったあげく,Flip 3D のような中途半端な 3D 機能しか実装しなかったため,「Vista は見た目がきれいになっただけで中身は全く変わっていない」あるいは「以前からできたことを単に重くしただけ」というのが世の定説になってしまいました.
なるほど 2004 年のこの時点で危険信号はあったわけですね.Layered Window という新技術をイルカに使った会社の過去をみんな思い出すべきでした.
何より,多くの開発者に「これはどういう技術で実装しているのだろう?」と思わせることができていないでいることが,後の悲劇に伏線にならないことを祈ります.

全エディションで展開されるデスクトップ描画の刷新

(この辺は昨日某Vistaスレにも書きましたが……)
さて,Vista のデスクトップ描画の話です.残念ながら一般向けの訴求には失敗しましたが,WinHEC 2004 の公約通り,Vista のデスクトップ描画は,“Visual Tree”という新しい概念を引っ提げて,確かに変化しています.2007 年,日本で販売される Windows Vista プリインストール PC は,ハードウェアの要求さえ満たせば,全てこの新しいデスクトップ描画を使用可能になるわけです.
ん,Windows Vista Home Basic は Aero 非対応だから自分には関係ない? いえいえ,Windows Vista Home Basic でもハードウェア要求さえ満たせば,DWM による Desktop Composition は使われちゃいますよ.え? そんな話聞いてない? いやいやご冗談を,Desktop Composition に対応しないのは,Starter Edition のみですよ*1.
というわけで Windows Vista では,XP 用のドライバをインストールし Basic テーマか Classic テーマを選べば完全従来通りの描画も可能という保険を残しつつ,新しいハードウェアでは 上位エディションから下位エディションまで一気にデスクトップ描画方式の置き換えが行われます.

情報収集のコンシューマライゼーション

とまあ昨日の「ITコンシューマライゼーション」の話 (id:NyaRuRu:20070114#p2) ではありませんが,普段企業で 実際にプログラムを書かれているような方でも,最近は一般消費者向け記事で主に情報収集されていることが多くて,MSDN や MSDN blog に書かれている開発者向け情報がすっぽり抜け落ちていることが多いようです.
「Windows Vista Home Basic では Windows Aero は使えない」という表現は確かに一般向けには正しいのですが,実は Windows Vista Home Basic で選択可能な Windows Vista Standard UI というのは,Aero からいくつかのエフェクトを使用不能にしただけのもので,技術的には DWM による Desktop Composition そのものです.
だから,実行環境が Windows Vista Home Basic だからといって,DWM 使用時の注意事項を無視してはいけません.アプリケーションを作るとき,不具合報告を受けたとき,ドキュメントや FAQ の作成で,Home Basic なら今まで通りでいいやと思っていると,思わぬ落とし穴にはまることになるでしょう.
Windows Vista Standard UI (Windows Vista Home Basic のデフォルトテーマ) の要求スペックは,Windows Aero の要求スペックとほぼ同じなのです.

Retained Mode 再び

私自身は Direct3D は Immediate Mode から入ったので,Direct3D Retained Mode については伝聞でしか聞いたことがありませんでした.曰く,

  • 子オブジェクトを削除できないから画面外に飛ばしたり,激しく縮小したりしてなんとかした.アホだ.
  • 設計者はきっとゲーム・プログラマじゃない
  • 何故に左手系……
  • でもあの当時 Quaternion とか導入してるあたり,ただ者じゃない

とまあ DirectX の歴史でも異彩を放つ Direct3D RM,Vista で DLL が削除されてしまったのは残念ですが,Windows Presentation Foundation の解説記事に Retained Mode という懐かしい言葉を見ながらそんな過去を思い出す次第です.
さて,『Windows Presentation Foundation Graphics Rendering Overview』 というドキュメント,よく書けてます.まあ HTML + CSS の成功がある以上,この方向である程度うまく行くことはみんな知っていたわけですが,「Retained Mode 再び」として読んでみても中々面白いですね.まあ私もあの当時「シリアライズされた描画データ」とか言われても実感がわかなかったとは思いますが.

TIPS

開発者向けの英語資料ですが,『Windows Vista Rules for Enabling Windows Aero With Guidelines for Troubleshooting』は,Windows 向けアプリケーションを開発しているのであれば必読です.DirectX を用いたゲーム開発を行っている人も必ず読んでおくべきでしょう.早期翻訳が期待されます.
てそれだけだとなんなので,自分用のメモを元に次のエントリ (id:NyaRuRu:20070115:p2) で軽く内容を紹介してみます.

*1:http://en.wikipedia.org/wiki/Windows_Vista#Visual_styles