跳到正文

Modern UI

作者:BloCamLimb

现代桌面图形应用框架与底层 3D 图形引擎

收藏

截图

介绍

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

logo

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 line-break 和 word-break
  • 快速、精确且异步的 Unicode 文本布局计算
  • 更快速且更节省内存的字形矩形打包算法
  • 使用真正的灰度纹理(每像素 1 字节,而 Minecraft 使用 4 bpp)
  • 兼容 OptiFine、Sodium(Rubidium)、Iris(Oculus)以及许多模组
  • 兼容 Minecraft 的 JSON 字体定义(位图字体、TTF 字体)

此外,该模组还提供了许多能够改善游戏性能和游玩体验的实用功能。目前包括:

  • 更改界面背景颜色
  • 对界面背景图像应用高斯模糊
  • 界面背景淡入动画
  • 更多窗口模式:全屏(无边框)、最大化(无边框)
  • 窗口处于非活动状态(失去焦点)或最小化时,限制帧率并淡出主音量
  • 打开背包时暂停单人游戏
  • 将 GUI 缩放选项改为滑块,并提供提示文本
  • Minecraft 加载完成并进入主菜单时播放“叮”声
  • 为原版选择列表和 Forge 滚动面板启用平滑滚动
  • 按下“C”键进行缩放,效果与 OptiFine 相同
  • 为所有文本框提供撤销/重做(Ctrl+Z/Ctrl+Y)以及 Unicode 字素/单词迭代器
  • 播放本地音乐,并支持拖动进度和查看频谱
  • 在聊天中支持 Discord/Slack/GitHub/IamCal/JoyPixels 表情符号短代码
  • 精美的工具提示样式
  • 选择圆角边框或普通边框(带阴影效果)
  • 添加标题换行并控制标题行间距
  • 超出屏幕时自动换行并自动垂直滚动
  • 标题行居中,并支持 RTL 布局方向
  • 将工具提示精确定位到像素网格(平滑移动)
  • 更改背景颜色和边框颜色(支持渐变和动画)

 

核心功能:

  • 支持多种图形 API 的 2D 图形库
  • 着色语言的中间表示与 AST
  • 符号距离函数与矢量图形渲染
  • 图像后处理效果
  • 快速矩阵与向量计算
  • 图像格式转换
  • 动画与过渡框架
  • 事件循环与多线程框架
  • 文本整形与复杂文本布局引擎
  • MVVM 与生命周期处理
  • 自动 RTL(从右到左)UI 布局
  • 支持 Markdown(CommonMark)渲染

 

Minecraft 的现代文本引擎:

  • 支持彩色 Emoji,使用 Google Noto Color Emoji 15.1,基于 Unicode 15.1 Emoji 列表;
  • 支持聊天中的 Emoji 短代码,例如 :rofl: 表示捧腹大笑,支持 Discord 和 Slack 短代码;
  • 你可以使用 TTF 或 OTF 字体,配置字体基准大小,设置基线偏移,并设置是否去除文字阴影;
  • 可缩放矢量图形,自动切换分辨率级别(最高 96px),原生(非合成)粗体和斜体渲染;
  • 在 3D 世界中支持距离场文本渲染,但在 2D GUI 中锐化字体图集;这增强了原有功能:

  *在任何缩放下平滑渲染所有字符(例如当你远离告示牌时,或 GUI 中非常小的文本)

  • 支持多层文本,将多个段落一起布局,流式布局算法,并引入快速布局缓存;
  • 支持快速数字替换、高精度布局与对齐,并平滑绘制快速变化的数字(固定宽度);
  • 支持 mip-mapping、抗锯齿、线性采样和超采样抗锯齿(SSAA);
  • 更好、更高效地布局 BiDi 文本段落(例如阿拉伯语、意第绪语);使用锐化字体图集;
  • 可配置的 BiDi 文本启发式算法,更精确地控制文本方向;支持修复无效代理对;
  • 使用 HarfBuzz 文本整形,支持组合字符渲染,例如泰语、天城文、孟加拉语和泰米尔语;
  • 支持字素簇断行,支持 Unicode 换行算法;
  • 支持上下文感知和基于区域设置的断词与换行;
  • 支持像素化字体渲染,支持固定分辨率级别,支持像素对齐;
  • 支持位图替换,平滑渲染快速变化的数字,支持 Emoji 渲染;
  • 优化布局算法,在 GUI 中绘制文本时提升约 10% 的 FPS
  • 使用灰度像素存储纹理,减少 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 界面背景淡入动画和两遍高斯卷积模糊效果,可配置背景渐变颜色;
  • 平滑圆角提示框样式,支持 RTL 布局,可配置背景和边框颜色;
  • 游戏加载完成时播放“叮”的音效;
  • 支持打开背包时暂停游戏;
  • 全新的 GUI 缩放算法和滑块式 GUI 缩放控件(不限制为偶数,兼容 OptiFine);
  • 为原版和 Forge 滚动面板添加平滑滚动;
  • 异步网络处理器;服务器自动关闭;
  • 所有功能均可在配置文件或操作中心界面中进行配置(默认快捷键为 Ctrl+K)

Modern UI for Fabric 移除了一些功能(与 Forge 版本相比):

  • 类似 OptiFine 的缩放功能,在 GUI 中隐藏准星
  • 导出更多调试信息,扩展崩溃报告

 

与 Caxton 文本渲染技术的比较

Caxton 模组以其 MSDF 文本渲染而闻名,你可以在 Caxton 和 Modern Text Engine 之间进行选择。

相似之处:

  • 都使用 HarfBuzz 文本整形
  • 都支持 Unicode 文本处理
  • 都支持 Unicode 换行和字素簇断行
  • 都兼容光栅渲染模式下的 Iris
  • 都拥有高效的矩形打包算法,进一步优于 Mojang 的算法

区别:

  • Caxton 使用更新版本的 HarfBuzz,而我们使用较旧的版本(随 JDK 17 一同提供,JDK 21 中已更新)
  • Caxton 使用多通道 SDF,放大文本时渲染效果更锐利,而我们的渲染效果会更加圆润
  • 我们兼容 OptiFine,而 Caxton 不兼容
  • 我们支持彩色表情符号,而 Caxton 不支持
  • 我们支持 FreeType 字体微调,而 Caxton 从不支持;字体微调有助于在低分辨率显示器上提升显示效果
  • 我们支持在屏幕空间中对原生字形图像进行完美采样,非常适合 2D 渲染
  • 我们支持无需额外 GPU 资源的单通道 SDF 文本渲染,始终使用 1bpp 纹理
  • 我们为缩小文本提供了智能 SDF 采样方法,而 Caxton 没有
  • 无需等待 MSDF 纹理生成,只需单击一下即可在游戏中切换字体
  • 我们支持多种文本方向判断规则和换行策略
  • 我们不使用额外的原生库,因此 Modern UI 可以在 macOS 上运行
  • 我们的布局性能略高于 Caxton,并且占用更少的 RAM

模组集成与兼容性:

兼容(请注意以下事项):

OptiFine、Sodium、Iris、Create、AoA3
如果光影处于启用状态,在 3D 中使用 Modern Text Shader 会自动禁用,否则会导致发光文本的轮廓变得不可见。

具有类似功能的模组会被替代:

  • Blur(版本 1.15 ~ 1.21.8;原因:功能覆盖全面,优化更好)
  • Blur 模组声称使用高斯模糊,但我发现它实际上使用的是两遍盒式模糊。而 Modern UI 提供真正的单遍高斯模糊,效果优于 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 起我们支持彩色 emoji 渲染;此外,Emojiful 的代码质量很差,会在各处破坏你的游戏;你可能会遇到游戏卡顿、显存占用过高、渲染故障以及许多性能和模组兼容性问题)
  • 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,因为他们认为 Modern UI 对电脑配置要求很高。事实上,只要你能玩原版 Minecraft,你就一定能玩 Modern UI。除非你忘记更新显卡驱动。

  • 操作系统:Windows 8.1+、带 X11 或 Wayland 的 Linux、macOS
  • 架构:x64 或 arm64
  • 显卡:GeForce 210 或更好
  • 显卡驱动:OpenGL 3.3+ 或 Vulkan 1.1+,越高越好
  • Java:Java 17+,越高越好

常见问题:

问:默认字体行为与强制 Unicode 字体有什么区别?

答:首先,Modern UI 始终将 Unicode 字体重定向到 Modern UI 默认字体。默认字体行为在 1.19+ 中为 KEEP ALL,此时 ASCII 字符使用 Minecraft 默认字体。KEEP OTHER 意味着不再使用 Minecraft 默认字体,但额外字体(例如某些小游戏地图中的字体)仍然可用。这就是与强制 Unicode 字体(IGNORE ALL)的区别。

问:Modern UI 开销高吗?会降低应用程序性能吗?

A:不会,Modern UI 不会显著影响 CPU、GPU、RAM 和 VRAM 的占用。这是因为 Modern UI 本身经过了良好的优化,同时还提供了大量新功能和效果。Modern UI 框架的效率已知高于基于 Chromium 的应用程序。
对于低端电脑来说,屏幕模糊效果可能会严重影响性能,因为 Minecraft 原版不允许在渲染目标上生成 mipmap。即便如此,Modern UI 提供的模糊效果仍然比名为“Blur”的模组快得多。

问:如何禁用对原版的所有改动?我不想要这些功能。

答:只有 GUI 缩放算法和部分底层代码无法配置,其他功能都可以在操作中心界面中禁用(默认快捷键为 Ctrl+K),也可以通过配置文件禁用(gameDir/config/ModernUI/),因为 Modern UI 本质上是一个框架。

问:这个模组是仅客户端模组吗?我需要在服务器上安装它吗?

答:从 MC 1.19.2 开始,已经没有必要再在服务器上安装这个模组了。所有服务端功能都已弃用,并已实现到 Forge API 和 Fabric API 中。

问:如何开始基于 Modern UI 开发我的模组?

答:这个项目目前仍处于早期阶段,规范也还在编写中。你可以查看 JavaDoc。示例包括 Modern UI 本身(操作中心)和 Flux Networks。如果你有任何问题,欢迎加入我们的 Discord 服务器。

问题反馈:所有问题报告都应提交到 GitHub issue tracker。

加入我的 Discord 服务器,参与讨论并提出建议。

评论

登录后评论和评分

BloCamLimb 的其他作品

查看全部 →