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

VO: Camera Culling

Отсекай невидимое. Лёгкое отсечение окклюзии камеры без выделения памяти, двустороннее отсечение текста табличек и LOD текстур по расстоянию.

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
996
Подписчиков на Modrinth
6
версий
13
Обновлён
17 октября 202617 окт.
Опубликован
в 2026

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

Работает на Fabric
Для Minecraft 1.21.11, 26.2–26.3 …
Нужен в игре; на сервере — по желанию
Последняя версия — 1.0.1+1.21.1 от 17 октября 2026
Нужен Dasik Library и Fabric API
Лицензия GPL-3.0-or-later — бесплатно
Где нужен
В игреобязателенНа серверенеобязателен

Нужен в игре; на сервере — по желанию

Версии игры1.21.1, 1.21.11, 26.2–26.3 …
Описание переведено автоматическиПоказать оригинал (EN)
Camera Culling Mod Icon

Requires Fabric API Java 25 License Minecraft 26.1+

📷 Camera Culling

Политика активных версий: Я собираю 1 JAR для 1 версии. Я поддерживаю активные версии Minecraft (26.1.2, 26.2 и 26.3). Каждая версия компилируется нативно без компромиссов.

Не рендери невидимое. Лёгкое отсечение камерой без аллокаций, двустороннее отсечение текста табличек и дистанционный LOD текстур.

Проблема ваниллы: В ванильном Minecraft рендерер игры извлекает состояния рендера и отрисовывает тысячи сущностей, блочных сущностей, квадов частиц и глифов текста табличек, даже когда они скрыты за сплошными стенами, под землёй в пещерах или вне вашего поля зрения. Более того, рендеринг полностью детализированных текстур на далёких мобах расходует драгоценный филлрейт GPU и пропускную способность памяти.

Camera Culling решает это в самом корне рендеринга. Он выполняет молниеносный клиентский рейкастинг и проверки окклюзии по фрустуму против коллизий блоков, чтобы динамически прекращать рендер скрытых сущностей, блочных сущностей, частиц и сторон текста табличек. В сочетании с умной защитой от овердро в толпе, дистанционным масштабированием мипмапов LOD текстур, динамической защитой боссов/мини-боссов, нулевыми аллокациями в куче на кадр и временным буфером гистерезиса против мерцания, Camera Culling резко повышает частоту кадров, не изменяя симуляцию мира или сетевые пакеты.

Часть Vanilla Outsider Collection — модов, которые улучшают ванильный опыт современными стандартами.

🔗 Официальная вики на GitHub: https://github.com/Rifaditya/Vanilla-Outsider-Camera-Culling/wiki


✨ Возможности

🧱 Отсечение сущностей (движок рейкастинга без аллокаций)

Никогда не тратьте циклы GPU на рендер мобов, которых не видите. Быстрый многоточечный рейтрейсинг против геометрии коллизий сплошных блоков прекращает рендер сущностей, скрытых за стенами, потолками пещер и рельефом.

  • Движок горячего пути без аллокаций: Передача примитивных координат напрямую устраняет промежуточные аллокации new Vec3() в куче при непрерывном рендере кадров, убирая скачки сборки мусора Young-Gen JVM при повороте камеры через плотные скопления сущностей.
  • Многоточечная точность: Оценивает ключевые линии обзора сущности (верх головы, анатомическая высота глаз, верхняя часть туловища, центр и приподнятые бока), чтобы гарантировать, что мобы никогда не отсекаются преждевременно, когда они частично видны из-за угла.
  • Направленная фильтрация пола: Игнорирует коллизии блоков с нормалью вверх (Direction.UP) на уровне основания сущности, предотвращая ложное отсечение при скольжении по земле на склонах и холмах.
  • Запас безопасности по близости: Мобы в вашем пузыре безопасности вблизи всегда рендерятся плавно без задержки.

[!NOTE] Нулевое влияние на симуляцию: Отсечение работает строго на клиентской отправке рендера. Тики сущностей, серверная синхронизация, звуковые события и физика остаются на 100% активными.

🛡️ Временной гистерезис против мерцания

  • Буфер отсрочки с масштабом по дистанции: Реализует адаптивное затухание дебаунса кадров ($4\text{ кадра вблизи} \le 32\text{м}$, $8\text{ кадров средне} \ 32-64\text{м}$, $12\text{ кадров далеко} > 64\text{м}$), которое поглощает дрожание от вращения камеры и покачивания при ходьбе без внезапного появления объектов.

🪧 Отсечение текста на обратной стороне двусторонних табличек и подвесных табличек

Таблички с текстом на обеих сторонах одновременно отрисовывают глифы шрифта, таблицы кернинга и контуры свечения на обеих сторонах — даже когда вы смотрите только на одну.

  • Математика скалярного произведения вектора нормали: Вычисляет вектор нормали стороны таблички ($\vec{N} \cdot \vec{V}$) для настенных табличек, стоящих табличек и подвесных табличек, чтобы автоматически пропускать проходы отрисовки шрифта для стороны, обращённой от камеры.
  • Быстрый проход для пустых сторон: Автоматически определяет пустые/незаписанные стороны табличек и мгновенно пропускает разметку текста с нулевыми вычислительными затратами.
  • Сокращение вызовов отрисовки на 50–100% для табличек на складах и в многопользовательских городах.

✨ Отсечение частиц и анимаций

  • Отсечение частиц: Пускает лучи от QuadParticle к визуальным формам столкновений с защитной зоной в 4.0 метра вокруг камеры игрока.
  • Заморозка анимаций TextureAtlas: Замораживает 3D-анимации блоков и пропускает смену кадров текстурного атласа за экраном, когда игра на паузе или открыты модальные меню.

👥 Отсечение сущностей за сущностями (защита от перерисовки в толпе)

Плотные фермы мобов и переполненные загоны — главные убийцы FPS. Camera Culling определяет, когда мобы полностью скрыты за более близкими непрозрачными мобами перед ними.

  • Ограничение плотности скоплений: Автоматически ограничивает число отрисовываемых сущностей в тесных скоплениях по 1.5 блока (по умолчанию: 8 мобов на скопление), предотвращая лаги отрисовки на фермах с давкой.
  • Быстрый отказ на 16 метрах: Полностью обходит запросы толпы дальше 16 метров, обеспечивая нулевые затраты CPU в больших открытых стадах.
  • Обход декоративных и мелких мобов: Прозрачные или мелкие сущности (Slimes, Magma Cubes, Vexes, Armor Stands) никогда не блокируют линии обзора и не перекрывают других мобов.

🎨 LOD текстур мобов по расстоянию (снижение разрешения текстур)

Далёким мобам не нужны текстуры чёткости 4K. Camera Culling оснащён независимым трёхуровневым движком смещения OpenGL Mipmap LOD, который динамически снижает разрешение текстур на далёких мобах:

  • Близко (< 16 блоков): 100% нативные полноразрешённые чёткие текстуры (смещение LOD 0.0).
  • Средне (16 – 32 блока): Выборка текстур в половинном разрешении (смещение LOD 1.0).
  • Далеко (> 32 блоков): Выборка низкого разрешения mipmap в четверть разрешения (смещение LOD 2.5).
  • Оптимизация заполнения GPU: Резко снижает заполнение VRAM и пропускную способность памяти на больших стадах далёких мобов без ухудшения визуальной точности вблизи.

🛡️ Двухуровневый чёрный список иммунитета сущностей

Хотите, чтобы конкретные сущности никогда не отсекались ни при каких обстоятельствах? Camera Culling предоставляет надёжную двухуровневую систему чёрных списков:

  • Личный чёрный список клиента: Хранится локально в config/camera-culling.json. Игроки могут внести в чёрный список своих любимых спутников (например, minecraft:wolf, minecraft:allay, minecraft:cat).
  • Чёрный список администратора сервера: Настраивается в config/camera-culling-server.json. Операторы сервера могут задать иммунитет сущностей для всего сервера на всех подключённых клиентах.
  • Полный иммунитет: Сущности из чёрного списка на 100% освобождены от отсечения по перекрытию блоками, отсечения при перерисовке в толпе и снижения LOD текстур.

👑 Динамический иммунитет боссов и мини-боссов

Никогда не теряйте из виду опасных врагов. Camera Culling автоматически распознаёт как ванильных, так и модифицированных боссов и мини-боссов:

  • Автоматическое распознавание: Защищает Ender Dragons, Withers, Wardens, Elder Guardians, Ravagers, Iron Golems, Piglin Brutes, Evokers, Breezes, а также модифицированных чемпионов/титанов.
  • Настраиваемые пороги здоровья:

    • Порог крупных боссов: bossHealthThreshold (по умолчанию: 150.0 HP / 75 сердец).
    • Порог мини-боссов: miniBossHealthThreshold (по умолчанию: 50.0 HP / 25 сердец).
  • Абсолютная защита линии обзора: Боссы и мини-боссы никогда не отсекаются за твёрдыми блоками, никогда не отсекаются ограничениями толпы и никогда не понижаются в LOD текстур.

📦 Отсечение блок-сущностей

Пропускает извлечение рендера для блок-сущностей, которые полностью закрыты или перекрыты:

  • Проверка закрытости: автоматически убирает рендер сундуков, табличек, баннеров, черепов и декорированных горшков, которые полностью окружены со всех 6 сторон твёрдыми непрозрачными блоками.
  • Проверка прямой видимости: пропускает рендер, когда обзор перекрыт от камеры, на агрессивных профилях отсечения.

⚙️ 4 профиля интенсивности отсечения

  • LOW (консервативный): буфер безопасности 4.0 блока, выборка из 7 точек, увеличенные хитбоксы.
  • MEDIUM (сбалансированный): буфер безопасности 2.0 блока, выборка из 5 точек.
  • HIGH (агрессивный): буфер безопасности 1.0 блока, быстрая выборка из 3 точек, агрессивное отсечение блок-сущностей.
  • SUPER (экстремальный — по умолчанию): буфер безопасности 0.25 блока, сверхбыстрая проверка из 2 точек для максимального FPS на современных системах.

📋 Краткий справочник команд

Все настройки можно просмотреть и изменить прямо в игре через набор команд /cameraculling:

/cameraculling status                               → Просмотр статистики в реальном времени, активного уровня и порогов
/cameraculling toggle                               → Включить или выключить отсечение
/cameraculling set <low|medium|high|super>          → Сменить пресет интенсивности отсечения
/cameraculling particles [true|false]               → Переключить отсечение частиц
/cameraculling animations [true|false]              → Переключить отсечение анимаций блоков и текстурных атласов
/cameraculling crowdculling <true|false>            → Переключить отсечение перерисовки толпы / сущностей за сущностями
/cameraculling cluster <1-128>                      → Задать лимит плотности кластера для забитых загонов с мобами
/cameraculling texturlod <true|false>               → Отдельно переключить LOD текстур по расстоянию
/cameraculling texturlod range <near> <far>         → Задать свои дистанции LOD текстур (например, 16.0 32.0)
/cameraculling bossimmunity <true|false>            → Переключить иммунитет боссов и мини-боссов
/cameraculling bosshealth <hp>                      → Задать порог здоровья крупных боссов (например, 150)
/cameraculling minibosshealth <hp>                  → Задать порог здоровья мини-боссов (например, 50)
/cameraculling blacklist add <entity_id>            → Добавить моба в личный клиентский список иммунитета (например, minecraft:wolf)
/cameraculling blacklist remove <entity_id>         → Убрать моба из личного списка иммунитета
/cameraculling blacklist list                       → Показать всех мобов в личном чёрном списке
/cameraculling blacklist clear                      → Очистить личный чёрный список иммунитета
/cameraculling serverblacklist add <entity_id>      → Добавить моба в серверный админский список иммунитета (OP)
/cameraculling serverblacklist remove <entity_id>   → Убрать моба из серверного админского списка иммунитета
/cameraculling serverblacklist list                 → Показать всех мобов в серверном чёрном списке
/cameraculling serverblacklist clear                → Очистить серверный админский чёрный список
/cameraculling debug [true|false]                   → Переключить диагностическую трассировку в реальном времени в чате и логах
/cameraculling reload                               → Перезагрузить конфигурацию с диска

⚙️ Файл конфигурации

Настройки сохраняются прямо в config/camera-culling.json:

{
  "enabled": true,
  "level": "SUPER",
  "cullEntitiesBehindEntities": false,
  "maxEntitiesPerCluster": 8,
  "distanceTextureLod": true,
  "distanceTextureLodStart": 16.0,
  "distanceTextureLodFar": 32.0,
  "bossImmunity": true,
  "bossHealthThreshold": 150.0,
  "miniBossHealthThreshold": 50.0,
  "cullParticles": true,
  "cullAnimations": true,
  "cullSignText": true,
  "clientBlacklist": [],
  "debugMode": false
}

📦 Установка и окружение

⚛️ Поддержка окружения

  • [x] Только клиентская сторона: Вся функциональность работает на клиенте и совместима с ванильными серверами.

    • [x] Работает и в одиночной игре
    • [x] Совместим с любым многопользовательским сервером
  • [ ] Только серверная сторона: Установка только на сервер.
  • [ ] Клиент и сервер: Требуется установка с обеих сторон.

📥 Инструкция по установке

  1. Установи Fabric API.
  2. (Опционально) Установи ModMenu и YetAnotherConfigLib для графических настроек прямо в игре.
  3. Скачай последний JAR Camera Culling для своей версии Minecraft и положи его в папку .minecraft/mods.
  4. Запусти Minecraft и наслаждайся плавным, оптимизированным FPS!

☕ Поддержка

Если тебе нравится Camera Culling и философия Vanilla Outsider, можешь поддержать следующий апдейт!

Ko-fi SocioBuzz Saweria


📜 Благодарности

РольАвтор
СоздательDasik (Rifaditya)
КоллекцияVanilla Outsider
ЛицензияGNU GPLv3

[!IMPORTANT] 📦 Разрешения на модпаки и распространение: Ты можешь свободно включать этот мод в любой модпак на любой платформе. Однако сам мод должен быть скачан с официальных страниц распространения на Modrinth или CurseForge. Перезагрузка или распространение официальных JAR-файлов на сторонних сайтах строго запрещены.

Лицензия и форки: Поскольку исходный код лицензирован под GNU GPLv3, ты полностью вправе форкнуть репозиторий, вносить изменения, собирать собственные версии и распространять их на условиях GPLv3 как отдельные проекты.


Сделано с ❤️ для сообщества Minecraft

Часть коллекции Vanilla Outsider

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

Как установить VO: Camera Culling?

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

Для каких версий Minecraft есть VO: Camera Culling?

У VO: Camera Culling есть сборки для Minecraft 1.20.1, 1.21.1, 1.21.11, 26.2–26.3.

Нужен ли VO: Camera Culling на сервере?

Нужен в игре; на сервере — по желанию

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

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