
现代化 UI
现代桌面图形应用框架与底层3D图形引擎
查看大图
Modern UI by Icyllis Milica
描述:
Modern UI(由 Icyllis Milica 开发)是一个桌面应用程序框架,专为独立的 2D 和 3D 渲染软件开发而设计。它利用现代 3D 图形 API 和技术,提供高性能的实时渲染。此外,Modern UI 改进并优化了 Google Android 使用的一组功能,以及其自有的支持国际化的文本引擎。
Modern UI for Minecraft 是一个基于 Modern UI Core Framework 和 Modern UI Core Extensions 的 Minecraft 模组。它在 Minecraft 环境中提供 Modern UI 引导程序,并基于 Forge/Fabric 提供模组 API,以便在 Minecraft 中创建强大的图形用户界面。
对于客户端,按 Ctrl+K 或 ⌘+K(默认)打开操作中心屏幕以配置 Modern UI。(注意,您可以滑动偏好设置屏幕来配置字体)
此模组还包含一个专为 Minecraft 设计的强大文本布局引擎和文本渲染系统。该引擎提供了处理 Unicode 文本的适当方法,并让您在任何比例下(2D/3D)都能获得更易读的文本。具体来说:
- 实时预览和重新加载 TrueType/OpenType 字体
- 更好的字体回退实现
- 抗锯齿文本和 FreeType 字体提示
- 在 2D/3D 中使用改进的 SDF 文本渲染(也支持批量渲染)
- 计算设备空间中的精确字体大小以进行原生字形渲染
- 使用 Google Noto Color Emoji,并支持所有 Unicode 15.1 表情符号(2023 年 9 月 12 日)
- 可配置的双向文本启发式算法
- 可配置的文本阴影和原始字体大小
- Unicode 换行和 CSS 换行及断词
- 快速、精确且异步的 Unicode 文本布局计算
- 更快、更节省内存的字形矩形打包算法
- 使用真实的灰度纹理(每像素 1 字节,而 Minecraft 为 4 字节)
- 兼容 OptiFine、Sodium(Rubidium)、Iris(Oculus)及许多模组
- 兼容 Minecraft 的 JSON 字体定义(位图字体、TTF 字体)
此外,此模组还提供了许多用于提升游戏性能和游戏体验的实用功能。目前,我们拥有:
- 更改屏幕背景颜色
- 对屏幕背景图像应用高斯模糊
- 屏幕背景的淡入动画
- 更多窗口模式:全屏(无边框)、最大化(无边框)
- 窗口不活动(失去焦点)和最小化时限制帧率并降低主音量
- 打开背包时暂停单人游戏
- 将 GUI 缩放选项更改为滑动条并提供提示文本
- 当 Minecraft 加载并到达主菜单时播放“叮”的声音
- 在原版的选择列表和 Forge 的滚动面板中启用平滑滚动
- 按“C”键缩放,与 OptiFine 相同
- 所有文本字段支持撤销/重做(Ctrl+Z/Ctrl+Y)和 Unicode 字素/单词迭代器
- 播放本地音乐,允许进度条定位和查看频谱
- 在聊天中支持 Discord/Slack/GitHub/IamCal/JoyPixels 表情符号快捷码
- 精美的工具提示样式
- 选择圆角边框或普通边框(带阴影效果)
- 添加标题分隔并控制标题行间距
- 自动换行和超出屏幕时自动垂直滚动
- 居中标题行,支持从右到左布局方向
- 精确定位工具提示到像素网格(平滑移动)
- 更改背景颜色和边框颜色(支持渐变和动画)
核心特性:
- 多图形 API 的 2D 图形库
- 着色语言的中间表示和抽象语法树
- 符号距离函数和矢量图形渲染
- 图像后处理效果
- 快速矩阵和向量计算
- 图像格式转换
- 动画和过渡框架
- 事件循环和多线程框架
- 文本整形和复杂文本布局引擎
- MVVM 和生命周期处理
- 自动 RTL(从右到左)UI 布局
- Markdown(CommonMark)渲染支持
Minecraft 的现代文本引擎:
- 支持彩色表情符号,使用 Google Noto Color Emoji 15.1,基于 Unicode 15.1 表情符号列表;
- 支持聊天中的表情符号快捷码,例如 :rofl: 表示大笑,支持 Discord 和 Slack 快捷码;
- 您可以使用 TTF 或 OTF 字体,配置字体基础大小,设置基线偏移,并设置是否去除文本阴影;
- 可缩放矢量图形,自动切换分辨率级别(最高 96px),原生(非合成)粗体和斜体渲染;
- 支持 3D 世界中的距离场文本渲染,但在 2D GUI 中锐化字体图集;这增强了以前的功能: *在任何比例下平滑渲染所有字符(例如当您远离标牌时,或 GUI 中非常小的文本)
- 支持多层文本,一起布局多个段落,流式布局算法,并引入快速布局缓存;
- 支持快速数字替换、高精度布局和对齐,以及平滑绘制快速变化的数字(固定宽度);
- 支持 mipmapping、抗锯齿、线性采样和超采样抗锯齿(SSAA);
- 更好、更高效地布局双向文本段落(例如阿拉伯语、意第绪语);使用锐化的字体图集;
- 可配置的双向文本启发式算法,以更精确地控制文本方向;支持修复无效的代理对;
- 使用 HarfBuzz 文本整形,支持组合字符渲染,如泰语、天城文、孟加拉语和泰米尔语;
- 支持字素簇断开,支持 Unicode 换行算法;
- 支持基于上下文和区域设置的断词和换行;
- 支持像素化字体渲染,支持固定分辨率级别,支持像素对齐;
- 支持位图替换,快速变化的数字平滑渲染,支持表情符号渲染;
- 优化布局算法,在 GUI 中绘制文本时将 FPS 提高约 10%
- 使用灰度像素存储纹理,减少 GPU 内存使用
- 减少不必要的 RAM 使用量并大大减少对象创建
自定义字体
按 Ctrl+K 或 ⌘+K(默认)打开操作中心,转到偏好设置,滑动屏幕到第二页,您将看到字体设置。
- 首选字体族是您最想要的。它可以是操作系统字体或 TrueType/OpenType 字体(集合)文件。
- 当首选字体族不可用时,使用回退字体族。
现代文本引擎:
Modern UI 遵循 Minecraft 的 JSON 字体定义,仅忽略字形提供程序类型 'legacy_unicode' 和 'unihex'。上述提到的 Modern UI 字体族将作为 Minecraft 字体的回退字体族。默认字体行为(在偏好设置 > 文本布局中)为您提供了从 Minecraft 默认字体(minecraft:default)中移除某些字形提供程序的选项。要避免使用原版 ASCII 字体,只需将其设置为保留其他。请注意,此选项仅在您未启用强制 Unicode 字体时有效。如果您想使用原版 Unicode 字体,只需下载 GNU Unifont 的 OTF 版本。
Minecraft 的附加特性:
- 支持设置窗口模式,如全屏无边框、窗口无边框;
- GUI 屏幕背景淡入动画和 2 遍高斯卷积模糊效果,可配置背景渐变颜色;
- 平滑圆角工具提示样式,支持 RTL 布局,可配置背景和边框颜色;
- 游戏加载时播放“叮”的声音效果;
- 支持打开背包时暂停游戏;
- 新的 GUI 缩放算法和滑块 GUI 缩放控件(不限于偶数,兼容 OptiFine);
- 为原版和 Forge 滚动面板添加平滑滚动;
- 异步网络处理器;服务器自动关闭;
- 所有功能均可通过配置文件或操作中心屏幕配置(默认快捷键 Ctrl+K)
Modern UI for Fabric 移除了一些功能(与 Forge 版本相比):
- 类似 OptiFine 的缩放,隐藏 GUI 中的准星
- 转储更多调试信息、崩溃报告扩展
与 Caxton 文本渲染技术的比较
Caxton 模组以其 MSDF 文本渲染而闻名,您可以在 Caxton 和现代文本引擎之间进行选择。
相似之处:
- 两者都使用 HarfBuzz 文本整形
- 两者都支持 Unicode 文本处理
- 两者都支持 Unicode 换行和字素簇断开
- 两者在光栅渲染模式下兼容 Iris
- 两者都有高效的矩形打包算法,优于 Mojang 的
不同之处:
- Caxton 使用较新的 HarfBuzz,而我们使用较旧的(捆绑在 JDK 17 中,而 JDK 21 中已更新)
- Caxton 使用多通道 SDF,渲染放大文本更清晰,而我们则渲染过度圆润
- 我们兼容 OptiFine,而 Caxton 不兼容
- 我们支持彩色表情符号,而 Caxton 不支持
- 我们支持 FreeType 字体提示,而 Caxton 从不支持,字体提示有助于低分辨率显示器
- 我们支持完美采样屏幕空间中的原生字形图像,非常适合 2D 渲染
- 我们支持单通道 SDF 文本渲染,无需额外的 GPU 资源,我们始终使用 1bpp 纹理
- 我们有智能 SDF 采样方法用于缩小文本,而 Caxton 没有
- 无需等待 MSDF 纹理生成,只需单击即可在游戏中切换字体
- 我们支持各种文本方向和换行策略
- 我们不使用额外的原生库,因此 Modern UI 可在 macOS 上运行
- 我们的布局性能略高于 Caxton,并且使用更少的 RAM
模组集成与兼容性:
兼容(您应该注意):
OptiFine、Sodium、Iris、Create、AoA3
如果启用了着色器,在 3D 中使用现代文本着色器 将自动禁用,这可能导致发光文本的轮廓变得不可见。
具有相似功能的模组将被替换:
- Blur (版本 1.15 ~ 1.21.8;原因:功能完全覆盖,优化更好)
- Blur 模组声称使用高斯模糊,但我发现它实际上使用 2 遍盒式模糊。而 Modern UI 提供真正的 1 遍高斯模糊,优于 Blur 模组。
- Controlling (版本 1.15;原因:另一种实现方式)
- TipTheScales (版本 1.15 ~ 1.21.8;原因:另一种实现方式)
- Inventory Pause (版本 1.18 ~ 1.21.1;原因:另一种实现方式)
- Emojiful (版本 1.18 ~ 1.21.1;原因:自 3.5.0 起我们支持彩色表情符号渲染;此外,Emojiful 的代码质量很差,并在各处破坏您的游戏;您可能会遇到游戏冻结、高 VRAM 使用、渲染故障以及许多性能和模组兼容性问题)
- Borderless Window (版本 1.18 ~ 1.21.4;原因:另一种实现方式)
- Ding (版本 1.18 ~ 1.21.4;原因:另一种实现方式)
- SmoothScrollingEverywhere (版本 1.18 ~ 1.19;原因:另一种实现方式)
- FPS Reducer (版本 1.18 ~ 1.21.8;原因:另一种实现方式)
冲突与解决方案:
- Emojiful (版本 1.16 ~ 1.21.1;不建议使用 Emojiful;如果必须使用,请通过配置屏幕或引导属性禁用 Modern UI 文本引擎)
- Legendary Tooltips (版本 1.16 ~ 1.21.4;解决方案:通过配置屏幕禁用 Modern UI 工具提示)
- FeyTweaks (版本 1.18 ~ 1.21.1;解决方案:在 FeyTweaks 的 mixin 配置中禁用 TextRendererMixin)
- SmoothScrollingEverywhere (版本 1.18 ~ 1.19;解决方案:通过配置屏幕禁用 Modern UI 平滑滚动)
- Caxton (版本 1.18 ~ 1.21.8;解决方案:通过配置屏幕或引导属性禁用 Modern UI 文本引擎)
- ImmediatelyFast (版本 1.18 ~ 1.21.8;解决方案: 对于 1.18 ~ 1.21.4:禁用 ImmediatelyFast 的 hud_batching、font_atlas_resizing 和 fast_text_lookup;否则,您可能会遇到随机游戏崩溃; 对于 1.21.6 ~ 1.21.8:禁用 ImmediatelyFast 的 avoid_redundant_framebuffer_switching)
- Untranslated Items (版本 1.18 ~ 1.21.4;解决方案:通过配置屏幕禁用 Modern UI 文本组件缓存)
支持的 MC 版本:
- 积极维护:1.21.8、1.21.7、1.21.6、1.21.1、1.21、1.20.1、1.20
- 即将放弃:1.21.4
- 不再支持:1.21.3、1.21.2、1.20.6、1.20.4、1.20.2、1.19.4、1.19.2、1.18.2、1.18.1、1.18、1.17.1、1.16.5、1.16.4、1.16.3、1.16.2、1.16.1、1.15.2、1.14.4
本页所有描述均针对 Minecraft 1.20.1 及以上版本。某些功能在旧版本中可能缺失。
PC 要求(与 Minecraft 原版相同)
有些人因认为 Modern UI 需要较高的 PC 配置而不愿使用它。事实上,只要您能玩 Minecraft 原版,您绝对可以玩 Modern UI。除非您忘记更新 GPU 驱动程序。
- 操作系统:Windows 8.1+、带 X11 或 Wayland 的 Linux、macOS
- 架构:x64 或 arm64
- GPU:GeForce 210 或更高
- GPU 驱动程序:OpenGL 3.3+ 或 Vulkan 1.1+,更高更好
- Java:Java 17+,更高更好
常见问题:
问:默认字体行为和强制 Unicode 字体有什么区别?
答:首先,Modern UI 始终将 Unicode 字体重定向到 Modern UI 默认字体。在 1.19+ 中,默认字体行为是全部保留,然后 Minecraft 默认字体用于 ASCII 字符。保留其他意味着不再使用 Minecraft 默认字体,但额外的字体(例如某些小游戏地图中的字体)仍然可用。这就是与强制 Unicode 字体(忽略全部)的区别。
问:Modern UI 有很高的开销吗?Modern UI 会降低应用性能吗?
答:不会,Modern UI 对 CPU、GPU、RAM 和 VRAM 的使用没有显著影响。这是因为 Modern UI 本身优化良好,但同时,Modern UI 也提供了一堆新功能和效果。众所周知,Modern UI 框架比基于 Chromium 的应用更高效。 对于低端 PC,屏幕模糊效果可能影响性能,因为 Minecraft 原版不允许在渲染目标上生成 mipmap。即便如此,Modern UI 提供的模糊效果也比名为“Blur”的模组快得多。
问:如何禁用所有对原版的更改,我不想要这些功能。
答:只有 GUI 缩放算法和一些底层代码不可配置,任何其他功能都可以在操作中心屏幕(默认快捷键 Ctrl+K)或配置文件中禁用(游戏目录/config/ModernUI/),因为 Modern UI 本质上是一个框架。
问:这个模组是仅客户端模组吗?我需要在其服务器上安装吗?
答:自 MC 1.19.2 起,不再需要在服务器上安装此模组。所有服务器功能都已弃用,并已实现到 Forge API 和 Fabric API 中。
问:如何开始基于 Modern UI 开发我的模组?
答:该项目仍处于早期阶段,规范仍在编写中。您可以查看 JavaDoc。示例包括 Modern UI 本身(操作中心)和 Flux Networks。如有任何问题,欢迎加入我们的 Discord 服务器。
问题:所有问题报告都应发送到 GitHub issue 跟踪器。
加入我的 Discord 服务器进行讨论和提出建议。
正在加载版本记录…
















正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。