Modern UI by Icyllis Milica
Описание:
Modern UI (by Icyllis Milica) — это фреймворк для настольных приложений, предназначенный для разработки автономного программного обеспечения для 2D и 3D рендеринга. Он использует современные графические API и технологии для обеспечения рендеринга в реальном времени с высокой производительностью. Для улучшения качества, Modern UI улучшает и оптимизирует набор функций, используемых Google Android, и имеет собственную систему обработки текста с поддержкой интернационализации.
Modern UI для Minecraft — это модификация (Mod) для Minecraft, основанная на Modern UI Core Framework и Modern UI Core Extensions. Она предоставляет программу загрузки Modern UI в среде Minecraft и Modding API на основе Forge/Fabric для создания мощных графических интерфейсов в Minecraft.
Для клиента нажмите Ctrl+K или ⌘+K (по умолчанию), чтобы открыть экран Центра действий для настройки Modern UI. (Примечание: вы можете провести по экрану «Настройки», чтобы настроить шрифты)
Эта модификация также включает мощный механизм компоновки текста и систему рендеринга текста, разработанные для Minecraft.
Этот движок предоставляет соответствующие методы для обработки текста Unicode и дает более читаемый текст в любом масштабе, в 2D/3D. Подробнее:
- Предварительный просмотр в реальном времени и перезагрузка шрифтов TrueType/OpenType
- Улучшенная реализация резервного шрифта
- Сглаживание текста и хинтинг шрифтов FreeType
- Использование улучшенного рендеринга текста SDF в 2D/3D (также использует пакетный рендеринг)
- Вычисление точного размера шрифта в пространстве устройства для нативного рендеринга глифов
- Использование Google Noto Color Emoji и поддержка всех Emoji Unicode 15.1 (12 сентября 2023 г.)
- Поддержка коротких кодов эмодзи Discord/Slack/GitHub/IamCal/JoyPixels в чате
- Настраиваемый эвристический алгоритм для двунаправленного текста
- Настраиваемая тень текста и исходный размер шрифта
- Разрыв строк Unicode и CSS line-break & word-break
- Быстрое, точное и асинхронное вычисление компоновки текста Unicode
- Более быстрый и эффективный по памяти алгоритм упаковки прямоугольников для глифов
- Использование настоящей градационной серой текстуры (1 байт на пиксель, тогда как в Minecraft — 4 bpp)
- Совместимость с OptiFine, Sodium (Rubidium), Iris (Oculus) и многими модификациями
- Совместимость с определением шрифтов JSON в Minecraft (растровые шрифты, TTF шрифты)
Дополнительно, эта модификация предоставляет множество утилит, улучшающих производительность игры и игровой опыт. В настоящее время доступно:
- Изменение цвета фона экрана
- Размытие по Гауссу для фонового изображения экрана
- Анимация плавного появления фона экрана
- Дополнительные режимы окна: Полноэкранный (без границ), Развернутый (без границ)
- Ограничение частоты кадров и плавное изменение общей громкости при неактивном окне (не в фокусе) и свернутом
- Приостановка однопользовательской игры при открытии инвентаря
- Изменение опции масштаба интерфейса на ползунок и добавление поясняющего текста
- Воспроизведение звука «Ding» при загрузке Minecraft и переходе в главное меню
- Включение плавной прокрутки в стандартном списке выбора Vanilla и на панели прокрутки Forge
- Нажатие «C» для увеличения, как в OptiFine
- Стильный стиль всплывающих подсказок
- Выбор скругленной или обычной границы (со сглаживанием)
- Добавление разрыва заголовка и управление межстрочным интервалом заголовка
- Выравнивание строки заголовка по центру, поддержка направления компоновки RTL
- Точное позиционирование всплывающей подсказки по пиксельной сетке (плавное движение)
- Автоматическое перенос текста во всплывающей подсказке, выравнивание заголовка по центру, разрыв заголовка, автоматический межстрочный интервал
- Изменение цвета фона и цвета границы (с градиентом и анимацией)
Основные возможности:
- 2D графическая библиотека для нескольких графических API
- Промежуточное представление и AST языков шейдеров
- Рендеринг на основе функций расстояния со знаком и векторной графики
- Поддержка Markdown (и некоторых HTML-тегов)
- Постобработка изображений
- Быстрое вычисление матриц и векторов
- Преобразование форматов изображений
- Фреймворк для анимации и переходов
- Цикл обработки событий и многопоточный фреймворк
- Движок формирования текста и компоновки сложного текста
- MVVM и обработка жизненного цикла
- Автоматическая компоновка интерфейса RTL (справа налево)
Modern Text Engine для Minecraft:
- Поддержка цветных эмодзи, использование Google Noto Color Emoji 15.1 на основе списка эмодзи Unicode 15.1;
- Поддержка коротких кодов эмодзи в чате, например, :rofl: для обозначения катания по полу от смеха, поддержка коротких кодов Discord и Slack;
- Возможность использования шрифтов TTF или OTF, настройка базового размера шрифта, смещения базовой линии и отключения тени текста;
- Масштабируемая векторная графика, автоматическое переключение уровня разрешения (до 96px), нативный (не синтетический) рендеринг жирного и курсивного начертания;
- Поддержка рендеринга текста с использованием полей расстояния в 3D мире, но с использованием сглаженного атласа шрифтов в 2D GUI; Это улучшает предыдущую функцию:
- *Плавный рендеринг всех символов в любом масштабе (например, когда вы далеко от таблички или видите очень мелкий текст в интерфейсе)
- Поддержка многослойного текста, компоновки нескольких абзацев вместе, потокового алгоритма компоновки и внедрение быстрого кэша компоновки;
- Поддержка быстрой замены цифр, компоновки и выравнивания с высокой точностью, и плавное отображение быстро меняющихся цифр (фиксированная ширина);
- Поддержка MIP-карт, сглаживания, линейной выборки и сглаживания с увеличением частоты дискретизации (SSAA);
- Улучшенная и более эффективная компоновка абзацев с двунаправленным текстом (например, арабский, идиш); Использование сглаженных атласов шрифтов;
- Настраиваемый эвристический алгоритм для двунаправленного текста для более точного управления направлением текста; Поддержка исправления неверных суррогатных пар;
- Использование формирования текста HarfBuzz, поддержка рендеринга комбинирующих символов, таких как тайский, деванагари, бенгали и тамильский;
- Поддержка разрыва графемных кластеров, поддержка алгоритма разрыва строк Unicode;
- Поддержка контекстно-зависимого и основанного на локали разрыва слов и строк;
- Поддержка пиксельного рендеринга шрифтов, поддержка фиксированного уровня разрешения, поддержка выравнивания по пикселям;
- Поддержка замены растровых изображений, плавный рендеринг быстро меняющихся чисел, поддержка отображения эмодзи;
- Оптимизация алгоритма компоновки, увеличение FPS примерно на 10% при отрисовке текста в интерфейсе;
- Использование градационных серых пикселей для хранения текстур, уменьшение использования памяти GPU;
- Снижение ненужного использования оперативной памяти и значительное сокращение создания объектов;
Настройка шрифтов
Нажмите Ctrl+K или ⌘+K (по умолчанию), чтобы открыть Центр действий, перейдите в «Настройки», проведите до второй страницы, и вы увидите настройки шрифтов.
- Предпочитаемое семейство шрифтов — это наиболее желаемое вами. Это может быть системный шрифт или файл шрифта TrueType/OpenType (коллекция).
- Резервные семейства шрифтов используются, когда предпочитаемое семейство шрифтов недоступно.
Modern Text Engine:
Modern UI следует определению шрифтов JSON в Minecraft, игнорируются только типы поставщиков глифов 'legacy_unicode' и 'unihex'. Семейства шрифтов Modern UI, упомянутые выше, будут служить резервными семействами шрифтов для шрифтов Minecraft. Поведение шрифта по умолчанию (в «Настройки» > «Компоновка текста») дает возможность удалить некоторых поставщиков глифов из шрифта по умолчанию Minecraft (minecraft:default). Чтобы избежать использования стандартных ASCII-шрифтов Vanilla, установите значение «Keep Other». Обратите внимание, что эта опция действительна только если у вас не включена опция «Принудительный шрифт Unicode». Если вы хотите использовать стандартный шрифт Unicode Vanilla, просто скачайте OTF-версию GNU Unifont.
Дополнительные возможности для Minecraft:
- Поддержка настройки режима окна, такого как полноэкранный без границ, оконный без границ;
- Отмена/Повтор и итератор слов Unicode для всех текстовых полей;
- Анимация плавного появления фона экрана GUI и эффект размытия по Гауссу в 2 прохода, настраиваемый градиентный цвет фона;
- Стиль всплывающих подсказок с плавными скруглениями, поддержка компоновки RTL, настраиваемый цвет фона и границы;
- Воспроизведение звукового эффекта «ding» при загрузке игры;
- Поддержка приостановки игры при открытии инвентаря;
- Новый алгоритм масштаба интерфейса и виджет масштаба в виде ползунка (не ограничен четными числами, совместим с OptiFine);
- Добавление плавной прокрутки для стандартных панелей прокрутки Vanilla и Forge;
- Асинхронный обработчик сети; Автоматическое выключение сервера;
- Все функции настраиваются в конфигурационных файлах или на экране Центра действий (горячая клавиша по умолчанию Ctrl+K)
Modern UI для Fabric удаляет некоторые возможности (по сравнению с версией для Forge):
- Увеличение как в OptiFine, Скрытие прицела в интерфейсе
- Вывод дополнительной отладочной информации, расширение отчета о сбое
Сравнение с техниками рендеринга текста 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 рендеринга
- Мы поддерживаем рендеринг текста с одноканальным SDF без дополнительных ресурсов GPU, мы всегда используем текстуры 1 bpp
- У нас есть умный метод выборки SDF для уменьшаемого текста, тогда как у Caxton его нет
- Нет необходимости ждать генерации MSDF текстуры, вы можете переключать шрифты в игре одним щелчком
- Мы поддерживаем различные эвристики направления текста и стратегии разрыва строк
- Мы не используем дополнительные нативные библиотеки, поэтому Modern UI работает на macOS
- У нас немного более высокая производительность компоновки, чем у Caxton, и используется меньше оперативной памяти
Часто задаваемые вопросы (FAQ):