4GB 和 6GB 显存守护 - DirectX 12 驻留与 Hub 防卡顿代理

4GB 和 6GB 显存守护 - DirectX 12 驻留与 Hub 防卡顿代理

面向4GB/6GB显卡(GTX 1650、RTX 3050、RX 6500 XT)及微软混合显卡笔记本的硬件级DXGI/D3D12 C++代理。通过将渲染目标与几何体锁定在VRAM中(SetResidencyPriority)且不模糊纹理,防止帧率从50骤降至7并避免枢纽卡死。

UE5 4GB / 6GB VRAM Guard & MS Hybrid Frame Pacer (v2.2)


开源 C++ 仓库与源代码:
https://github.com/dikinovzero-spec/UE5-VRAM-Guard

================================================================
[ 英文 ]
================================================================

为什么存在此模组(以及它与 .INI 调整有何不同):
99% 的优化模组只编辑 Engine.ini 文本变量。然而,在 4GB 和 6GB 显卡(GTX 1650、RTX 3050 4GB 笔记本、RX 6500 XT、GTX 1660)上,Windows 视频内存管理器(VidMM)会平等对待所有 DirectX 12 内存堆。当你进入像扎利西亚或罗斯托克这样 NPC 密集的枢纽区域时,VRAM 会溢出,Windows 会将关键的渲染目标(Lumen/G-Buffer)和 32MB 几何缓冲区通过 PCIe 驱逐到缓慢的系统内存中——导致 FPS 从 50 FPS 暴跌至 7 FPS。

这个轻量级 C++ DXGI/D3D12 代理不会把你的画面变成模糊的一团,而是在 API 层面拦截资源创建:

1. 三级 DirectX 12 驻留优先级控制器(ID3D12Device1::SetResidencyPriority):
- 最高优先级:渲染目标、深度模板和 UAV 缓冲区(禁止驱动程序将 G-Buffer/Lumen 分页到内存)。
- 高优先级:几何、顶点、索引和蒙皮缓冲区(D3D12_RESOURCE_DIMENSION_BUFFER)——防止渲染 30+ NPC 时枢纽卡顿。
- 低优先级:大型背景 BC1..BC7 纹理(1024x1024+ 带 mip 链)。
- 单调堆等级保护:一旦 D3D12Heap 被提升为最高优先级,后续放置永远无法将其降级。

2. 智能 UE5 纹理流送器预算钳制(IDXGIAdapter3::QueryVideoMemoryInfo):
- 安全地钳制报告的本地 VRAM 预算(4GB 显卡默认 2850 MB),为几何和渲染缓冲区保留约 1.2 GB 的专用物理 VRAM 余量,同时保持武器、HUD 和特写纹理 100% 清晰。
- 在 MS Hybrid(Optimus / Ryzen Vega + GeForce)笔记本上自动忽略小型 iGPU UMA 池。

3. Present 后高分辨率内核帧调节器与低延迟:
- 使用 CREATE_WAITABLE_TIMER_HIGH_RESOLUTION + IDXGISwapChain2::SetMaximumFrameLatency(1) 消除混合笔记本上的帧排队和微卡顿。

4. 非破坏性枢纽防卡顿 CVar 注入器:
- 平滑地将 NPC 纹理上传和 Lumen 表面卡片捕获分散到多帧,并禁用损坏的 Turing 异步计算队列,而不覆盖你现有的 Engine.ini 设置。

安装:
1. 将 "dxgi.dll" 和 "dxgi_optimizer.ini" 解压到游戏的二进制文件夹中,与 "Stalker2-Win64-Shipping.exe" 放在一起:
...\Stalker2\Stalker2\Binaries\Win64

(对于 GamePass/Xbox 版本:...\Stalker2\Content\Stalker2\Binaries\WinGDK\)
2. 启动游戏!.exe 旁边会出现一个 "dxgi_optimizer.log" 文件,确认钩子已激活。
3. 你可以在 "dxgi_optimizer.ini" 中自定义 VramBudgetMB(4GB 显卡为 2850 / 6GB 显卡为 4600)和 TargetFPS(60、48 或 0 以禁用)。

================================================================
[ 俄语 ]
================================================================

此模组与普通 ENGINE.INI 配置有何不同:
普通模组只更改文本设置,要么把画面变成“糊状”,要么无法在 4 GB 和 6 GB 内存的显卡(GTX 1650、RTX 3050 4GB、RX 6500 XT)上防止帧率暴跌至 7 FPS,因为文本配置无法管理 Windows 视频内存管理器(VidMM)。

这个 dxgi.dll 代理库直接在游戏和 DirectX 12 驱动程序之间工作,不损失画质:
- 将渲染缓冲区/Lumen(最高状态)和 32MB 潜行者与建筑池(高状态)锁定在显卡内存中,仅允许卸载背景纹理的远处 mip 层级(低状态)。
- 向 UE5 纹理流送器报告最低预算上限(4 GB 显卡为 2850 MB),保持手中武器和近处物体的清晰度。
- 通过高分辨率内核计时器比较帧时间(16.67 毫秒),并在 AMD Radeon Vega + NVIDIA GeForce(MS Hybrid)笔记本上通过 SetMaximumFrameLatency(1) 降低输入延迟。
- 谨慎地添加进入扎利西亚/罗斯托克时的防卡顿保护,同时保留你所有旧的 Engine.ini 设置。

安装:
1. 将 "dxgi.dll" 和 "dxgi_optimizer.ini" 复制到 "Stalker2-Win64-Shipping.exe" 文件旁边的文件夹中:
...\Stalker2\Stalker2\Binaries\Win64

2. 启动游戏。会生成一个包含钩子工作报告的 "dxgi_optimizer.log" 文件。
3. 在 "dxgi_optimizer.ini" 文件中,你可以随时更改内存限制(4 GB 显卡为 2850,6 GB 显卡为 4600)和 FPS 限制。

源代码(MIT 许可证):https://github.com/dikinovzero-spec/UE5-VRAM-Guard