もう全部Lossless Scalingで(ry Magpieと2重適用編

September 07, 2024

Post
Share
Line
Hatena bookmark

タグ:CRT, HDR, Lossless Scaling, Magpie, フレーム生成

目次 +

thumb

※2025/01/12追記 この記事の内容を実行する際は、ロスレスのキャプチャAPIをDXGIにする必要があります。恐らく仕様の問題です。 WGCではMagpieと2重適用することは不可能です。(Magpie側はDesktop Duplication以外ならOK)

それと24H2でMagpieのキャプチャ方式がGraphic Captureだと、ゲームのFPS取得に不具合が出る場合があるので追記

まえがき

~前回のあらすじ~

DX9ゲームでCRTエフェクトとwindowsオートHDRとロスレスのフレーム生成の併用という、多分誰も得しない環境が出来上がった。

その後CRT周りでもうちょっと楽かもしれない方法を見つけた。

以上。


dgVoodooも良いが…

度々話に出てきたdgVoodooですが、最新環境で動かないゲームを動かすためのラッパーDLLです。 設定は多少使いまわせますが、ゲームごとに個別の対応が必須となります。 そもそも素のゲームの動作に問題がなければ、本来は導入する必要はありません。

そのためdgVoodooを通さずともCRTエフェクトとwindowsオートHDRを適用することができるなら、本来はそうしたいところです。

直ぐに思いつく手段はSpecial KやReShadeによるCRTエフェクト適用です。が、これらにゲームの動作APIの変更機能はありません。結局ラッパーDLLが必要であり、しかも手間が増えるのでは意味がありません。 またはロスレスそのものにこれらを適用するという手段もあるのですが、仕様上GUIからの変更が不可能で、一度他のゲームに導入してそこから設定をコピーするしかないようです(Spexial KはGUIが開けるとの情報があるが未確認)。

そもそもゲームに実装されていない画面表示方法を実行する方法自体があまり存在せず、しかもスケーリングではなくエフェクトが欲しいとなるとそう簡単にいく話でh
普通にありました。

01

Lossless Scalingのユーザーなら恐らくご存じのスケーリングソフト、MagpieのプリセットにデフォルトでCRTエフェクトがあります。 ロスレスと同じくソースを選ばないスケーリングソフトであり、DLL置き換えのような手順を踏むことなく映像に各種効果を適用できます。 惜しむらくはロスレスのように複数exeに一括適用する術がなく、逐一プロファイルを作成する必要があることでしょうか。

外部スケーリングソフトでCRT掛けたらロスレス使えないじゃん…となるところだと思いますが、

02

普通に使えました。

ちょっと見づらいですが画像左上に2重でFPS表記されているのがわかります。 MagpieとロスレスそれぞれのFPS表示をどちらも有効に設定すると、このような表示になります。 きちんとした手順を踏めば同時に使用することが可能です。 ある種のタブーに触れてる気はします。

また、前述のシェーダー適用系ツールやDLLラッパーとは違い、オンラインゲームのチート検出エンジンに引っかかる可能性が仕様上低いのも利点といえます。

注意

スケーリングソフトの2重適用は絶対に想定されている使い方ではないため、予期せぬ動作が多発する可能性があります。 当環境では双方有効時にロスレスのみのオンオフを繰り返すと、かなりの確率でロスレスがフリーズします。

同時使用した場合のGPUへの負荷はなかなかに高くなります。 現代のGPUで古いドット絵ゲームに使うだけならおそらく問題にはなりませんが、試す際は上記について理解されたうえで行ってください。

また、筆者はRadeon環境しかないため、Geforceでの設定については取り扱いません。 ご了承ください。

以下の手順を試してもうまくいかない場合は、ロスレスとMagpieの双方を管理者として実行してみてください。 最近のWindowsアップデートで非管理者起動時の挙動が微妙になっている気がします。 なお2重適用後の絵をOBSで取得したい場合は、OBSも管理者として実行しないとおそらく表示できません。

導入と設定

いるもの

  • Magpie
  • Lossless Scaling
  • お好みのWindows Auto HDR強制適用ツール

Magpie以外の各種ツールのダウンロードまたはインストールは完了しているものとします。

Magpieの準備

Magpieを持っていない場合は以下から最新版を落とします。

適当な場所へ解凍したら、とにかく真っ先にAdrenalinへMagpie.exeを登録して下さい。

登録しないとAnti-Lag効きません。
最重要事項です。

別記事でもちらっと触れましたが、Adrenalinのグラフィック設定は、たとえグローバルだろうと登録されているソフトウェアにしか適用されません。ロスレスはSteamで売られているソフトなので自動登録されますが、野良アプリのMagpieは自分で登録しなければいけません。

ロスレスと2重適用する場合は、遅延を極力減らすために非常に重要な設定となります。

その後はとりあえずMagpieを起動し、ホームから以下画像の下線部を変更します。

03

これにより排他フルスクリーン表示しかできないゲームでも、Magpieがボーダーレスとして表示してくれます。

ゲームの解像度指定がモニタ解像度と同じ場合にウインドウで実行すると、Magpieは窓無しとして表示してくれるのにロスレスがたまに窓付きで実行しようとすることがあるので、その対策です。 ただしDX11の場合はこの設定をしたとしても、排他フルスクリーンでMagpieを利用することは基本的に不可能のようです(ボーダーレスは可)。ゲーム側に引っ張られるのかロスレスが正常に表示できなくなることもしばしば…

モニタ解像度で窓起動した場合一度ドラッグして動かさないと、画面外に隠れていた部分がスケーリング後に描画できないことが多々あるので地味に困る…

スケーリングウィンドウの復帰とタイマー、さらにこれより下にある排他全画面のシミュレーション等はお好みで設定してください。

プロファイル作成

とりあえずCRTとして表示できるようにするために、以下のように設定してください。

04

キャプチャ方式はWin11 24H2ではDWMSharedSurfaceか、利用可能ならGDIのほうがいいかもしれません。 当環境だとGraphic Captureでは、何をどう設定しても55fps動作となり、それ以下のレートに制限することもできません。3Dモードオフ時のfpsはちゃんと変動するけどMAXは55。なんで?

また、キャプチャ方式はロスレスを併用する場合、Desktop Duplication以外に設定してください。 24H2だとDX9以外のゲームでは、必然的にDWMSharedSurfaceを利用することになります。遅延が…

3Dゲームモードは無効時にMagpieが画面の動きを判断して自動的にfpsが下がる機能のようで、ロスレスでフレーム生成する場合は邪魔でしかないため必ずオンにします。

3Dゲームモード有効時はMagpieがスペックの許容する限りのフレームレートで動くようになってしまうため、最大フレームレートを制限しなければいけません。 昔のゲームだと基本60上限なので、特にいじることなくこのまま使っています。

これより下にある設定は基本的に弄る必要はありません。

ベースは作成が終了したので、次は対象のゲームで自動適用するためにゲームごとのプロファイルを作ります。

が、Magpieはロスレスとは違いGUI上から.exeの直接指定はでません。 対象ソフトのウインドウを表示した状態(最小化も不可)で新しいプロファイルをクリックし、ウィンドウを選択してくださいをクリックして表示されるドロップダウンメニューから目的のソフトを選択する必要があります。

05

排他フルスクリーンだと別窓にフォーカスをあてた時点で一覧から消えるので、ウィンドウモードで起動する必要があります。

なおプロファイル作成後に対象exeを変更することはGUI上からはできません。 どうしても変更したい場合は設定ファイルのconfig.jsonを開き自力で書き換える必要があります。 記述はフルパス以外受け付けないようです。

作ったはいいけど…

この方法でゲーム実行時に自動的にMagpieが起動されるようにはなるのですが、ロスレスとは違い遅延実行することができません。 ロスレスの記事で述べた通り遅延なしだと実行に支障の出るゲームがたまにあるのですが、回避方法がわかりません。

そのためモノによっては自動実行にはチェックを入れず、ショートカットで手動起動したほうが結果安定動作することがあります。

ロスレスの設定

Magpie.exeを自動拡大Onで登録し、スケーリングをオフにしてマウスカーソルの表示を消します。

06

その他の設定はフレーム生成が効くようにしてお好みで設定してください。

今回記事の方法を用いる場合、初回のロスレスの記事で書いたようなワイルドカードによるフィルタ設定は用いらないほうがいいです。 Magpieで指定したexeがロスレスのワイルドカード指定内に存在するものだった場合、ゲームのexeがロスレスの優先実行対象となって2重適用できません。

もちろんMagpieとロスレスでプロファイル適用対象が被るのもアウトです。

マウスカーソルについて

今回マウスカーソルをMagpieでオン、ロスレスでオフに設定していますが、ソフトの解像度比率がモニターと同一の場合は逆もしくは両方オンでも問題にはなりません。 問題はゲームが4:3、モニターが16:9などのように比率が異なる場合で、実際に試すと分かるのですがマウスカーソルが2つ現れます。

私が遭遇した例でゲームにおいて正しい表示となるのは、Magpie側のカーソル表示でした。 そのためこのように設定しています。

Windows Auto HDRの設定

今までの記事ではDX9ゲームのexeをレジストリに登録し、ラッパーDLLを通してHDRを強制実行できるようにしてきました。

今回はラッパーは不要です。

そもそもMagpieはHDR非対応です。

ソースにオートHDRを掛けてもまともに出力できないという結果になります。

が、例のごとくMagpieの出力自体にオートHDRを適用することは可能なので、Magpieを利用するゲームはレジストリ登録を全て削除し、代わりにMagpieを登録します。

07

デフォルトでオートHDR対象になっているDX11以上のゲームに関しては、Windowsの設定からシステム>ディスプレイ>グラフィックを開き、対象ゲームのオプションからグラフィックの基本設定で個別に無効化できます。

08

HDRソースはどうするのか

ネイティブHDR対応&CRTエフェクト非対応のケースは、前述のSpexial K等を用いるしかないようです。 ドット絵でそういったゲームはそれほど数がないはずなので、妥協するしかありません。

そもそもHDRとCRTは同時に扱うものではない気はします。


応用編

これでCRTエフェクト非対応なDX9ゲームでCRT風表示とオートHDRとフレーム生成を併用する環境自体は出来上がりましたが、前回記事と同じく現状ではソフト解像度によってCRTエフェクトの掛かり方が変わります。

MagpieはdgVoodooの場合とは違い、Nearest等のスケーリングで先に引き伸ばして後からCRTエフェクトを掛けることによって、どの解像度で実行した場合でもCRTエフェクトの掛かり方を一定にすることができます。

09

掛かり方を荒くしたい場合はスケーリングの倍率を1未満にすると、その解像度でCRTエフェクトに映像が渡され、CRTエフェクト側でモニタ等倍に引き延ばせます。 0.1など極端に低くすると字がほとんど潰れるのでやりすぎは禁物。

10

タイプを絶対値にすれば解像度を直接指定することも可能です。

ウインドウ起動の整数倍解像度かモニタ解像度をベースにするのが一般的だとは思いますが、こういうこともできますよということで。 ただしゲームがフルスクリーンの場合は、この方法でゲーム内解像度以上にすることはできません。 モニター解像度自体がゲーム内解像度に変わってしまうともうどうにもなりません。

それ以外にも自分でスケーリングモードの追加や効果の変更を行えば、計5種類のCRTエフェクトの中から自分の好きなように見た目を変更することができます。

11 12

ソース自体に手を加えることなく、ここまで見た目に自由が利くのはかなり助かります。

これで実行に問題が出るとき以外はDLL置き換えを控えることができそうです。


あとがき

という訳で、Lossless ScalingとMagpie併用の記事でした。

ロスレスの代わりにAFMF2だとどうかも試してみましたが、流石にフレーム生成ならずという結果に… あくまでロスレスとMagpieでのみ通じる合わせ技(力技)のようです。

その時にMagpieの設定ウインドウをディスプレイ上に存在させている場合にMagpieだけAFMF2を有効にすると、 他のアドレナリン登録済みのソフトのフルスクリーン表示中にAFMF2が効くという謎現象に遭遇。 バグですかねこれ…

どこに需要があるのか分からないこのシリーズも一旦ネタ切れとなりました。

忘れたころに新たなネタが現れればまた書きます。

これらの記事がどなたかのご参考になれば幸いです。

それでは…


Profile picture

Written by doranarasi . Follow on X