SwemCull — SWEM马匹性能修复

SwemCull — SWEM马匹性能修复

SWEM马的巨大FPS提升——最高可达3倍,且马匹仍然可见。客户端优化,无需服务器。

性能

SwemCull 是一款客户端 Minecraft 性能优化模组,旨在修复由 SWEM(星虫马术模组) 的马匹引起的帧率下降问题。 如果你的 FPS 在马厩、围场或任何稍具规模的马群附近急剧下降,那么这个模组就是为你解决此问题而生的。

SWEM 无论马匹在何处——5 格之外还是 60 格之远,在你面前还是被实心墙挡住——都会以完整的细节渲染每一匹马。SwemCull 会阻止对你看不见的马匹进行渲染工作,并降低距离太远、细节已不重要的马匹的渲染负载。

它支持 SWEM、SWEM Lite 和 SWEM Addendum,适用于 NeoForge 1.21.1 和 Forge 或 NeoForge 1.20.1。它是纯客户端模组,因此无需在服务器上安装,并且可以在你加入的任何多人服务器上使用。

最高可获得 2.5 倍的 FPS 提升,同时保持所有马匹可见。 如果马匹在你身后或被墙壁遮挡,性能最高可提升 24 倍。

SWEM 马匹在距离马群 60 格处,使用与未使用 SwemCull 的性能对比

Minecraft 1.21.1 · NeoForge · 1440p · RX 6600 · Ryzen 5 5600

⚡ 为什么 SWEM 的马匹会导致卡顿

每匹 SWEM 马都是一个拥有 179 个独立骨骼的 GeckoLib 模型,而 SWEM 会无视马匹距离的远近或是否有物体遮挡,每帧都重新绘制所有这些骨骼。马厩里有三十匹马,就意味着游戏每帧要执行三十次这样的操作。

结果是,距离远近完全不影响性能开销。无论马匹是站在你面前、距离你 60 格、位于你的视角之外,还是完全被谷仓遮挡,它们消耗的性能都是一样的。

马匹位置 原版 平衡 ⭐ 极致
马群内部 77 FPS 117 FPS 127 FPS
距离20格 77 FPS 118 FPS 180 FPS
距离40格 77 FPS 186 FPS 1800 FPS*
距离60格 77 FPS 188 FPS 1800 FPS*
墙后或屏幕外 77 FPS 1800 FPS* 1800 FPS*

*马匹被剔除,不再渲染。 测试环境: 在仅安装 SWEM、GeckoLib、Player Animation Library 和 SwemCull 的全新实例中,使用 32 匹马进行测试。使用模组自带的 /swemcull advanced benchmark 命令测量,该命令会在运行前后各取一次基线读数,若机器性能波动则会丢弃结果。

使用 平衡 预设时,前四行中的每匹马仍然完全可见。最大的改进在于,当马匹位于你的视野之外或被实心方块遮挡时——它们几乎完全不再影响你的 FPS。

✨ SwemCull 的功能

  • 🧱 不再渲染墙壁后面的马匹
  • 🙈 自动跳过玩家身后的马匹
  • 🐎 基于距离的马匹剔除
  • 🎽 远处的马具比马匹本身更先被隐藏
  • 💇 在远距离时逐步减少鬃毛、尾巴和其他细小细节的渲染
  • ⚡ 即使马匹在附近也能实现更快的渲染
  • 🎯 自适应模式自动调整设置以维持你的目标 FPS
  • 👤 有骑手的马匹永远不会被剔除
  • 🐴 支持 SWEM、SWEM Lite 和 SWEM Addendum
  • 🎮 完全客户端 —— 可在任何服务器上使用

🛠️ SwemCull 如何优化马匹渲染

首先,SwemCull 恢复了 Minecraft 正常的视锥体裁剪,而 SWEM 对其马匹禁用了此功能。这可以防止渲染你视野之外的马匹。

接着,它添加了遮挡剔除,这意味着隐藏在实心方块后的马匹也不会被渲染。在大型马厩或拥挤的畜棚中,这是收益最大的部分——墙壁、马厩门和建筑物会隐藏许多以前需要完整渲染的马匹。

即使所有马匹都可见,SwemCull 仍能提升性能。它将一些昂贵的逐骨骼渲染操作替换为缓存版本,在产生完全相同视觉效果的同时,每帧做了更少的工作。无论你是站在马群中间还是看一匹马,这部分优化都会有所帮助。

🎚️ 预设:平衡 FPS 与视觉质量

通过一条命令即可在视觉质量与性能之间做出选择,例如 /swemcull preset balanced。

预设 马具 鬃毛/尾巴 剔除距离 最佳适用场景
quality 48 永不 永不 最高视觉质量
light 34 50 92 小幅度 FPS 提升,几乎无可见变化
balanced ⭐ 24 36 80 推荐给大多数玩家
aggressive 14 22 56 大型马厩
extreme 6 10 36 最高性能

小的装饰细节会被优先减少,因为它们在远处几乎不可见,但仍然消耗性能。马匹本身会保持可见更长时间,以避免明显的突然出现。

🛡️ 盔甲、马衣、护腿和翅膀永远不会被隐藏,因此即使从远处看,马匹看起来也是完整的。

⌨️ 命令与配置

命令 功能
/swemcull 显示当前状态
/swemcull preset 切换预设
/swemcull adaptive <fps> 自动维持你的目标 FPS
/swemcull overlay 显示实时 FPS、帧时间与马匹数量
/swemcull toggle 启用或禁用模组
/swemcull advanced benchmark 自动测量关闭/平衡/极致模式,约需 35 秒
/swemcull advanced 调整各个距离参数和高级选项

在 NeoForge 1.21.1 上,所有设置也可通过“模组”菜单进行配置。如果你愿意,也可以手动编辑 config/swemcull-client.toml 文件。

🔌 兼容性、版本与前置模组

SwemCull 是纯客户端模组,可在多人游戏中使用,对现有世界安全,且不会改变游戏玩法。它可以与 Sodium、Embeddium、Iris、Oculus、EntityCulling、ModernFix 和 FerriteCore 等模组一同运行,并支持 SWEM Addendum 的品种。

Minecraft 加载器
1.21.1 NeoForge
1.20.1 Forge & NeoForge

前置模组

模组 备注
SWEM 或 SWEM Lite SwemCull 会自动检测安装了哪一个
GeckoLib SWEM 所需
Player Animation Library SWEM 所需,但未被列为其依赖项

注意: 在 NeoForge 1.20.1 上,请使用 Forge 版本的 Player Animation Library。虽然没有 NeoForge 版本,但 Forge 版本可以正常工作。

❓ 常见问题

为什么 SWEM 如此卡顿? 每匹 SWEM 马都是一个拥有 179 个独立骨骼的 GeckoLib 模型,且无论马在何处,SWEM 每帧都会重新绘制每一个骨骼。性能开销与加载的马匹数量成正比,因此一个马厩或繁育设施造成的帧率下降远高于同等数量的原版生物。SwemCull 会移除那些你永远不会看到的渲染工作。

如何提高 SWEM 中的 FPS? 安装 SwemCull 并运行 /swemcull preset balanced。在测试中,站在 32 匹马群中时,帧率从 77 FPS 提升到 117 FPS;站在 60 格之外时,帧率提升到 188 FPS,且所有马匹仍然完全可见。墙壁后面或视野之外的马匹将不再消耗性能。如果你需要更多提升,/swemcull preset aggressive 会进一步收紧距离参数。

服务器需要安装此模组吗? 不需要。SwemCull 是一个客户端模组。它只改变你本机渲染马匹的方式,因此可以在任何多人服务器上使用,无需服务器安装。

SwemCull 是否支持 SWEM Lite? 是的。SwemCull 会检测你使用的版本,并对两者应用相同的优化。SWEM Lite 使用与完整版 SWEM 相同的 GeckoLib 渲染器和相同的马匹模型,因此它具有相同的性能瓶颈,并能获得相同的收益。

马匹的外观会改变吗? 近距离不会。在较远距离时,像马具、鬃毛和尾巴等装饰细节会被逐步简化。盔甲、马衣和翅膀始终会显示,因此远处的马匹看起来依然穿戴整齐,而不是光秃秃的。

当我直接看着马匹时,它还能提升性能吗? 可以。剔除只对你看不到的马匹有帮助,但 SwemCull 也会缓存 SWEM 最昂贵的逐骨骼渲染工作。这部分优化适用于屏幕上的每一匹马,这就是为什么站在马群中帧率仍能提升约 55%。

SwemCull 是否支持 SWEM Addendum? 是的,自 1.0.3 版本起支持。Addendum 的每个品种都会获得与 SWEM 原版马匹相同的处理,包括剔除、距离细节分级和逐骨骼缓存。Addendum 向世界添加了大量马匹,这正是本模组的用武之地。如果你使用 Addendum,请运行 1.0.4 或更高版本。 早期版本至少有一个仅在那种组合下才出现的 bug——最近一次是,当安装了毛色包时,同品种、同马具的两匹马可能会共享一个毛色。此问题由 Addendum 的一位管理员报告,并在 1.0.4 版本中修复。

EntityCulling 不是已经能隐藏墙后的马了吗? 对 SWEM 的马无效。EntityCulling 会跳过任何选择退出剔除的实体,而 SWEM 的马正是这样做的——所以 EntityCulling 从未隐藏过它们,即使在已经包含它的整合包中也是如此。SwemCull 自己处理 SWEM 马匹,两者可以毫无问题地协同工作。

当我移动时,马匹会突然出现或消失。 使用 /swemcull advanced cull 92 增加剔除距离,或切换到 /swemcull preset light。

当我转过墙角时,马匹出现得太晚。 使用 /swemcull advanced occlusion off 禁用墙体剔除。所有其他优化将继续生效。

我的 SWEM Addendum 马匹是纯黑色的。 那是缺少材质包,不是 SwemCull 的问题。Addendum 提供了品种模型,但没有毛色贴图——这些来自一个独立的社区资源包,可从 Addendum 自己的页面链接获取。你可以通过一条命令确认:/swemcull toggle 可以立即关闭此模组,如果马匹仍然是黑色的,那就不是我们的问题。

自适应模式在没有马匹时也会降低我的画质。 在 1.0.3 版本中已修复。自适应模式现在会在更改任何设置前检查屏幕上实际有多少匹马,当马匹很少时会恢复细节,在你加入世界后等待几秒钟,并忽略游戏暂停或处于后台时的帧数。

自适应模式一直降低我的画质,尽管我的 FPS 很正常。 在 1.0.4 版本中已修复。如果你限制了帧率或保持 VSync 开启(这是默认设置),旧版本会将该稳定的 60 帧解读为游戏运行吃力,并持续剥离马匹的细节,而且是永久性的。现在它能识别帧率限制并保持你的设置不变。

它能与光影一起使用吗? 可以。SwemCull 已与 Iris、Sodium、EntityCulling、ModernFix 等其他流行的性能模组一起测试过。

它安全吗? 安全。SwemCull 只改变马匹的渲染方式。它从不修改 AI、世界数据、实体或服务器。

由 ItzAdoman 制作 · 基于 LGPL-3.0 许可 · 不包含 SWEM 或 GeckoLib 源代码。