维拉

维拉

以FSR 1.0超采样渲染原生分辨率以下的世界,并每隔N帧重建着色器阴影贴图。绝不生成帧。

性能

这是什么

这是一个针对 Minecraft 1.21.1 / NeoForge 的客户端渲染优化模组,旨在与 Sodium 和 Iris 协同工作,而非替代它们。

本模组基于两项经过实测而非臆测的优化:

  • 世界以低于显示器分辨率进行渲染,并使用 FSR 1.0 进行放大,而 HUD、菜单和文本保持原生分辨率并保持清晰;
  • 着色器包的阴影贴图每 N 帧重建一次,而非每帧重建。

不会对你的世界写入任何数据。安装或移除本模组,磁盘上的内容不会有任何改变。

Vira 从不生成帧

你看到的每一帧都是由游戏完整绘制的。没有重投影、没有插值、没有生成的中间帧——因此拖影、重影和模糊在结构上就不可能发生,而不仅仅是罕见。

这条规则源于之前的一个项目,那个项目确实会重投影帧,结果发现在一个充满运动机械的整合包中,仅对相机进行扭曲变换会让所有自行运动的物体产生重影。本模组从另一条思路出发:让每一帧真实渲染的成本更低。

世界分辨率 + FSR 1.0

只有世界部分以低分辨率渲染。界面随后以全尺寸绘制到真实缓冲区中——因此文字保持清晰,而昂贵的部分则变得更廉价。

差距由 FSR 1.0(EASU 后接 RCAS)填补。它是一个纯空间滤波器:只读取当前帧,不依赖其他任何信息。没有历史缓冲区,没有运动矢量,不会产生重影。

默认锐化程度是通过测量得出的,不是靠肉眼判断的。一张原生 2560×1351 的帧通过面积平均缩放到 1715×905,再通过各滤波器放大回来:

滤波器 PSNR 保留的精细细节
双线性 32.17 dB 3.7
仅 EASU 32.52 dB 4.1
EASU + RCAS(默认) 32.29 dB 6.0
原生帧 — 6.0

普通的双线性放大损失 40% 的画面精细细节。FSR 在出厂锐化设置下恰好达到原生水平。在 50% 缩放比例下,差距扩大到 FSR 领先 +0.70 dB。

阴影贴图优化

使用着色器包时,游戏每帧都会从太阳的视角第二次绘制整个世界。在重型模组整合包中,这意味着 CPU 需要重新遍历和提交数百个区块段,而太阳仅仅移动了二十分之一度。

Vira 每 N 帧重建一次该贴图,并保留上一张——连同其绘制时的相机信息一起保存,这是让它能正常工作而不是闪烁的关键。

在开发整合包上的实测结果:间隔 1 → 2 → 3 时,帧率 70 → 82 → 93 fps。

真实的数字与诚实的局限

以上所有数据都是在单台机器(i7-11700K, RTX 3060)上,使用一个包含 Iris、Distant Horizons 和 130 个其他模组的重型 Create 整合包测得的。你的结果会有所不同,而以下是大多数模组不会告诉你的事情:

在那台机器上,单纯的分辨率缩放几乎没什么用 —— 减少四分之一的像素只让帧率变化了 0–7%,因为该场景的瓶颈在 CPU 而不是像素数。它与阴影设置结合时才能体现价值,同时对于那些受显卡性能限制的机器——也就是大多数性能较弱的机器——也非常有用。

模组会告诉你属于哪种情况。打开帧记录器,它会每五秒写入一次:显卡忙碌时长、渲染线程忙碌时长、你的 1% 最低帧率,以及世界 CPU 时间的实际去向。

成本,坦白说明

  • 降低世界分辨率确实意味着像素减少。 FSR 能重建边缘,但无法重建从未被绘制的细节。在 1.0 设置下模组完全不活动——不切换渲染目标,不进行放大——因此你可以随时进行诚实的对比。
  • 保留阴影贴图意味着移动的阴影投射体会滞后。 你、生物和移动机械装置在阴影贴图中的状态会最多滞后 N−1 帧。在间隔 3 和 90 fps 时,这大约是 20 毫秒。静态几何体——建筑、地形、树木——不受影响。

设置

有三个位置,都写入相同的值,并且都能在游戏运行时生效——无需重启,因此你可以在同一地点对比两种设置而无需重载世界:

  • Sodium 的视频设置 → Vira
  • 模组 → Vira → 配置
  • config/vira.properties

前置要求

  • Minecraft 1.21.1, NeoForge 21.1.x
  • Iris Scale Fix —— 必需。 Iris 没有自己的世界深度缓冲区;它借用 Minecraft 的,并通过一个无法感知缓冲区被替换的计数器来刷新该链接。每个渲染缩放模组都会触发这个问题。Vira 不包含该修复的私有副本。
  • Iris —— 可选。没有它时分辨率缩放仍可用;但阴影设置就没有作用对象了。
  • Sodium —— 可选。有它时,Vira 的设置会出现在 Sodium 自己的视频选项中。

许可证

MIT。