跳到正文

实体剔除

Entity Culling

使用异步路径追踪隐藏不可见的方块和实体

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

Entity Culling Banner

Discord
GitHub
GitHub
GitHub

Divider
About

Minecraft 会跳过渲染你身后的物体,那么为什么还要渲染那些被墙壁或天花板挡住、你根本看不见的东西呢?

该模组引入了异步路径追踪,用于高效判断玩家实际能够看见的内容。它利用其他可用的 CPU 核心,实时计算视线可见性,并消除隐藏方块实体和实体所产生的不必要绘制调用与处理。

根据实体数量和所在位置的不同,这可以大幅提升帧率。

Divider

Features

异步路径追踪

  • 使用空闲的 CPU 线程计算可见性
  • 与主游戏线程并行运行,不会造成阻塞(每隔几刻,主线程会收集所需数据)
  • 实时更新可见性数据,将突然出现的情况降至最低

实体刻优化

  • 降低不可见实体对客户端的影响
  • 完全可配置,并兼容大多数模组
  • 不会影响服务端模拟、农场或生物行为

完全可配置

  • 可以在配置界面中启用或禁用该模组的所有功能
  • 将不应被剔除或停止刻的实体和方块实体加入白名单
  • 使用快速图像或自定义树叶时,可以选择将树叶视为 Entity Culling 的实心方块。这有助于提升森林区域的性能

Essential

Divider

Compatibility & Dependencies

| Minecraft | 加载器 | 状态 | 版本 | 备注 |
|—————|———————–|—————–|———-|————————————-|
| 1.19.4+ | Fabric/Forge/NeoForge | ✅ 支持 | 最新 | |
| 1.16.5-1.19.2 | Fabric/Forge | ❌ 不支持 | 过时 | 未来某个时候可能会更新 |
| 1.12.2/1.8.9 | Forge | ❌ 不支持 | 过时 | 未来某个时候可能会更新 |
| 1.7.10 | Forge | ❌ 不支持 | 过时 | 无更新计划 |
| b1.7.3 | Babric | ❌ 不支持 | 过时 | 无更新计划 |

Divider

Screenshots / Media

Stage View
启用与未启用 EntityCulling 的直接对比。测试在 Scarland(Hermitcraft 第九季)中进行,渲染距离设置为 16 个区块。除 EntityCulling 外,还使用了 Sodium、Iris 和 ImmediatelyFast 模组,运行于 Minecraft 1.21.5 和 Fabric 模组加载器。

Divider

Known Issues

客户端实体(通常被魔法模组用于动画)可能表现异常。请通过配置界面将相关实体加入 tick 剔除和/或实体剔除的白名单。如果发现任何表现异常的实体,请考虑在 Github 上报告其 ID,以便纳入未来更新。

你还需要将渲染范围远超其正常边界的方块实体加入白名单。例如原版信标、机械动力的滑轮以及某些植物魔法方块。

Divider

FAQ

是否需要在服务端安装?

不需要。这是一个完全客户端侧的模组,不需要在服务端安装。

这会影响生物行为或农场吗?

不会。此模组仅跳过实体的渲染,对其逻辑没有任何影响。生物会照常生成、移动和掉落物品。你的农场和其他游戏机制将不受影响。tick 剔除功能完全限于客户端世界,因此不会影响服务端模拟。

我在 Sodium 中启用了“Use Entity Culling”——这还有帮助吗?

是的!虽然 Sodium 会根据已加载的区块执行基本的可见性检查,但此模组更进一步。它会分析实际的视线可见性,跳过那些在可见区块内但对玩家实际不可见的实体。这是一种更激进、更准确的方法。

如何测试此模组的性能影响?

在控制菜单中,你可以绑定一个调试按键,以便随时开启和关闭该模组。这样你无需重启游戏即可对比启用和未启用模组时的性能。这也可用于检查可见性问题是由此模组还是其他模组引起的。

如果你使用的是一台非常老旧、运行 Minecraft 已经十分吃力的电脑,可以考虑这样做。当 CPU 已经满载时,就没有多余的 CPU 时间来运行可见性计算了。除此之外,该模组绝不会对游戏性能造成负面影响;最糟的情况也只是完全没有效果,比如场景中根本没有可剔除的内容。

F3 界面中的数字似乎不太对,这是怎么回事?

F3 调试界面中的数字(在较新版本中默认隐藏,可通过 F3+F6 开启)是在内部收集的,因此不一定能准确反映实际的渲染数量。例如,启用光影后,由于还会进行阴影渲染,数字就会更高。
另外请注意,该模组会尽量采取谨慎的判断方式,因此距离墙壁或天花板过近的实体可能仍会穿过它们进行渲染,因为存在发生穿模的可能性。

为什么这个模组运行在 CPU 上,而不是 GPU 上?

这样做的目标是降低 GPU 负载,并减少 GPU 与 CPU 之间不必要的数据传输。执行这些计算很可能会增加 GPU 负载以及 CPU 主(渲染)线程的负载。不过,如果你能证明我是错的,欢迎创建 PR,提交基于 GPU 的实现。说实话,我既没有足够的相关知识,也没有时间亲自实现这一功能。

Divider

Credits & license

👤 感谢 RoboTricker 提供了 Transport-Pipes 插件,为本模组奠定了基础。

👤 感谢 vicisacat 完成了 Babric Beta 1.7.3 的移植。

👤 感谢 Pelotrio 完成了 Forge 1.7.10 的移植。

👤 感谢 GitHub 上所有优秀的翻译者和贡献者!


Link

📄 许可证:tr7zw Protective License

你可以自由地将此模组用于托管在 Modrinth 和 CurseForge 上的整合包,或用于 YouTube 视频,无需事先获得许可。请勿在其他任何地方重新分发 JAR 文件!

评论

登录后评论和评分

vicisacat 的其他作品

查看全部 →