KB 937106, Direct3D 9, GetDC, Alpha Channel

検証コードは後で書く.

  • Windows VistaDirect3D 9 では GetDC でアルファチャンネルを含むサーフェイスデータを取得できる
  • Windows XP / Server 2003 では,以前は無理だったけど KB 937106 をあてると可能になる
  • GetDC されたビットマップ間の転送が,VRAM 間で完結するか,システムメモリを経由するかはドライバ次第

という理解で良いのかな.

WinHEC 2007 Slides

WinHEC 2007 のスライドいつになったら公開されるのかなかな? と思ってたら,ウォッチすべき場所が違ってた.ひぐっ.
正しくはこちら.

Direct3D / WDDM 絡みではこの辺を眺めておくべし.

個人的には目新しい話はなさげ.図は綺麗."Rebootless Driver Upgrades" ガンバレ超ガンバレ!

DirectX SDK August 2007

masafumi さんのところ より.
公式リリースはまだ見ていないのですが,とりあえずそれらしいものが Web には既にあるようです.
ちなみに今度の CEDEC 2007 で私が解説予定の TSF (Text Services Framework) サンプルですが *1SDK 中の以下の場所に入ってます.

  • \Samples\C++\DXUT\Optional\ImeUi.h
  • \Samples\C++\DXUT\Optional\ImeUi.cpp

リリースノートの内容ですが,ざっと気になったものを列挙するとこんな感じでしょうか.

  • 次回以降,2ヶ月に一回のリリースから,年 4 回のリリースに変更
  • XAudio 2 のベータ公開*2
  • Direct3D 10.1 Tech Preview

なお,ImeUi の話はリリースノートには書かれていません.

*1:id:NyaRuRu:20070717:p1

*2:こちらに connect サイトでのベータテスターの受付開始のアナウンスも出ています.[http://discussms.hosting.lsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0707D&L=DIRECTXDEV&T=0&F=&S=&P=1972:title=Announcing the XAudio 2 Beta!]

D3DX とセキュリティアップデート

Microsoft DirectXに、任意のコマンド実行が可能になる脆弱性が報告され、7月19日、セキュリティ各社がアドバイザリーを公開した。最新バージョンでは問題は修正済みだという。

Secuniaのアドバイザリーによると、脆弱性は、RLE(Run Length Encoding)で圧縮されたTarga(TGA)形式の画像ファイルを処理する際の入力認証エラーに起因する。悪用されると、細工を施したTarga画像を使ってヒープベースのバッファオーバーフローを誘発し、システムを制御される恐れがある。

同社の深刻度評価は5段階で上から2番目の「Highly critical」となっている。

影響を受けるのはMicrosoft DirectX 7.x/8.x/9.xとMicrosoft DirectX SDK

なお、iDefenseによると、Microsoftは2006年10月のSDKとEnd-User Runtimeリリースでこの問題に対処済み。2007年6月のリリースにはこの脆弱性が存在しないことが確認したという。

おそらく D3DX に問題があるのだと思うのですが,問題のある d3dx9_XX.dll の範囲と更新状況については 1 分ほど調べた範囲内ではよく分かりませんでした.時間がとれたらちゃんと調べてみます.
問題は,悪意のあるファイルをどうやって D3DX の関数に読み込ませるかですが,例えば DirectX SDK に同梱されるサムネイル表示シェル拡張も影響を受けるので,さしあたってはそれが一番影響が大きそうでしょうか.まあ最近の SDK を入れている人は大丈夫と.後は人気ゲームの mod なんかもピンポイントに狙われると危ないかもしれません.Joost の用に DirectX をゲーム以外に利用しているケースも注意が必要ですかね.
あと何より,静的リンク時代の D3DX も今回の影響を受けそうな気がしますが,さてどうやって対策したものかという感じですなぁ.

CEDEC 2007 で TSF (Text Services Framework) の話をします

CEDEC 2007 の申し込みが始まりました.人気セッションは定員になっちゃうのが結構早いのでお申し込みはお早めに.
と,一点お知らせ.
先日の MD3 の懇親会にて,Microsoft の川西さんに「ちょいちょい」と声をかけられ,今度の CEDEC 2007 の DirectX セッションの一部を担当することになりました.レギュラーセッション『R23 - Windows Vistaゲーム開発』にて,8 月の DirectX SDK に付属する TSF サンプルの解説を担当します.9月27日の 14:50-16:10 です.

名称
CESAデベロッパーズカンファレンス 2007
開催日
2006年9月26日(水)・27日(木)・9月28日(金)
会場
東京大学 (東京都文京区)【MAP】
主催
社団法人コンピュータエンターテインメント協会
共催
経済産業省(産業間連携部門)
受講料金
チケット 内容 CESA会員 一般
レギュラーパス 3日間有効 25,000円 50,000円
デイリーパス
いずれか1日のみ有効
10,000円
20,000円
早期申込割引価格(レギュラーパスのみ)8/24(金)迄
20,000円
40,000円
※受講料お支払い後のチケット種別の変更はできません。
※学生はCESA会員料金が適用されます。
※価格は税込価格です。

3DCG ソフトの世界は Python だらけ?

新日々此何有哉』よりもう 1 つ,

Pythonはいろんな用途で組み込まれています。CGソフトでも多く使われていて、知っているだけでも、Blender,Vue,XSIなどがあります。LightWaveもLScriptから移行しないかな?実は以前日本の代理店をしているe-frontierさんの呼びかけで、Vue開発元のe-on Softwareの社長さんと会ったことがあります(確かVue4発売のとき)、その時に「なんでPythonなの?日本ではRuby,Perlがメジャーだけど」と聞いたら、「他の環境から呼び出すのがすごく楽だから」という返事でした。

(オフラインの) 3DCG ソフトの世界は Python が強い,という話は Python Workshop the Edge 2007 で SAGA の方もおっしゃっていました.講演は MEL から Python へ移行してとっても生産性アップというものだったのですが,3DCG 業界はほぼ Python 一強という感じなんでしょうかね.
素材屋さんとプログラマが同じ言語を知っているというのは,実はかなり幸せな状況なんじゃないかと思ったり.
ちなみに,NVidia がリリースしているエフェクトオーサリングツール FX Composer も,IronPython を通して Python がサポートされるようです.

XAudio 2

Vista 再インストール中暇つぶし編.
特集:Vista買うのはまだ早い!(3)ゲームサウンド編』という記事をご存じの方も多いかと思います.
実際,この記事で取り上げられている「大きな変更」で随分困っている方もおられることでしょうが,その原因が記事では今ひとつはっきりしないものになっていました.

なぜDirectSound HALが消えたのだろうか。また,DirectSound 3Dのサポートが打ち切られた理由は何だろうか?

素直に考えれば,UAAをベースとしてWindowsのサウンド周りが一新され,その影響でDirectSound 3Dの実装が出来なくなったように思える。だが,真相はやや異なるようだ。

今回はサウンドデバイスの大手であり,本稿でもすでに何度かその名を挙げたCreativeの技術担当者にメールインタビューを行う機会を得た。“本題”についてのインタビュー内容は後日お届けするとして,このインタビューから,DirectSound 3Dが廃止された理由に関連したところを拾ってみたいと思う。

さて,Creativeは「Sound Blaster」で,PC用サウンドデバイスにおける,事実上の標準を作り上げたメーカーだ。PCサウンドへの影響力は現在でも決して小さくはなく,Windows Vistaのサウンド設計に関わっているはずである。

実際,Creativeの担当者によると,「過去2〜3年間,マイクロソフトと密に共同作業を行ってきた」とのこと。そのなかで「『Windows Vistaではハードウェアアクセラレーションのサポートを行わない』という決定がなされた」のだそうだ。「なぜMicrosoftがハードウェアアクセラレーションを止めたのか」までは,残念ながら分からない(同社の日本法人であるマイクロソフトにも問い合わせたが,日本には回答できるスタッフがいないとのことだった)が,いずれにせよMicrosoftはハードウェアアクセラレーションのサポートを打ち切った。先述のとおり,DSPによるハードウェアアクセラレーションを実現するのがDirectSound HALなので,ハードウェアアクセラレーションの廃止が,そのままイコールでDirectSound HALの廃止と結びついたという流れが,ことの真相のようである。

実は,この記事が公開される直前に行われていた Game Developers Conference 2007 で,その原因の一端に触れられています.

The Future of Audio on Windows and Xbox 360

As the audio landscape evolves, Microsoft remains committed to a range of audio solutions for programmers and composers that effectively target platforms such as Windows and Xbox 360. Come hear what the future holds for audio APIs and tools from Microsoft. We'll discuss audio on Vista, future APIs, and how audio developers and content creators should be thinking about audio engine design and content authoring in the years ahead.

まあ詳細は PPT を見て頂くとして,ポイントは 2 点.

  • 現在 Xbox 360 で使用されているのは DirectSound ではなく XAudio という API で,これを Windows / Xbox 360 で統一した XAudio 2 という新しい API を展開することで,クロスプラットフォーム戦略を強固にしていきたい
  • DirectSound の弱点を克服しつつ,ソフトウェアベースの処理に移行する.3D 処理も対応.

ちなみに,現在の XNA 開発で,XACT を通して生波形に触れないという問題も,XAudio 2 世代では解消される予定です.逆に言えば今はやっぱり無理と.
なお,なぜソフトウェアかですが,MVP Summit のときのプレゼンを聞く限り,ハードウェアアクセラレーション時の不安定性に Microsoft が愛想を尽かした,という感じでした (あくまで私の印象ですよ).
実際,DirectSound を使ったゲームを配布していると,「何かトラブルが起きたらとりあえずサウンドのアクセラレーションレベルは下げろ」という経験則があります.それが (そこそこの速度で動く) ソフトウェアパイプラインで,どこでも同じように動いてくれると,実は開発者にとっては結構魅力的な話だったりするのです.
というわけで,確かにハードウェアアクセラレーションが使われなくなるのは困る側面もあるのものの,世の中それだけでもなさそうだと.興味を持たれた方は PPT ファイル『The Future of Audio on Windows and Xbox 360』を是非ご覧ください.
英語版 Wikipedia の『DirectSound』の頁も,比較的「分かっていて書いているな」というのが伝わってきます.