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つのアナウンスがありました

  1. XAML 2009
  2. 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)

PDC08 007PDC08 009

System.XAML.dll

XAMLReader API と XAMLWriter API が用意され、XAMLReader.Load(xmlReader|)でXMLノードからオブジェクトを生成できるようになります。

PDC08 017 PDC08 011

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 のアプリだけのようです。現在クライアントレンダリングにするためのエンジニアリング フェーズには入っているとのことでしたが、非常に残念です。

PDC08 020 PDC08 021

 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など)

 PDC08 023

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

PDC08 026 PDC08 027

また、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がスクリーンに映らないとき、参加者から「帽子のせいだ!」と言われ、帽子をとったら、本当にスクリーンに出るようになったという落ちも付きました。

PDC08 030

最初に 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 のピザ焼き窯です。

PDC08 001