■はじめに
この日記は、”まるぺけ つくろーどっとコム”の質問箱(掲示板)で IKDさんやLAGさんとやりとりしていた内容を多くのOS環境でどうなんだろうと調査した結果です。 環境設定について詳しく教えてくださったLAGさんにも感謝しています。 また、以下の内容で動作確認に使ったシェーダーファイルもまた LAGさんが掲示板上で提供してくれたものを使用しております。
Autodesk SoftImage ModTool 7.5とリアルタイムシェーダーについて、
正常動作にはいろいろと条件がありそうなため、調べてみました。
DirectX 2006Dec以降がインストールされていることが必要です。
そのため、以下の環境は DirectX SDK 2009Augustを用いてチェックしています。
このバージョンを選択している理由は以下の環境すべてで正しく動作すると
考えられている最低バージョンのためです。
詳しくは Windows7とDirectX SDKの関連について記載した日記をご参照ください。
■検証結果
以下の表に、DirectXランタイムとOSごとの組み合わせで、
動作状況はどうであったかをまとめてみました。
環境 | ビデオボード | ドライバ | DX9ランタイム | 動作可否 |
---|---|---|---|---|
XP SP3 (x86) | Geforce9800GT | 260.99 | Retail | 正常動作 |
Vista Ultimate SP2 (x86) | Geforce9800GT | 260.99 | Retail | 正常動作 |
Vista Ultimate SP2 (x64) | Geforce9800GT | 258.96 | Retail | 正常動作 |
Windows7 Ultimate (x86) | Geforce9800GT | 260.99 | Retail | 正常動作 |
Windows7 Ultimate (x64) | Geforce9800GT | 260.99 | Retail | 正常動作 |
XP SP3 (x86) | Geforce9800GT | 260.99 | Debug | 動作しない |
Vista Ultimate SP2 (x86) | Geforce9800GT | 260.99 | Debug | 動作しない. |
Vista Ultimate SP2 (x64) | Geforce9800GT | 258.96 | Debug | 動作しない. |
Windows7 Ultimate (x86) | Geforce9800GT | 260.99 | Debug | 正常動作 |
Windows7 Ultimate (x64) | Geforce9800GT | 260.99 | Debug | 正常動作 |
環境 | ビデオボード | ドライバ | DX9ランタイム | 動作可否 |
---|---|---|---|---|
XP SP3 (x86) | RADEON HD5450 | 10.11 | Retail | 正常動作 |
Vista Ultimate SP2 (x86) | RADEON HD5450 | 10.11 | Retail | 正常動作 |
Vista Ultimate SP2 (x64) | RADEON HD5450 | 10.11 | Retail | 正常動作 |
Windows7 Ultimate (x86) | RADEON HD5450 | 10.11 | Retail | 正常動作 |
Windows7 Ultimate (x64) | RADEON HD5450 | 10.11 | Retail | 正常動作 |
XP SP3 (x86) | RADEON HD5450 | 10.11 | Debug | 動作しない. |
Vista Ultimate SP2 (x86) | RADEON HD5450 | 10.11 | Debug | 動作しない. |
Vista Ultimate SP2 (x64) | RADEON HD5450 | 10.11 | Debug | 動作しない. |
Windows7 Ultimate (x86) | RADEON HD5450 | 10.11 | Debug | 正常動作. |
Windows7 Ultimate (x64) | RADEON HD5450 | 10.11 | Debug | 正常動作 |
動作しない = ビューポートに何も表示されない状況を示します。
* 切り替え方法
DirectX SDKインストールすると出来るスタートメニューグループで、
“DirectX Utilities”→”DirectX Control Panel” を選択します。
そして、以下の項目のどちらかにラジオボタンで選択して、OKを押します。
- “Use Debug Version of Direct3D9”
- “Use Retail Version of Direct3D9”
これでDirectXランタイムが切り替わります。
なお、通常であればアプリケーションの再起動が必要なのですが、
SoftImage ModToolの場合、ビューポートの設定を切り替えるだけで、
このランタイム切り替えの効果を得ることが出来ました。
”ワイヤーフレーム” ←→ “リアルタイム/DirectX9”
の切り替えで反映させることが出来ました。
おそらくビューポートを再選択のタイミングで、 D3D9デバイスを作り直しているのでしょう。それで反映されるのだと思います。
補足
64bit環境の場合には、ほんのちょっとだけ注意が必要です。
SoftImage ModToolは32bitアプリケーションなので、
使用するDirectX Control Panelも32bit版である必要があります。
■まとめ
以上の結果から、まとめてみたいと思います。
RetailのDirectXランタイムを使っている状況では、
SoftImage ModTool 7.5のリアルタイムシェーダーを使うことに問題はありません。
ただし、DirectXのデバッグランタイムを使っている場合には、
環境に大きく依存するということが言えそうです。
Windows7であれば、どちらのランタイムでも動くようですが、
それ以前の環境ではDebugランタイムでの使用は壊滅的だといえます。
アーティストさんの使用する環境ではDirectX SDKがインストールされていることは稀である、と考えられているのかもしれません。
確かにプログラマ以外DirectX SDKは不要だとも思いますけど。
アーティストさんとやりとりするプログラマの人々は、
こういった挙動に対して、いろいろと知っておかなくてはならないだろうし、
大変だなぁと思いました。
*余談
Vista以降でディスプレイドライバモデルが変更されました。
そのため、VistaであればDebug/Retailも関係なく動くのでは?と思っていたのですが予想を裏切られました。
Vista->Windows7は、WDDM1.1とマイナーバージョンアップとなっていますが、
仕様としてはまぁまぁの規模で変更があるので、
そのあたり対応する過程で、うまく動くようになってるのかなと考えています。