Vulkan Rendererというのを使うとCTDが減って安定するらしいです。
環境
以下の環境でVulkan Rendererが動くようにしました。
Mod名 | バージョン |
---|---|
Buffout 4 | 1.24.5 |
xSE PluginPreloader F4 | 0.2.5.1 |
Baka ScrapHeap – Script Memory Limit Expander | 1.3 |
High FPS Physics Fix | 0.8.4-5 |
ENB | 0.468 |
Reshade | 4.9.1 |
Vulkan Renderer | 2.0.1 |
DLL (Native mod) loader | 0.2 |
それぞれのModが正規のインストール手順で正常に動作することを確認してあることが大前提です。
ENBとVulkan Rendererの共存についてはMiscellaneous Modding Guidesを参考にさせていただきました。
GPUはNvidia GeForce GTX 1080です。
ENBのインストール
ENB Manを使っていつもどおりにインストールします。
ひとつだけかえるところがあって、ENBのバイナリ以外をインストールします。
バイナリは後述するVulkan Rendererに含まれるので、ここでは入れません。
Vulkan Rendererを用意する
Miscellaneous Modding Guidesの手順に従い、どこでもいいのでVulkan Rendererというフォルダを作ります。このVulkan Rendererフォルダの中に必要なファイルを入れていきます。
まず、Vulkan Rendererのマニュアルインストール版をダウンロードして展開し、中身をすべてVulkan Rendererフォルダの中に入れます。
VulkanRT-1.2.198.1-Installer.exeという実行ファイルがあるので実行します。よくわかりませんが、WindowsのシステムフォルダにランタイムDLLをコピーして登録するみたいです。
入れたファイルの中にあるd3d11.dllの名前をd3d11_loader.dllに変更します。
DLL (Native mod) loaderをダウンロードして展開し、中身をVulkan Rendererフォルダの中に入れます。d3d11.dllだけです。
Vulkan Rendererフォルダの中にNativeModsというフォルダを作ります。NativeModsフォルダの中にENBというフォルダを作ります。
ENBをダウンロードして展開し、中身のd3d11.dllとd3dcompiler_46e.dllをVulkan Rendererフォルダの中に入れます。さらにVulkan Renderer\NativeMods\ENBフォルダの中にも同じように入れます。
Vulkan Renderer\NativeMods\ENB\d3d11.dllの名前をENB.dllに変更します。
Vulkan RendererをFallout 4にコピーする
Vulkan Rendererフォルダの中身をすべてFallout 4フォルダにコピーします。Fallout4.exeがあるフォルダのことです。Dataフォルダの中ではありません。
VoltexだとModとして導入できるようです。私はMO2なのでENB Manで管理することにしました。
Reshadeをインストールする
Reshadeのセットアップツールを起動してFallout 4を選択、Vulkanモードを選んで使いたいモジュールを入れます。
ReshadeはVulkan globallyというモードで動かします。
Reshadeの最新版はVulkan Rendererとうまく共存できないようです。ですので少し古いバージョンである4.9.1を使いました。
xSE PluginPreloader F4を設定する
xSE PluginPreloader.xmlを開き、以下の部分を変更します。
<ImportAddressHook> <!-- <LibraryName>MSVCR110.dll</LibraryName> <FunctionName>_initterm_e</FunctionName> --> <LibraryName>vulkan-1.dll</LibraryName> <FunctionName>_initterm_e</FunctionName> </ImportAddressHook>
MSVCR110.dllをvulkan-1.dllに変えるということです。
ENBを設定する
ENBとVulkan Rendererを共存させるために、以下の設定が必要です。
[PROXY] EnableProxyLibrary=true InitProxyFunctions=true ProxyLibrary=d3d11_loader
また、Miscellaneous Modding Guidesによると以下の設定が推奨されています。
[GLOBAL] ApplyStabilityPatch=false UsePatchSpeedhackWithoutGraphics=false [MEMORY] ForceVideoMemorySize=false VideoMemorySizeMb=4096
Vulkan Rendererを設定する
ここまででひと通りのModが動作するようになりました。
動きはするのですが、いくつか問題も確認できました。
- Vulkan Renderer側でFPSが常に上限60固定でVsyncがオンのためローディング画面をHigh FPS Physics Fixによる350FPSの高速ロードにできない。
- Vulkan Renderer側のVsyncをオフにしてHigh FPS Physics Fixに任せてもティアリングが発生する。
- 特定のエリアでFPSが極端に低下する。
- HUDが邪魔。
VsyncをオフにしてFPS上限をあげてみる
デフォルトだと60FPSに制限されていてVsyncが有効のようです。Vulkan RendererのDescriptionを参考に、dxvk.confを以下のように設定してみました。
[Fallout4.exe] DXVK_FRAME_RATE = 0 dxgi.maxFrameRate = 120 dxvk.hud = fps,gpuload,scale=1 dxvk.useRawSsbo = True d3d11.maxTessFactor = 16 d3d11.samplerAnisotropy = 16 d3d11.invariantPosition = False d3d11.relaxedBarriers = True d3d11.apitraceMode = True dxgi.maxFrameLatency = 2 dxgi.syncInterval = 0 dxgi.tearFree = False
これだと常に120になるので、High FPS Physics Fix側でゲーム中は60、ロード中は350にしてあります。
Vulkan Renderer側の上限を120にしていますが、上限を上げれば上げるだけロード中のGPU使用率も上昇して嫌だったので、程々にしてみました。
アップスケーリングをHigh FPS Physics Fixにやらせると、GPU使用率が常に100%になりティアリングが起こるようです。Vulkan RendererについてくるMagpieにやらせたところ改善しました。
意味があるか不明ですが、モニタがAMD FreeSyncに対応しているので、NVIDIA G-SYNCを使ってみることにしました。GeForce GTX 1080にはAMD FreeSync互換モードがあるようです。NVIDIAコントロールパネルでG-SYNCの設定を行い、「ウィンドウ表示と全画面モードを有効化」にてG-SYNCを有効にしておきます。
HUDに表示される項目を絞り込む
デフォルトは全部入りなので、減らしてみました。scaleで大きさも指定できます。
[Fallout4.exe] dxvk.hud = fps,gpuload,scale=1
特定のエリアの負荷を下げる
コルベガ組立工場は入り口からゲームの進行に影響が出るほど重いです。試しに光源をすべて取り除いてみたところ、ゲームに支障がない程度まで改善できました。
それからどうなったのか
安定したという感じはありませんでした。落ちるときは落ちます。
全体的にGPUの使用率が上昇します。そしてFPSが低下します。おそらく仕事が増えて処理しきれなくなっているのだと思います。GeForce GTX 1080は数世代前のグラフィックカードですが、効果が低いということのようです。
屋内であれば光源を取り除くといったその場しのぎができますが、屋外だとそれも面倒です。
なにかの拍子にFPSが低下したまま戻らなくなります。Fallout 4を再起動するとなおります。どうやらセルの読み込みのタイミングで発生するようです。
結局のところ使うのを止めました。