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

LCull

Проклятая, но производительная логика Frustum для сцен с интенсивным отсечением

FabricNeoForgeForgeQuilt
Загрузчики
FabricNeoForgeForgeQuilt
Скачиваний на Modrinth
1,6 тыс.
Подписчиков на Modrinth
4
версий
36
Обновлён
29 сентября 202629 сент.
Опубликован
в 2026
Benchmark #1 1.21.11 Fabric — Before: Without mods - After: With LCull · свайп

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

Работает на Fabric, NeoForge, Forge и Quilt
Для Minecraft 1.21.4, 1.21.6–26.3 …
Ставится только в игру; на сервер ставить не нужно
Последняя версия — mc26.3-1.1.0-neoforge от 29 сентября 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа серверене нужен

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

Версии игры1.21–1.21.1, 1.21.4, 1.21.6–26.3 …
Описание переведено автоматическиПоказать оригинал (EN)
Код проекта был создан с помощью искусственного интеллекта.
Available on Modrinth Available on CurseForge GitHub Issues

Открытый мод с проклятой, но производительной логикой Frustum для тяжёлых сцен с отсечением. Больше FPS, но есть побочные эффекты.

Преимущества

  • Отсечение сущностей за пределами экрана:

    • Помогает в разных тяжёлых сценах, что повышает FPS. (например, в CounterMine 2)
  • Ускоряет работу в 2 раза с модами Entity Culling, Sodium/Embeddium, потому что они тут профи, ага.

Недостатки

  • Бесполезен для других сцен:

    • Мало сущностей
    • Сущности за стенами.
    • Модовые мобы (вероятно)
  • Повышает нагрузку на CPU.

Бенчмарки

Стандартная версия 1.21.11 Fabric

До: Без модов

После: С LCull

lcull1

1.21.11 Fabric с модами: Sodium, Entity Culling, Fabric API

До: Без LCull

После: С LCull

lcull2

Зачем я сделал этот мод?

Minecraft держит каждую загруженную сущность в цикле отрисовки, даже когда она за спиной или далеко за пределами экрана, так что GPU и CPU платят полную цену за то, чего вы никогда не увидите. В сценах с кучей сущностей — вроде RPG-серверов с модами, хабов мини-игр или карт CounterMine С ЦЕЛЫХ 10К СУЩНОСТЕЙ (или просто с большим количеством Display-сущностей) — эти накладные расходы превращаются в настоящий налог на частоту кадров. Sodium и Entity Culling уже отлично справляются с блоками и сущностями, но я хотел небольшой, узконаправленный путь через frustum, заточенный конкретно под тысячи сущностей на экране одновременно, и чистое место для экспериментов с конвейером рендеринга. LCull вырос из идей Lomka (моей более ранней работы, доказавшей, что отсечение по тикам и обновлениям сильно помогает) и сузил задачу до одной: перестать рисовать сущности, которых нет во view frustum.

Как работают проверки Frustum в LCull?

Каждый кадр игра и так строит Frustum для активной камеры. LCull спрашивает у этого frustum, попадает ли axis-aligned bounding box сущности внутрь видимого объёма — тот же тест по шести плоскостям, что рендерер использует для чанков, только вычисляемый в безветочной форме, которая определяет знаки для углов один раз за кадр, а не для каждой сущности. Когда весь бокс снаружи, сущность пропускается при рендеринге и вообще не доходит до draw call.

Две вещи не дают результату мерцать. Запас безопасности вокруг бокса растёт со скоростью сущности — 1 блок для неподвижной сущности, до 2.5 для быстрой — так что ничего не выскакивает на ходу; а снаряд не может освободить себя от проверки за счёт высокой скорости, потому что запас ограничен. LCull также сохраняет ванильные исключения нетронутыми: всё, что рендерер помечает как never-cullable (удочки, ender dragon, молнии, отображение ников), передаётся прямо ванилле, а моб на поводке остаётся видимым, пока виден тот, кто держит его верёвку. Оба решения намеренно оставляют немного на столе, вместо того чтобы выбросить что-то, что игрок может увидеть.

В чём проблема Minecraft и LCull?

Minecraft применяет свой фрустум к чанкам и блочным сущностям, но цикл отрисовки каждой сущности всё равно перебирает и отправляет на отрисовку всё, что загружено, — именно поэтому мобы за экраном стоят столько же, сколько и мобы в кадре. LCull убирает эти затраты на сущности за экраном, но не может убрать сущности, скрытые за стенами, потому что для этого нужна отсечка по перекрытию и граф видимости — задача куда сложнее, чем проверка фрустума. Мод также бесполезен, когда сущностей мало, или в одиночной игре, где узкое место — симуляция, а не отрисовка. Поскольку отсечка решается в потоке отрисовки, сущности могут исчезать в тот же миг, как выходят из поля зрения; это осознанный размен ради прироста FPS, и он обменивает немного дополнительной нагрузки на CPU ради проверки фрустума. Есть и узкий край совместимости: мод, который считает, что каждая сущность «отрисовывается» каждый кадр, может вести себя странно, — поэтому LCull остаётся опциональной, настраиваемой правкой, а не молчаливой заменой.

Ссылки

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

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

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

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

У LCull есть сборки для Minecraft 1.20.1, 1.21–1.21.1, 1.21.4, 1.21.6–26.3 ….

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

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

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

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