Перейти к содержимому

Ixeris

Буферизованный сырой ввод и многопоточный опрос событий

FabricNeoForgeForgeQuilt
Загрузчики
FabricNeoForgeForgeQuilt
Скачиваний на Modrinth
14,6 млн
Подписчиков на Modrinth
565
версий
1 039
Обновлён
19 октября 202619 окт.
Опубликован
в 2025

Коротко о моде

Работает на Fabric, NeoForge, Forge и Quilt
Для Minecraft 1.19.2, 1.19.4–26.3 …
Ставится только в игру; на сервер ставить не нужно
Последняя версия — 4.6.10+26.3-neoforge от 19 октября 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа серверене нужен

Ставится только в игру; на сервер ставить не нужно

Версии игры1.18.2, 1.19.2, 1.19.4–26.3 …
Описание переведено автоматическиПоказать оригинал (EN)

Ixeris

Обзор

Ixeris — это мод, который оптимизирует опрос событий для повышения производительности клиента.

Вы могли заметить заметное падение FPS при движении мыши. Часть падения FPS связана с тем, что при повороте камеры у игры появляются дополнительные задачи, например расчёт видимости чанков. Однако из-за неэффективности нативного кода, который опрашивает события, и накладных расходов на вызовы JNI часть процессорного времени, которое можно было бы использовать для рендеринга, тратится впустую на опрос событий. Это наиболее заметно на Windows, особенно если у вашей мыши высокая частота опроса.

Ixeris решает проблему в основном двумя способами:

  • Многопоточный опрос событий. Вместо выполнения рендеринга и опроса событий в одном потоке Ixeris выполняет опрос событий в главном потоке и выносит рендеринг в отдельный поток рендеринга.
  • Буферизованный Raw Input (только Windows). Переключает метод опроса ввода с неэффективного GetRawInputData (один вызов на каждое событие ввода) на GetRawInputBuffer, который позволяет читать сообщения raw input пакетами (один вызов для всех событий). Кроме того, выполнение этой работы в Java-коде позволило нам устранить накладные расходы на вызовы JNI.

Бенчмарки

Эти тесты выполнены после полной загрузки мира и стабилизации частоты кадров.

Тест 1: В игре

Этот тест сравнивает производительность, когда мышь захвачена, то есть курсор невидим. Тест проводится в суперплоском мире без сущностей.

Тест выполнен на Windows, где Ixeris по умолчанию использует буферизованный raw input для повышения производительности. Столбец «Ixeris, Non-buffered» показывает FPS с отключённой этой опцией.

Частота опросаБез IxerisIxeris, Non-bufferedIxeris, Buffered
8000 Hz12 FPS83 FPS (6.9x)121 FPS (10.1x)
2000 Hz76 FPS114 FPS (1.50x)135 FPS (1.78x)
500 Hz134 FPS145 FPS (1.08x)151 FPS (1.13x)

Тест 2: В меню

Этот тест сравнивает производительность, когда мышь не захвачена, то есть курсор видим, как на экране паузы F3+Esc. В этом случае raw input никогда не используется, так как игре нужно знать фактическую позицию курсора, а не сырое относительное перемещение. Частота опроса — 1000Hz.

Столбец «Idle FPS» показывает FPS, когда мышь не движется, а следующие два столбца показывают FPS при быстром движении мыши по окну игры — без Ixeris и с Ixeris соответственно. Учтите, что этот тест был выполнен на начальном релизе Ixeris, и с тех пор было сделано много улучшений.

Idle FPSБез IxerisС Ixeris
Windows233 FPS133 FPS165 FPS (1.24x)
Linux (X11)358 FPS320 FPS355 FPS (1.11x)
Linux (Wayland)364 FPS289 FPS298 FPS (1.03x)

Технические детали

Потокобезопасность

В текущем состоянии Ixeris не должен нарушать потокобезопасность. Колбэки, зарегистрированные через glfwSet*Callback, выполняются в потоке рендеринга. Вызовы функций GLFW, которые должны выполняться в главном потоке, при вызове из других потоков перенаправляются в главный поток. Эти вызовы могут немедленно вернуть управление, если их можно безопасно отложить, или в противном случае заблокировать вызывающий поток до завершения вызова.

Начиная с версии 3.1.0 требования потокобезопасности из документации GLFW строго соблюдаются.

Кэширование состояния GLFW

Большинство функций GLFW должны вызываться из главного потока. Однако многие моды могут вызывать их из потока рендеринга. Чтобы избежать снижения производительности из-за межпоточного взаимодействия, Ixeris кэширует часто используемые состояния GLFW для быстрого доступа из любого потока без необходимости перенаправлять вызов в главный поток. Кэши безопасны и не вносят дополнительных задержек.

Улучшенный ограничитель FPS

Ванильный ограничитель FPS (до 26.1) несовершенен: он использует glfwWaitEventsTimeout для ожидания. Однако эту функцию нельзя вызывать из потока рендера, поэтому с Ixeris она работает неоптимально.

Ixeris переписывает ограничитель FPS гибридным способом: точно засыпает и начинает активное ожидание, когда время ожидания очень мало.

Глоссарий

  • Главный поток — это поток, в котором запускается игра. Большинство функций GLFW должны вызываться в этом потоке, и он отвечает за опрос событий.
  • Поток рендера делает всё, что обычно делает игра, кроме опроса событий.

В ванильном Minecraft эти два термина синонимичны.

Частые вопросы

Как установить Ixeris?

Установите Fabric под свою версию Minecraft, скачайте Ixeris под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Ixeris?

У Ixeris есть сборки для Minecraft 1.16.5, 1.18.2, 1.19.2, 1.19.4–26.3.

Нужен ли Ixeris на сервере?

Ставится только в игру; на сервер ставить не нужно

Лицензия и источник
GNU Lesser General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее