自分用の備忘録。毎回やり方を忘れるので。。
【はじめに】 Hunting Mode を有効にする(初回のみ)
ダウンロードしてきた3D Migotoフォルダの中にある d3dx.ini
をテキストエディタで開いてください。
「hunting=」で検索し、「hunting=2」に変更してください。
また、「verbose_overlay」で検索し、「verbose_overlay = 1」に変更して、ファイルを保存してください。
Hunting Modeとは、ゲームのシェーダーを分析し、無効化したり、変更したりするためのデバッグモードみたいなものです。
Step1. 必要なファイルを所定のフォルダに置く
ゲームの実行ファイルがある場所( \Path\To\ProjectDir\{GameName}\Binaries\Win64\{GameName}.exe
)に、以下のファイルを置きます。
プロジェクトフォルダにあるゲームの実行ファイル( \Path\To\ProjectDir\{GameName}.exe
)ではないことに注意してください。
d3d11.dll
d3dcompiler_46.dll
d3dx.ini
nvapi64.dll
ダウンロードしたときに最初から付属してたShaderFixesフォルダは入れないでください
Step2. DirectX11でゲームを起動する
DX12ではHunting Modeが起動しないため。
ゲームの実行ファイル( \Path\To\ProjectDir\{GameName}\Binaries\Win64\{GameName}.exe
)のショートカットを作成し、
右クリック→プロパティ→リンク先の末尾に「 "~\{GameName}.exe" -dx11
」をつければ良いです。
後は、そのショートカットをダブルクリックして実行してください。dx11モードでゲームが動きます。
ちなみに、dx12のままだと「ブドゥドゥン♪」みたいな不快な音が鳴って、「d3d11_log.txt」にエラーログが記録されます。
Step3. Hunting Mode を起動する
テクスチャを特定したい場面になったら、Num0キーを押します。
画面下部に Hunting Mode Enabled と緑色で表示されたら成功です。
出来る限り、背景がシンプルな場面で行うのが良いです。
背景が複雑な場所で起動すると、ゲームがクラッシュすることがあります。
以下の操作で、テクスチャを特定します。
1. PS(ピクセルシェーダー)の選択
一度Hunting Modeが起動すると、Num1とNum2キーを使用して、
現在のピクセルシェーダーの次と前のシェーダーを選択できます。
PS: 1/38 みたいな数字の部分です。
Num1とNum2を交互に押して、お目当てのシェーダーが特定できればNum3を押すことで、テクスチャを記録します。
お目当てのシェーダーのハッシュ値はメモしておくと良いです。
特定できなかった場合は次の手順に進みます
2. VS(頂点シェーダー)の選択
Num3とNum4キーを使用して、
現在の頂点シェーダーの次と前のシェーダーを選択できます。
VS: 1/24 みたいな数字の部分です。
Num3とNum4を交互に押して、お目当てのシェーダーが特定できればNum5を押すことで、テクスチャを記録します。
お目当てのシェーダーのハッシュ値はメモしておくと良いです。
特定できなかった場合は次の手順に進みます
3. IB(インデックスバッファ)の選択
Num7とNum8キーを使用して(ry Num9で記録します。
4. Hunting Mode の終了
Num0キーを再度押すことでHunting Modeを終了します。
Step4. ShaderFixesの整理
Binaries\Win64\
フォルダを確認すると、
ShaderFixes
というフォルダが出来ていることがわかると思います。
この中に、93dce535a374cb3d_vs_replace.txt
みたいなテキストファイルがいくつか生成されていると思います。
お目当てのシェーダーのハッシュ値以外のファイルは全削除してください。
お目当てのテクスチャを非表示にしたい場合は、このままの状態でゲームを再起動すれば、当該のテクスチャが非表示のままになるはずです。
テクスチャを改造したい場合は、ShaderFixesにあるテキストファイルを全削除して、
テキストファイルを適当な名前で新規作成し、
以下のようにhash値を定義して、handlingでオーバーライドしたい動作を記述します。
(handling=skip はテクスチャを無効化します)
[ShaderOverrideRemoveBlur]
hash=93dce535a374cb3d
handling=skip
ShaderOverrideの次の文章はご自身のしたい操作で読み替えてください。
以上。