年内のバージョンアップはよほどのバグがない限りこれで最後です。といってもあと一週間もありませんが。
結局はFXAAが肝になるのね
掲示板にあった「アンチエイリアスがかからない」という状態ですが、まあ改めて書く意味はあまりないですが、WindowModePatchの処理が上に被さっているのでその部分が動作しなかった、ということだけです。問題は「その動作がどういう動作か」なのですが、いろいろとドライバオプションをいじってみてFXAAという言葉に行き着きました。何とかしてFXAAを有効にして描画すればアンチエイリアスがかかった状態になるのでは?と。
ただ、このFXAAですが、Direct3Dから設定をいじってできるものではないようで、自前でPixelShaderを使って処理をしなければならないというものでした。サンプルからPixelShader3.0用に書き直して処理を結合させるまでに妙に時間がかかりました・・・。線形補間命令が逆になっていたりといろいろと。OpenGLなどと複合しているものはサンプルがあるのですが、PixelShader3.0用に完全に書き直されているものが検索で見つからないようなのでもしかすると公開するかも。
で、FXAAを有効にできるのですが、ちょっと適応範囲が広すぎて一部の文字のエッジが逆につぶれてしまうのが問題点です。ドライバオプションの方はその辺を見分けているらしくうまく描画されているのですが、WindowModePatchの場合は最終描画されたものに一括でアンチエイリアスを行うのでちょっとぼけます。
また、等倍時にもFXAAを動くようにしたのですが、これのせいでFXAAと双三次補間でも使おうものならPixelShaderが二回も動くことになってとても重いです。拡大時はFXAA+双線形補間の拡大オプションのみにするようにしてください。二つに分けた場合も描画が二回起こるのでやはり重いです。
ついでにいくつか追加や修正を
で、この機能を追加して公開しようとする手前に掲示板に初期ウィンドウ位置に関する要望があったのでどうせなので、という感じで一気に実装しました。これについては特に中央に持ってくるタイプで右下方向にウィンドウが大きくなるのはまあ仕様か、程度で片付けていたのですが、初期の一回だけ位置決めに座標を設定させる形で実装しました。ちなみに座標データなのに設定ファイル上では整数値x2になっているのがおもしろいところです。単に座標データとして設定項目を書こうとすると追加実装が多すぎるのでやめただけです。はい。
あとはマルチサンプリングの設定を上書きできるようにしたことでしょうか。実際設定しても何が変わったのが自分でもよくわかりません。とりあえず設定した状態でデバイスが作られているのでよしとして公開しています。設定を無効化すれば何事も起こらないので。
バージョンが飛んでいるのは前のテスト版を飛ばしたから?
実は0.44を飛ばしています。0.44「相当」として補間処理にテクスチャ描画を使うバージョンがあった、ことにしている・・・のは名目上のこと。
0.44がちょっといやな番号であることと、どうもこのバージョンが長くなりそうな予感がするので0.45というきりのいい番号にしたかったわけです。
本当に長くなるかはこれから次第ですね。