皆様、明けましておめでとうございます。今年が良い年になりますように。
まずは年の初めにメインコンテンツの一つであるWindowModePatchを更新するところから始めたいと思います。
WindowModePatchのDirect3D9系アンチエイリアス処理について
というわけで増えました。はい。FXAAに続いてSMAAも採用です。詳しくはこの記事の一つ前の記事を参考に。アンチエイリアス処理の設定名が変わっていますので設定ファイルの互換性が微妙にありません。パッチを一度解除して再度パッチを行う方がよいと思います。
で、ちょっといろいろなプログラムでこのアンチエイリアス処理について調べたのですが、かかった状態の画像評価ではなくかかり方に関するものです。
- アンチエイリアス処理を行うときはFXAAの方がSMAAよりも強い(ぼける)
- 拡大処理とアンチエイリアス処理が両方有効の時はアンチエイリアス処理を先にした方が画像がよりきれい(内部テストより)
- FXAAと双線形補間を行うときは拡大時にFXAAをかけるより等倍でFXAA+拡大で双線形補間を選択した方が基本的に画像がきれい
- 3D描画でアンチエイリアス処理と拡大処理を求める場合、両方とも有効にしてもそこまで問題はない。ただしグラフィックカードが持つかどうかはそれ次第。
- 2D系描画しか行わない場合(ADVゲームなど)はアンチエイリアス処理を行うとぼける+レンダリングが遅くなるので処理をしなくてもOK
となりました。前回のバージョンでは「PixelShaderを使用するものを同時に設定すると良くない」のような言い方をしていましたが、単に負荷の問題なので設定しても問題はない、と意見を変更しておきます。3D描画を使っている場合はそちらの方が拡大画像がよい感じでしたし。
そしてバグ修正がいろいろあった
いろいろあったんですよ・・・。まずはDirect3Dで追加描画を行うので自前でRenderStateやらSamplerStateやらを保存できる(呼び出しを監視できる)ので保存していたのですが、IDirect3D9StateBlockなんて便利なものがあったんですね、とか。上の機能追加のためにヘルプを調べていたら気がついてしまい、こちらを使う方に変更。
また、「描画サイズを初期化前に固定する」のオプションが正常に動作しなくなっていたのに気がついてその部分の修正も。使うとまともに描画されない状態でしたね。すべて自動検知しないと動作しない状態だったのは非常にいたいです。
さらに内部の動作に関して細々と修正がかなり入りました。今回の公開前テストでは試すプログラムの数を増やして動作状態のチェックを行いました。なお、監視しているAPIも多くなっているのでDLLを出力して直接起動を行っている場合はパッチファイルを改めて書き出さないと動作が正しくありませんので。
前の記事についていたコメントについて回答
というわけでこちらで改めて回答を書いておきます。一応現象としては「とある有名ADVシステムを使うと、画面が白と黒の状態でしか描画されない」というものです。
ある程度解決してあったはずなのですが、その状態に対応するために書いた記事のとある記述を使わないと正しく描画できないということや内部のちょっとした動作の問題でウィンドウサイズが正常に変更されなかったりと言うことで、ウィンドウサイズの対応部分を修正した次第です。そのため、その現象にはVer 0.46以降を使うようにしてください。
また、起動の方法にはある程度テクニックがいるパターンです。詳しい説明はVer 0.36 Alphaの記事にあるのですが、そのときから動きがだいぶ変わっているので、要点と変更点だけ書き直しておきます。
- ウィンドウサイズについてはVer 0.46以降であれば基本的に自動認識される(はず)。できなければ描画サイズ固定を使うと良い
- 起動時引数をつけないと拡大や縮小時に正常に描画されないのは同じなので起動時引数はつけましょう。(設定画面から起動させるときは「起動時引数」の項目に[-debugwin=no -dbstyle=gdi]を入れることが必要になる)
- このとき、GDI描画モードが使用されるが、DirectX系の描画処理設定(Direct3D9、DirectDraw)だと描画できない。縮小処理であれば通常GDIがよい
面倒なことが「起動時引数がないと描画処理が正常に動作しない」ことです。なお、0.45以前であっても起動時引数の指定とGDI描画モード設定があえば描画はされます。が、ウィンドウサイズの状態が余り良くないので0.46以降を使うのが良いと思います。
本年もよろしくお願いします
とはいっても、昨年から見るといろいろと立場が変わってきているので動ける年になるとは思います。それが良い方向になるようにがんばっていきたい、と意志を表明しつつ2014年初めての記事を締めたいと思います。