跳到正文

Entity Culling Fabric/Forge

作者:tr7zw

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

收藏

介绍

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

Entity Culling Banner

Discord
GitHub
GitHub
GitHub

Divider

About

Minecraft 会跳过渲染你身后的东西,那为什么它还要渲染那些因为墙壁或天花板遮挡而仍然看不见的东西呢?

这个模组引入了异步路径追踪,以高效地判断玩家实际能看到什么。它利用其他可用的 CPU 核心,实时计算视线可见性,并消除对隐藏的方块实体和实体的不必要绘制调用/处理。

这可以大幅提升帧率,具体取决于实体数量以及你在世界中的位置。

Divider

Features

异步路径追踪

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

实体刻优化

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

完全可配置

  • 该模组的所有功能都可以在配置界面中开启/关闭
  • 可将不应被剔除或刻剔除的实体和方块实体加入白名单
  • 在使用流畅画质或自定义树叶时,有一个选项可以将树叶视为实体剔除的固体方块。这有助于提升森林地区的性能

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 外,还使用了钠、Iris 和 ImmediatelyFast,运行于 Minecraft 1.21.5 与 Fabric 模组加载器。

Divider

Known Issues

客户端实体(常用于魔法模组的动画效果)可能表现异常。请通过配置界面将相关实体加入刻剔除和/或实体剔除的白名单。如果发现表现异常的实体,欢迎在 Github 上报告其 ID,以便在后续更新中纳入处理。

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

Divider

FAQ

这个模组需要安装在服务端吗?

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

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

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

我在钠中启用了“Use Entity Culling”,这个模组还有用吗?

有用!虽然钠会基于已加载的区块进行基本的可见性检查,但此模组更进一步。它会分析实际的视线可见性,跳过那些位于可见区块内但玩家实际看不到的实体。这是一种更激进、更精确的方法。

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

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

如果你在一台已经很吃力运行 Minecraft 的老旧电脑上游戏,可以考虑这样做。当 CPU 已经满载时,就没有多余的 CPU 时间来进行可见性计算。除此之外,此模组不应给游戏带来负面性能影响,最坏情况下也只是没有可剔除的内容时毫无效果。

F3 的数字似乎不对,怎么回事?

F3 调试屏幕的数字(在较新版本中默认隐藏,可通过 F3+F6 开启)是内部收集的,不一定反映实际的渲染数量。例如,启用光影会因阴影渲染而导致数字偏高。
另请注意,此模组倾向于保守处理错误,因此过于靠近墙壁或天花板的实体可能会因可能穿模而透过它们渲染。

为什么此模组运行在 CPU 上而不是 GPU 上?

目标是降低 GPU 负载,并减少 GPU 与 CPU 之间不必要的数据传输。进行计算可能会增加 GPU 负载,以及 CPU 主(渲染)线程的负载。但欢迎你证明我错了,并提交一个基于 GPU 实现的 PR。老实说,我缺乏自行实现这一功能所需的知识和时间。

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 文件!

评论

登录后评论和评分

tr7zw 的其他作品

查看全部 →