
Seaborgium
Мод Seaborgium для Майнкрафт - оптимизация рендеринга HUD. Кэширует uniform-переменные шейдеров, давая прирост до 110 FPS при большом количестве сердец. Устарел - оптимизация встроена в Sodium.
Seaborgium (Сиборгиум) - мод для Майнкрафт, который оптимизировал рендеринг ванильного HUD (интерфейса). Небольшой, но хитрый фикс, который сейчас официально устарел, но его история отлично показывает, как работают низкоуровневые оптимизации в Minecraft.
Важно: мод устарел
Разработчик прекратил поддержку. Причина банальная - команда Sodium (Содиум) внедрила аналогичную оптимизацию прямо в свой код. Если у вас стоит свежий Sodium, Seaborgium вам уже не нужен, скачивать его нет смысла.
Код проекта открыт под лицензией ISC. Любой разработчик может форкнуть репозиторий и использовать наработки как хочет.
Какую проблему решал мод
Суть вот в чём. Ванильный рендеринг интерфейса в Майнкрафт работает неоптимально. Особенно это касается отрисовки сердец здоровья. Когда у игрока много эффектов поглощения (absorption), на экране появляются десятки дополнительных сердец. И каждый кадр игра заново запрашивает у видеокарты местоположение uniform-переменных в шейдерах через вызов glGetUniformLocation.
Это медленный OpenGL-вызов. Драйверы видеокарт тратят ощутимое процессорное время на обработку этой функции. А игра дёргает её снова и снова, хотя результат не меняется от кадра к кадру.
Как это работало
Seaborgium добавлял простой кэш. Схема такая:
- Когда движок в первый раз вызывает
glGetUniformLocation, мод проверяет - есть ли уже закэшированный результат - Если да - возвращает кэшированное значение, не делая сам вызов
- Если нет - выполняет вызов и сохраняет результат в кэш
Просто? Просто. Но это убирало кучу лишних OpenGL-вызовов и экономило процессорные циклы. Вместо того чтобы каждый кадр спрашивать у видеокарты одно и то же, мод просто отдавал готовый ответ.
Мод поставлялся как unified jar - один файл работал и на Fabric (Фабрик), и на Forge. Удобно, не надо искать разные версии под каждый загрузчик.
Какой прирост FPS давал
Цифры зависят от железа и сценария. Тесты автора проводились на AMD Ryzen 5 5600x, 32GB DDR4 @ 3200Mhz и Nvidia GTX 980ti, с установленными Lithium и Sodium.
Экстремальный сценарий - absorption 255 (максимум дополнительных сердец). Тут разница драматическая: с 53 FPS до 163 в среднем. Тройной прирост. Играть становится реально комфортно вместо слайд-шоу.
Обычная игра - прирост скромнее, но заметный: 30-50 FPS сверху. Не революция, но на слабом железе ощутимо.
Короче, если у вас в игре постоянно висит куча сердец (например, от зелий или модов на RPG-классы), мод реально помогал. Для PvP-серверов с кучей эффектов - вообще must-have был в своё время.
Совместимость
Seaborgium работал со всеми популярными оптимизационными модами:
- Sodium / Rubidium - рендеринг
- Lithium / Canary - игровая логика
- Starlight - освещение
- и другие
Известных несовместимостей практически не было. Единственное исключение - моды, меняющие графический API (типа Vulkan Mod). С ними Seaborgium не дружил.
Важный нюанс: проблема с Iris на 1.19.4
Для версии Minecraft 1.19.4 есть проблема. Iris Shaders (шейдеры Ирис) сделали breaking change, из-за чего Seaborgium перестал работать.
Если вы разработчик и хотите починить совместимость на 1.19.4, нужно сделать следующее: в файле MixinPipelineManager заменить net.coderbot.iris.shaderpack.DimensionId на net.coderbot.iris.shaderpack.materialmap.NamespacedId. Плюс обновить зависимости.
Обычным игрокам это неактуально - проще обновить Sodium, который уже включает эту оптимизацию.
Стоит ли качать сейчас
Коротко - нет. Если у вас свежий Sodium, оптимизация уже встроена. Seaborgium имеет смысл только на старых версиях Minecraft (до 1.19.4) или если вы по какой-то причине не используете Sodium.
Но как пример грамотной низкоуровневой оптимизации - мод показателен. Разработчик нашёл узкое место в рендеринге HUD и элегантно его закрыл простым кэшированием. Без тонны кода, без переписывания движка - просто закэшировал то, что и так не менялось.
Как поиграть с друзьями с модом Seaborgium?
Мод Seaborgium куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода Seaborgium будет готов за пару минут - BungeeHost сделает всё за вас.
