[SBW] 科莫多渲染加速器

[SBW] 科莫多渲染加速器

将卓越战争渲染性能提升5倍至30倍

性能

Komodo

Komodo 是一款客户端专用的 Minecraft 模组,旨在加速 Superb Warfare (SBW) 载具的渲染。它将默认的每帧 GeckoLib 载具绘制替换为 GPU 实例化的 Flywheel 路径,从而大幅降低坦克、卡车、直升机等大规模载具集群对 CPU 和渲染线程的占用。可提供 5-30 倍的性能提升。

该模组从单一源码树构建出两个版本:

  • Minecraft 1.20.1 (Forge)
  • Minecraft 1.21.1 (NeoForge)

功能说明

对于每辆 SBW 载具,Komodo 会一次性烘焙 GeckoLib 模型,然后通过 Flywheel 的实例化器进行绘制,而不是每帧重新遍历和计算每根骨骼。

  • 静态车身骨骼会合并为单个网格,作为一个实例化的车身进行绘制。
  • 运动骨骼(车轮、履带、炮塔、炮管、旋翼等)会成为跟随动画的独立动态实例。
  • 相同的骨骼网格(例如许多履带链接)会共享一个网格和一个实例化器。
  • 在较低细节(LOD)模型上,履带段会被烘焙到静态车身中,因为远距离时履带滚动并不明显。

在实例化路径之上,它还增加了三项优化:

  • 休眠机制:停放且未使用的载具(空载、静止、无动画)会被冻结并停止更新,直到检测到任何相关状态变化(驾驶员、移动、旋转、炮塔或火炮瞄准、后坐力、AI 目标或开火)。这是中断驱动的,因此冻结的载具几乎不消耗资源。
  • 车库池:休眠、静止的载具会被一次性烘焙到共享的 GPU 缓冲区中,并通过单次调用进行绘制,同时定期重新光照和后台压缩。(目前存在缺陷)
  • 保留后备方案:当启用光影包(Iris 或 Oculus)时,会跳过原始实例化绘制,改用保留的顶点缓冲路径,以确保载具仍能正确渲染。不过,我不推荐使用此方案。

它还包含一个小型游戏修复,即缓存混入(VehicleGunDataCacheMixin),用于缓存 SBW 的枪支数据映射,而不是每辆载具每 tick 多次重建。这有助于减少 GC 卡顿。

配置项

Komodo 会写入一个配置文件 config/komodo.toml,位于 [dormancy] 部分下。

  • probeVehicles(字符串列表,默认为空):这些载具实体 ID 在停放、空载且未触碰时会自行持续动画。这些是中断驱动唤醒路径无法观察到的唯一载具,因此它们会获得廉价的周期性重新检查,而不是保持冻结。 示例:["superbwarfare:some_idle_animated_vehicle"]
  • probeAllVehicles(布尔值,默认为 false):当为 true 时,无论上述列表如何,每辆载具都会被周期性重新检查。仅当停放载具看起来卡在动画中间且你不确定要添加哪个 ID 时,才用于诊断。

大多数配置都不需要这两个选项,因为标准载具可以干净地冻结,并在任何真实状态变化时唤醒。

此外,还有运行时开关和基准测试工具,用于调整和性能分析:

  • /kmodoc flywheel on|off、/kmodoc dormancy on|off、/kmodoc garage on|off
  • /kmodoc profile on|off、/kmodoc report、/kmodoc run <label> <seconds>、/kmodoc ab <seconds>
  • /kmodo garage <count> [type|mix] [spacing] 和 /kmodo clear 用于生成和移除测试车队

兼容性说明

  • 仅支持 0.8.9+ 版本。0.8.8 版本将无法运行。
  • 与 ImmediatelyFast 不兼容。
  • 与 Voxy 不兼容,请使用 Flywheel 实例化后端。

来源

此渲染器是 Warfactory Modern Core 模组中“Kmodo”(原拼写错误)系统的直接移植,将其独立提取为单独的模组。