残作業

DXRuby1.1で追加したクラスはPolygon、Mesh、Matrix、Vector、Shader、RenderTargetの6つ。
3D系、計算サポート系、2D強化系ということで2つずつ。
それぞれ基本的に動作するようになったというレベルで、使いやすさはまだまだだから、色々と追加変更は必要だ。
これらを実装するために描画周りを完全に書き直した。
うちのノートのGPUが非力すぎて描画性能が上がったかどうかが確認できないが、理論的にはCPU負荷は軽減されていてそのぶん速くなっているはず。


追加したクラス・機能について機能を充実させるのも大事だが、既存の機能を強化するのも大切なことだ。
Window.drawTileの描画速度アップもネタはあるのだがまだ手をつけていない。
Ogg・MP3対応も今度こそやりたい。音関連は描画系のように書き直ししたいところだ。こっち系はぜんぜん知識が足りてないから時間かかるだろうけど。
SoundとSoundEffectを統合するとか。Wavで読み込んだ音にエフェクトをかけるような機能が実現できる。で、またそれをWavに吐き出せるとかできたら面白いよなあ。
Imageクラスの機能追加・・・って、RenderTargetからImageオブジェクトが作れるなら必要ないかもしれないな。んー・・・それができたら自由に拡大・縮小・回転・シェーダによる細工その他、なんでもできるじゃないか。3D描画すれば妙な変形した画像も作れる。なんという無敵感。小さい文字描画の品質改善とブレンド時の色の調整ぐらいかな。
Inputモジュールは一度作り直したがまだなんか気に入らない。使いにくいし無意味にコードが複雑だ。FreeRGSSのコードの簡潔さには自分でびっくりした。ようは仕様の問題なのだな。


新機能のほうの残りは。
3D系はライティングを実装したい。Shaderと組み合わせるメソッド拡張も必要だ。じゃないとそれこそ片手落ちもいいところ。
Matrix、Vectorはたとえば逆行列を求めるとか、内積を求めるとか、そういう計算関連を一通り実装したい。それから違うサイズ(3*3行列とか)もサポートしておく必要がある。2Dで使うには4*4行列は激しく無駄だからだ。Vectorはうまく使うとRubyの計算処理を省いて高速化できる可能性がある。そのへんも考えていきたい。
Shaderは複数のテクスチャを入力できるようにしないと効果がほとんどない。この機能は必須だ。
RenderTargetはImageオブジェクトが作れなければおいしくない。あと、ZバッファをImageオブジェクトにできるとおもしろい使い方ができそうだ。DirectXならステンシルバッファを使う機能も欲しい。


やることいっぱいあるな。
一年ぐらいかかるんじゃないか。