FC2ブログ

最近の進捗と今後の予定、それから不具合の原因[むー]

XNA
02 /28 2011
ほそぼそと作業を続け、ようやくスキンアニメーション部分のプログラムのやり直しが終わりました。


今後の展開としてはまずニャンニャンのver2.0化を目指しています。
何よりも第一に、購入して頂いたにもかかわらず、
動作していない人を少しでも多く救済したいという思いがあるからです。

現在の修正を行うにつれ、一部のハードで動作しない原因が何だったのか、
皆目見当もつかなかった状態から「これが原因だ」と断言できる内容のものを見つけられるようになりました。

そういったバグの原因や次回のバージョンアップの詳細など
細かい情報は続きに書きまとめてありますので興味のある方はご一読ください。


具体的な修正方針は部品化の徹底及び、
追加機能として後付で作成したオプション周りのいい加減な実装の見直し、
アチコチで見受けられる無駄な描画処理の見直し
これらをメインに作業を進めています。

一応、目玉の処理もあって、GPGPUによるスキンアニメーションを今回は実装しました。
また暇をしていたマルチコアCPUをアニメーション処理に割くことができる拡張も副産物として施されています。
(デバッグの都合でリリースを行うかは保留中)


今回のver2.0化でソースコードの全域にわたって何らかの修正が入る予定です。
見た目は全く変わりませんが、もしよければ体験版などの公開の際は、
お付き合いいただけれれば幸いです。


冒頭にも書いたとおり、現在は今回の修正の山場であったGPGPUによるアニメーション処理のデバッグが終了し、現在は各描画処理の部品化を進めています。

現在リリースしているバージョンでは、内部的にオプション化しきれていない部分が多くあり、
実は内部で処理をスキップしているだけでメモリは消費している・・なんて箇所もあったりします。

それらを見なおし、完全な部品化を行うことで出来なかった人がまず動作する状態になるよう進めています。


まだまだ公開するまでに時間を要することになると思いますが、
今しばらくお待ちください。
■動作しなかった原因 ~何がいけなかったのか~
根本の原因は『DirectX9.0対応≠XNAの全機能対応』と言う認識の無さ、
3D関連の基礎知識の無知さが生み出していたと行っても過言ではありません。

【テクスチャサイズ】
今回セルフシャドーをCSM(カスケードシャドーマップ)というものを使って実装していたのですが、
これのテクスチャサイズが3072*768と言うサイズでした。

実はこのサイズ、DirectX9としては各メーカーが独自に拡張オプションとして対応しているもので、DirectX9としては2048が仕様上の上限だったりします。

これを超えたテクスチャサイズを利用したため、
一部ハードでのハングアップに至ったものと思います。

そのためVer2.0ではデフォルトは1536のサイズで影を描画するように変更する予定です。


【MRT(マルチレンダリングターゲット)】
これもDirectX9としてはオプションだったようです。
ただ、ほとんどのハードでは実質MRTを2枚までは対応状態にあります。

しかし、現在リリース中のニャンニャンはこれを3枚利用しています。
これが原因でハングアップしている可能性も考えられます。

またこれが原因でアンチエイリアスの恩恵をあまり受けられていないデメリットもあるため、
この度は処理の順番などの見直しで、これを2枚までに抑えこみ、
かつ目に映るレンダリングについてはMRTを介さないことで
アンチエイリアスを有効にする予定です。


■今後の対応予定 ~2.0化で何が変わるのか~
ver2.0化での変更点は上記を含む以下のとおりになる予定

【解像度の変更を可能に】
 全画面で横長になってしまう人がいたためアス比の変更にも対応予定。
 また、影のテクスチャの解像度も選択可能にする予定。

【処理の高速化】
 全エフェクトの描画処理で毎回アニメーションの計算をしていたのを廃止
 また、各エフェクトの描画結果の受け渡しにテクスチャを使用していたのも廃止
 これにより全域にわたって、処理速度、メモリに対して余裕ができると思います。

【オプション処理の徹底】
 各処理を完全にオフにすることで、オプションの効果を最大限に発揮させることで
 低スペックパソコンの人でもオプションにて、なんとかプレイ出来るようにする

【アンチエイリアスの完全対応】
 一部処理でアンチエイリアスが切れているため、最終処理でも角が気になっていたのを改善予定

コメント

非公開コメント