PDC 2008 (10/30)
いよいよ最終日です。今日はキーノートはなく、朝8時半からセッションが始まりました(終了は15時)。今日は以下のセッションに参加しました。
- Microsoft .NET Framework: Declarative Programming Using XAML
- Windows 7 Presentation Virtualization: Graphics Remoting ( RDP) Today and Tomorrow
- Windows 7: Unlocking the GPU with Direct3D
- WPF: Extensible BitmapEffects, Pixel Shaders, and WPF Graphics Futures
Microsoft .NET Framework: Declarative Programming Using XAML
XAMLチームはアグレッシブです。XAMLは(WFやWCFも含む)「オブジェクトベースのシステムのための単純なファイルフォーマット」となります。2つのアナウンスがありました
- XAML 2009
- System.Xaml.dll が .NET 4.0に入る (November 2008 CTP)
XAML 2009
XAML 2009 では以下のような拡張が行われます。
- 名前参照の改善(x:Reference)
- genericsの完全サポート(x:TypeArguments)
- ビルトインの型
- 任意のディクショナリ キー型(x:Key)
- コンパイルなしでのイベントのサポート
- 新しいプロパティ定義(x:SchemaType.Members, x:SchemaPorperty)
- 非デフォルト コンストラクタ(x:Arguments)
- factory メソッドの使用(x:FactoryMethod)
System.XAML.dll
XAMLReader API と XAMLWriter API が用意され、XAMLReader.Load(xmlReader|)でXMLノードからオブジェクトを生成できるようになります。
XAMLはOMV データモデルをとり、任意のXML→DOM→オブジェクトに変換することができるのです。.NET Framework 4.0 では WFとWCFも完全にXAMLで記述できるようになります。<If ...>とか<IF.Then...>というタグまで出てきてびっくりしました。これらについては November 2008 CTPをお待ちください。
Presentation Virtualization: Graphics Remoting ( RDP) Today and Tomorrow
RDPはリモートデスクトップを実現するプロトコルです。これまでグラフィックスは全てMBPBMPにレンダリングしてからクライアントに送られていましたが(ホスト レンダリング)、Windows 7で以下の拡張が行われ、クライアント レンダリングの割合が増え、より高速に描画できるようになります(RDP 7.0)。帯域幅としてXPの40%から60%は削減できたそうです。
- Windows 7 Aero(DWM)
- Direct2D, Direct3D 10.1
- マルチモニター サポート
- ビデオとオーディオ
エアロやDirect2Dなどのクライアント レンダリングはよいのですが、問題は WPF, Silverlight, Flash がホストレンダリングのままであることです。ビデオのクライアント レンダリングはメディア プレイヤーとDirectShow, MediaFoundation のアプリだけのようです。現在クライアントレンダリングにするためのエンジニアリング フェーズには入っているとのことでしたが、非常に残念です。
Unlocking the GPU with Direct3D
お待たせしました Direct3D です。テーマは「It's not just for games !」です。Direct3D 10.1 は非常に興味深い構成になっています。DirectX の歴史上はじめて下位互換性を持ちます、つまり Direct3D 10.1 は Direct3D10 と Direct3D9 とそれ以前のハードウェアで動作します! Direct3D 10.1 にはデバイス フラグとして Direct3D10 と Direct3D10Level9 と Direct3D10WARP10 があります。Direct3D10Level9 でデバイスを作れば、Direct3D9 のハードウェアで Direct3D10 のアプリケーションが動作し、Direct3D10WARP10 で作れば それ以前のハードウェアでも Direct3D10 アプリが動作します(つまり、リファレンス ラスタライザよりずっと高速な、最適化したソフトウェア レンダリングが行われます)!さらに Direct3D10Level9には3種類のフィーチャーレベルがあります。
- FeatureLevel9_1 → シェーダモデル 2.0(Intel 945などのローエンド)
- FeaureLevel9_2 → シェーダモデル 2.0(ATI 9800, ATI X200など)
- FeatureLevel9_3 → シェーダモデル3.0(NVIDIA 6800+, ATI1x00など)
Direct3D 11の主な新機能は以下のとおりです。Direct3D 11 は D3D10, 10.1, 11 のハードウェアと、Windows Vista, Windows 7 上で動作します。November 2008 SDK をお待ちください。
- テセレーション:再分割サーフェイス
- マルチスレッド:D3D10ハードウェアが必要
- 動的シェーダ リンク:OOP in HLSL & DSL
- テクスチャ圧縮の改善:BC6(BC6H) HDR, BC7 LDR+Alpha
- コンピュート シェーダ:GPGPU
また、Direct3D 10 のManaged APIについて質問してみたところ、「Managed API については多くのフィードバックをもらっているので検討中だ」との答えでした。以前なら「XNAを使え!」と言っていたのに、かなり変化しましたね。
WPF: Extensible BitmapEffects, Pixel Shaders, and WPF Graphics Futures
タイトルは「Extensible Shader Effects (Pixel Shader), DXInterop」に変更すると、講演者が最初に言っていました(WPF Graphics Futureまで時間がなくてできない)。おちゃめな講演者で、ハローウィンだからと言って、魔法使いの帽子をかぶって講演を始めました。途中でデモPCがスクリーンに映らないとき、参加者から「帽子のせいだ!」と言われ、帽子をとったら、本当にスクリーンに出るようになったという落ちも付きました。
最初に WPF 3.0 の BitmapEffect の問題(ソフトウェア レンダリングで遅い、とくにぼかしが遅い)を説明し、「Good bye Bitmap Effect」と述べました。3.5SP1でBlurBitmapEffect と DropShadowBitmapEffect が追加され、ハードウェア アクセラレーションされることを紹介しました。また4.0ではBitmapEffectは取り除かれ、何も動作しなくなるとのことでした。
3.5から「Effect」クラスが追加され、ピクセル シェーダ 2.0ベースのHLSLを使ったハードウェア アクセラレーションされるカスタム エフェクトが作製できるようになりました。HLSLの説明がされましたが、ここでは省略します。
WPF 4.0 ではピクセル シェーダ 3.0をサポートし、より多くの負荷をGPUに担わせてCPU負荷を軽減し、DirectWriteを利用してテキストの品質を向上させるとのことでした。
WPF 4.0 以降のアイデアとして、頂点シェーダ、シェーダ グループ、WPF 3D内でのシェーダ記述、3Dの改善、メディアの拡張性の改善が言及されました。Direct2D も使いたいのだが、Direct2D は XP で動作しないので、検討中とのことでした。
このブログはマイクロソフトの公式アナウンスではありません。今日はChannel9へのリンクもつけてみました。最後に、昨日夕食をとったCalifornia Pizza Kitchen のピザ焼き窯です。