フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんにちは。やってしまいました。ついにTDtechnicもプログラマブルシェーダの導入に踏み切りました。

今まで導入をためらっていた理由は2つあります。一つは慣れ親しんできた固定機能から離れたくなかったから。もう一つは、動作環境が更に限られるからです。

Visual Studioの都合上、プログラム自体はXP以降のみ対応となっております。また、DirecrX9を要求しますから、XPの方はそれがインストールされているのも条件です(インストーラは同梱してますが)。プログラマブルシェーダを使うと、これに加えて「シェーダーバージョン2.0以上」がほぼ必須となってしまうのです。もちろん最低バージョン(1.0かな?)のシェーダを使えばバージョンに関係なく動くことになりますが、1.x系のコンパイラはすでにMicrosoftが配布しておらず、性能も2.0以降と比べてかなり落ちてしまいますので、さすがに非現実的です。とりあえず、バージョンは2.0以上を前提として、対応していなかったらソフトウェア処理で代用(できるのかな?確認できる環境がない…)するという設計にしました。

あとは全ての描画機構をプログラマブルシェーダ用に換装して、固定機能用のステート設定群を削除して…かなりスッキリしました!描画処理を直接プログラムできるわけですから、ステート切替を駆使して処理方法を設定する時代は終わりです。さて、これでついにハードウェア頂点処理でスキンメッシュアニメーションができるようになりました。前回のステージデータに加えて敵(もちろんスキンメッシュアニメーションします)を5体同時に表示してみると…なんと!300FPS超え安定です。なるほどこれなら頂点が5倍程度になっても60FPSは出ると…。恐るべし、GPUの計算能力。

プログラマブルシェーダのコンパイラにはD3DX付属のものを使用しておりますが、例によってコンパイル結果のデータを予め保存して起動時にそれを読み込んでいるだけなので、不死女自体はやっぱりD3DX不要です。素のWindowsで起動できるって気持ちいいですね!

ちなみに、もう一つの私の動作確認環境であるネットブックは、そもそも頂点シェーダが積まれていないためプログラマブルシェーダとか関係なくハードウェア頂点処理は不可能です。それでも、前回の最適化による恩恵は直接受けられるわけですから、上記と同じ内容でテストしてみたところ、カックカクではあるものの何が起こっているかわからないほどではない速度が(15FPS程度)出ました。もちろんフレームスキップしてますからゲーム自体の速度は60FPS一定ですよ。
関連記事

[2014/12/29 14:29] | 不死女 -Immortal girl-
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。