
SightCull
看不见就不渲染——跳过隐藏实体、方块实体、粒子和挖掘裂纹的光线投射遮挡剔除,提升FPS。客户端侧,正常游戏中不可见,带切换键和F3统计。
SightCull
看不见的东西,就不会被渲染。
Minecraft 会愉快地渲染每一堵一格厚墙后面的生物——房子里的村民、你脚下洞穴里的僵尸、隔壁房间里的箱子,甚至是你根本看不到的篝火烟雾。原版只会剔除视野锥体之外的内容,以及洞穴剔除能证明无法到达的整个区块部分。SightCull 弥补了这一差距:任何与你的相机没有视线路径的东西都会被完全跳过——没有模型、没有名牌、没有阴影、没有 GPU 工作。
这种效果在设计上就是隐形的。即使只有一丝可见性的东西也会正常渲染,而被隐藏的东西会在进入视野后约 35 毫秒内重新出现。如果你发现它正在工作,那这就是一个 Bug。
会被剔除的内容
- 实体 —— 生物、玩家、物品、盔甲架、物品展示框、画、显示实体……
- 方块实体 —— 箱子、告示牌、横幅、潜影盒、头颅、钟……
- 粒子 —— 烟雾、火焰、灰尘、药水漩涡、水滴……有一个特别之处:同一方块位置的所有粒子共享一次缓存的射线检测,因此一整条隐藏的烟柱只消耗一次射线
- 方块破坏裂纹 —— 有人在墙的另一边挖掘,对你没有任何消耗
- 名牌、阴影以及火焰/拴绳覆盖层会与其被剔除的所属对象一起消失
地形剔除则留给原版处理(将 SightCull 与 Sodium 搭配使用,可获得最强的完整组合)。
工作原理
当原版决定要渲染某个东西时,SightCull 会使用快速体素网格遍历,从相机向目标(略微膨胀的)边界框的中心和各个角发射射线。只有完全不透明的方块才会阻挡射线——玻璃、树叶、栅栏、台阶和流体都被视为可透视,因此该模组始终倾向于渲染。结果会按对象缓存并持续重新检查,且所有射线检测都受每帧预算限制,因此即使是 500 实体的刷怪塔也只会退化为廉价的缓存答案,而不是帧率尖峰。
剔除与投影无关:射线跟随实际的渲染相机,因此在第一人称、两种第三人称视角、从望远镜缩放到 Quake Pro 的任何 FOV、任何渲染距离以及两种图形后端(OpenGL 和实验性的 Vulkan 模式)下都是正确的——决定是在涉及图形 API 之前在 CPU 上做出的。
刻意永不剔除的内容
有些隐藏的东西仍会被刻意绘制,因为你能部分看到它们,或者隐藏它们会被视为 Bug:发光实体(轮廓线能穿透墙壁)、你正在骑乘的东西、信标和末地折跃门光束、你正在挖掘的方块、相机 4 格范围内的任何东西,以及可配置的白名单(默认包括末影龙、凋灵、末地水晶、浮漂、拴绳结)。
操作与配置
- F10 在游戏中切换剔除功能(可重新绑定)——非常适合前后 FPS 对比
- F3 显示实时统计:
SightCull: 34/120 E, 12/40 BE, 210/400 P hidden config/sightcull.json—— 各类别开关、剔除距离、重新检查间隔、射线预算,以及实体/方块实体白名单
值得了解
- 仅客户端。 可在任何服务器上使用;服务器逻辑、生物 AI、声音和碰撞箱均不受影响。它绝不会揭示任何额外内容——它只是跳过绘制你本来就看不到的东西。
- 经过真实测试: 源码附带一个自动化游戏内测试,它会启动游戏,将一头牛和烟雾粒子密封在石盒内,旁边放置相同的开放环境对照组,并断言只有被隐藏的那些被跳过——测试分别在第一人称、FOV 110 和第三人称下进行。
- 光影包: 被 SightCull 剔除的实体不会投射阴影贴图阴影(它们确实没有被提交)。如果某个特定场景让你困扰,可用 F10 切换。
- 需求: Minecraft 26.2、Fabric Loader 0.19.3+、Fabric API、Java 25。
采用 MIT 许可证——源码随每个版本一起提供。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。