快速图像帧

快速图像帧

优化物品展示框、地图物品展示框的帧率。最初是为优化ImageFrameClient模组而制作。修复了IFC模组与ImmediatelyFast之间的不兼容问题。

优化

Fast ImageFrames

与 ImageFrame Client 模组(作者 LOOHP)搭配使用的最佳模组。同时修复了 ImageFrame Client 与 ImmediatelyFast 之间的不兼容问题。Quilt 支持目前正在开发中。

如果你在使用该模组时遇到任何问题,或有任何建议,请通过 Discord 私信我。

在由物品展示框组成的墙面前,帧率低且卡顿(Fabulously Optimized 基础整合包)。 Fabulously Optimized + Fast ImageFrame:帧率几乎翻了两番,而且更加稳定。 物品展示框和地图墙的渲染速度最高提升 50 倍,外观与原版一致。

Fast ImageFrames 是一个客户端 Fabric 模组。大型地图画墙、ImageFrame 服务器以及摆满物品展示框的商店不再拖慢你的帧率。服务器端无需安装任何东西,屏幕上也不会有任何变化:每一项功能都经过与原版截图的对比验证。

功能

物品展示框与地图

  • 地图图集:地图纹理被打包进少数几个大纹理中,因此一整面地图墙只需少量绘制调用即可绘制完成,而不是每张地图一次调用。
  • 烘焙地图墙:不会变化的展示框只绘制一次,然后像地形一样重放,而不是每帧逐个处理。展示框每秒会被检查数次,一旦有变化就立即重建。在没有光影包的情况下,烘焙后的墙体保留在显存中并直接从显存绘制。
  • **动态图像(ImageFrame GIF)**在播放时保持烘焙状态:只交换纹理坐标。
  • 烘焙物品展示框(1.21.4 至 1.21.11):放置任何物品(方块、工具、附魔物品、旗帜、盾牌、指南针、时钟……)的展示框也会被烘焙。
  • 更轻量的展示框模型:两个展示框之间的边缘以及展示框背面在不可见时不会被绘制。修改展示框的资源包(隐形展示框等)会被尊重。
  • 隐藏的展示框会被跳过:被方块遮挡的展示框不会被绘制(无论是否烘焙),借助游戏(或 Sodium)的可见性判断以及逐方块的检测。
  • 发光物品展示框同样适用:普通和发光物品展示框以相同方式优化,光照变化(火把、动态光源)不会触发任何重建。
  • 无用的地图更新被消除:当数据包只是移动标记时,游戏不再重建整张地图纹理。

ImageFrame Client 高清图像

安装 ImageFrame Client 后,Fast ImageFrames 会处理其高清图像:

  • 细节层次(LOD):每张图像按其屏幕尺寸所需的分辨率绘制。远处的图像不占用自己的显存,近处的图像则更加清晰。
  • 内存与磁盘缓存,每个服务器一个文件夹:下次加入时图像会立即显示,无需重新下载(仅当地图仍然匹配时)。
  • 智能下载:图像按其出现的顺序分批请求,被拒绝的请求会重试。

实测提升

游戏内测试,854x480 窗口,RTX 4060 笔记本,Minecraft 1.21.8:

场景 原版 Fast ImageFrames
1600 张地图的墙(40x40) 13 FPS 725 FPS
使用 ImageFrame Client 的 1600 张高清地图墙 18 FPS 656 FPS
动态墙,400 张地图,每 tick 一张图像 60 FPS 687 FPS
400 个物品展示框,放置 12 种物品 94 FPS 512 FPS

在真实的 Paper 服务器上,一面由 2160 张高清图像(每张 4000 px)组成的墙:仅使用 ImageFrame Client 时约 30 FPS,使用 Fast ImageFrames 时约 800 FPS。

兼容性

  • Fabric 上的 Minecraft 1.21.4 至 1.21.11 以及 26.1 至 26.3。
  • Sodium、Lithium、Iris(即使开启光影)、Immediately Fast、Entity Culling、FerriteCore、ETF、EMF 等(应与所有模组兼容)。
  • 关闭任何“自定义物品展示框”渲染(Immediately Fast 除外),否则模组可能无法正常工作。

已知不兼容

  • 无

设置

所有内容都可以在 Mod Menu 中开关,每组设置一页,每个选项都在其工具提示中有说明。支持英语和法语。

许可证

LGPL-3.0。源代码:https://github.com/Palmine38/FastImageFrame