RTSS降低所有DX11和DX12游戏的操作延迟
RTSS降低所有DX11和DX12游戏的操作延迟
操作延迟,即输入延迟,是从按下鼠标到屏幕像素点发生变化的时间差。有很多方法可以降低游戏的操作延迟,例如提高配置(缩短CPU和GPU的帧生成时间),降低画质(缩短GPU帧生成时间),锁帧使GPU不再瓶颈(本质是清空指令队列)等等。
对于DX11游戏,可以做的比较多。NVIDIA驱动控制面板的低延迟模式(开),可以将指令队列设置为1,默认是3,可以有效降低操作延迟。游戏内有类似减少缓冲的选项,也可以开启,作用类似,例如OW。
对于DX12游戏,低延迟模式(开)无效,只有超高可能有效。超高是自动锁帧的。类似锁帧到略低于刷新率3-10帧,使GPU不再瓶颈,并触发GSYNC的方案。超高锁的帧数相对较低,240Hz屏幕,超高会锁到223帧。如果这个游戏本来就没跑满刷新率,低延迟模式超高无效。
换句话说,一个DX12游戏,如果它不支持reflex,无类似减少缓冲的选项,帧数没跑满刷新率,想降低操作延迟就只能降低画质,顺便还能提升帧数。但降低画质会降低游玩体验,如果就想玩最高画质呢?这就十分僵硬。
现在有一种方法可以让所有的DX11和DX12游戏强行支持reflex。
那就是RTSS 7.3.5引入的reflex锁帧模式。
reflex锁帧模式
RTSS,全称Rivatuner Statistics Server,通过注入3D程序,抓取游戏的帧生成过程中的数据,例如帧率,帧生成时间。MSI Afterburner如果想显示帧率,是需要运行RTSS的。如果只显示那些CPU占用率,温度啥的,是不需要RTSS的。另外RTSS自己也能显示帧率,当然,只有一个帧率...
RTSS 7.3.5引入了reflex锁帧模式,下面是更新日志的机翻:
添加了 NVIDIA Reflex 延迟标记监控,用于具有原生 NVIDIA Reflex 支持的 Direct3D11/Direct3D12 应用程序。Reflex 延迟标记作为 NVIDIA Reflex 技术集成过程的一部分嵌入到游戏中。这些标记允许游戏开发者和 NVIDIA Reflex 软件基础设施跟踪渲染管道不同阶段的精确时间,并估计启用 Reflex 低延迟模式的效果。现在也可以通过 RivaTuner 统计服务器分析此类标记。此外,RivaTuner 统计服务器还通过共享内存将原始 NVIDIA Reflex 延迟标记按原样导出到第三方客户端应用程序(例如 HwInfo、AIDA64 或 CapFrameX),因此此类应用程序也可以轻松访问 Reflex 延迟标记,并可以可视化它们或根据原始标记计算其他统计数据
为没有 NVIDIA Reflex 支持的 Direct3D11/Direct3D12 应用程序添加了 NVIDIA Reflex 延迟标记注入。请注意,如果游戏在呈现上一帧后没有立即开始在渲染线程中模拟世界,则注入的模拟相关延迟标记可能不准确
添加了 ID3D11DeviceContext::ClearRenderTargetView 挂钩,用于在 Direct3D11 应用程序中注入渲染提交启动相关的 NVIDIA Reflex 延迟标记
ID3D12CommanQueue::ExecuteCommandLists 挂钩现在始终处于活动状态,并用于在 Direct3D12 应用程序中注入渲染提交启动相关的 NVIDIA Reflex 延迟标记。现在,此挂钩强制使用 Detours 注入模式来提高并发命令队列挂钩的可靠性
改进的帧速率限制器:
添加了新的帧速率限制模式:NVIDIA Reflex 模式。在此模式下,RivaTuner Statistics Server 完全禁用其自己的精确帧速率实现,而使用 NVIDIA 自己的帧速率限制器。此模式主要用于与 DLSS 帧生成结合使用,通常与任何第三方帧速率限制器不兼容。但是,也可以在没有原生 NVIDIA Reflex 支持的游戏中使用这种模式,因为在这些游戏中启用 NVIDIA Reflex 帧率限制器也会启用 Reflex 低延迟模式作为副作用。请注意,NVIDIA Reflex 帧率限制模式目前仅在 NVIDIA GPU 和 Direct3D11/Direct3D12 应用程序中受支持。如果您尝试在不受支持的硬件或不受支持的应用程序中启用它,RivaTuner 统计服务器将恢复为默认的异步帧率限制模式
默认被动等待阈值已从 90% 降低到 70%
最低主动等待时间限制不再是硬编码的,高级用户现在可以通过配置文件对其进行自定义
为 Windows 10 1803 及更高版本添加了备用高分辨率可等待计时器实现
添加了实验性的交错被动等待实现。在此模式下,可以在每 N 帧而不是每帧上执行被动等待,以调整精度和功耗之间的平衡
现在可以右键单击帧率限制编辑字段以显示上下文菜单。菜单允许您选择每个连接显示器的精确刷新率(因此您可以使用它来简化设置混合扫描线同步模式的过程)或选择计算为每个连接显示器刷新率的 95% 的 VRR 上限。请注意,将帧速率限制器设置为所需显示器的精确刷新率的先前替代方法仍然受支持。您可以按住并单击帧速率限制编辑字段,将其设置为显示 RivaTuner 统计服务器窗口的显示器刷新率
添加了实验性的抢占式等待实现。高级用户可以在混合扫描线同步模式中将其与前沿同步帧速率限制模式结合使用,以在前沿同步(有利于撕裂线稳定性)和后沿同步(有利于延迟)模式之间转移平衡
可以看到,如果DX11和DX12游戏不支持reflex,只要启动reflex锁帧器,就会强制启动reflex。
做了一些测试。正常来说,应该疑惑为什么可以做这个测试。因为不支持reflex的游戏,必不可能支持Reflex Latency Analyzer(RLA),所以不能抓取操作延迟数据。但阅读上述更新日志之后,应该可以看到,RTSS现在支持注入reflex延迟标记,可以抓取所有DX11和DX12游戏的延迟数据。
抓取之后如何显示呢?用CapFrameX。
OSD
分析
这个软件目前没有中文,想使用的话需要研究研究。它的OSD功能类似MSI Afterburner,但它可以显示app latency。什么是app latency呢?
app latency
官网有说。即PC latency。CPU+指令队列+GPU。通常来说能优化的只有这一段。鼠标延迟和显示器延迟在硬件固定的情况下很难优化。当然,你非得用400 800 dpi,500回报率,那确实还有优化空间。提高dpi和回报率是可以小幅度降低鼠标延迟的,但也只有较低的时候提升明显,4000到8000回报率我不相信有任何一个人可以通过双盲测试。
这个软件还能记录帧生成曲线和大量数据,用于分析。比如要测试开关CPPC,C-state,PSS,高精度计时器的流畅度区别,可以用这个软件。这比某加加专业多了,而且没有广告。软件完全开源免费。本次测试并没有用到这个记录功能。
测试了两个游戏。古墓丽影崛起,它同时支持DX11和DX12。艾尔登法环,DX12,解锁帧率。
古墓丽影10 DX12 不锁帧 36.6ms
古墓丽影10 DX12 reflex锁帧器 23.5ms
古墓丽影10 DX11 reflex锁帧器 21.3ms
古墓丽影10 DX11 不锁帧 29.6ms
固定测试场景
可以看到DX11和DX12模式,RTSS的reflex锁帧器都可以有效降低操作延迟。
艾尔登法环 DX12解锁帧率 reflex锁帧器 20.3ms
艾尔登法环 DX12解锁帧率 不锁帧 27.8ms
那么怎么使用reflex锁帧器呢?
下载RTSS最新版。Add添加游戏的exe文件,选中它,setup,Enable framerate limiter选择NVIDIA reflex。Enable passive waiting默认是勾选的。这个应该只对RTSS自己的锁帧器有效。被动模式吃U吃的少,帧生成曲线波动大一点。主动模式反过来,会吃U多一些,帧生成曲线稳定一些。
下面的inject nvidia reflex latency markers,只有开启它,capframex等软件才能抓取延迟数据。
你可以把鼠标放在选项上,可以看到说明。其实就是上面发过的机翻内容。有些游戏不兼容下面那个markers,例如OW。当然,OW本身完全支持reflex所有特性,也用不上它这个功能。
确定。
然后依然是选中要设置的游戏,在右边framerate limit输入一个较大的数值,例如999,含义是不用它锁帧,只是触发reflex。reflex的本质就是自动动态锁帧。
如果你想用它触发GSYNC,当然可以填写刷新率-3到-10。例如240Hz锁231帧,144Hz锁135帧。也推荐这种方法。上述测试都是填999测的。
注意,如果玩的是有反作弊的竞技游戏,不确定强行为它开启reflex是否会被封号。之前A卡驱动的anti-lag+被v社识别为外挂,封了很多人的CS2账号(后面解封了)。如果被封号了,不负责。
其实大部分竞技游戏的画质都不太好,帧数可以跑到非常高,操作延迟已经很低了,高配电脑完全可以用“让不锁帧时的帧数稳定超过刷新率,再游戏内或RTSS或驱动内锁帧到 刷新率-3到-10,触发GSYNC”的方案。只要GPU不瓶颈,操作延迟就是最小化的,因为清空了指令队列。跑不满刷新率的DX12游戏,才有可能用得到这个方法,这类游戏通常是单机游戏。
Enjoy it !