
2 апреля 2026 года разработчик Arseny Kapoulkine (zeux) представил обновление открытой библиотеки meshoptimizer 1.1. Исходный код проекта написан на C++ и JavaScript и опубликован на GitHub под лицензией MIT. Решение находится в разработке с 2017 года. Большая часть работы над основной библиотекой в этом релизе была спонсирована Valve. Версия meshoptimizer 1.0 вышла в декабре 2025 года.
Когда графический процессор (GPU) рендерит треугольные меши (triangle mesh), различные этапы конвейера GPU должны обрабатывать данные вершин и индексов. Эффективность этих этапов зависит от данных, которые передаются для обработки. Библиотека meshoptimizer предоставляет алгоритмы для оптимизации мешей на этих этапах, а также алгоритмы для уменьшения сложности мешей и накладных расходов на хранение.
Вместе с библиотекой meshoptimizer разрабатываются и два сопутствующих проекта: gltfpack, инструмент командной строки, который автоматически оптимизирует файлы glTF, и clusterlod.h, библиотека C/C++ для непрерывного уровня детализации с использованием кластерного упрощения.

«В этом релизе представлены две новые важные функции: сжатие мешлетов и микрокарты прозрачности, а также несколько небольших улучшений и дополнений. Основные моменты: Новый кодек для мешлетов позволяет сжимать топологию мешлетов (микроиндексы и данные о вершинах), используя присущую им локальность и разработанный для чрезвычайно быстрой декомпрессии на ЦП. Каждый мешлет кодируется независимо, что обеспечивает гибкость в структурировании хранилища во время выполнения и параллелизме. Мешлеты могут быть декодированы в распространённые форматы времени выполнения (3 или 4 байта на треугольник, 2 или 4 байта на ссылку на вершину) для непосредственного использования на графическом процессоре. Для дальнейшего уменьшения размера выходные данные кодировщика могут быть сжаты с помощью универсальных компрессоров, таких как Zstandard. Декодер сильно оптимизирован и может напрямую работать с памятью, объединённой для записи; ожидается, что он будет работать со скоростью 7-10 ГБ/с на современных настольных процессорах. Для приложений, выполняющих потоковую обработку на графическом процессоре, предоставляется пример декодера вычислительного шейдера, способного достигать скорости более 150 ГБ/с на RTX 5070.
Теперь поддерживается растеризация микрокарты непрозрачности; набор функций может генерировать готовые к аппаратному обеспечению данные микрокарты непрозрачности из UV-координат сетки и текстуры с альфа-каналом. Полученные данные микрокарты можно использовать непосредственно в Vulkan через VK_EXT_opacity_micromap или в DirectX через DXR1.2. Каждый треугольник подразделяется в соответствии со своим UV-координатом на сетку из 4^N микротреугольников; микротреугольники могут использовать 2-состоятельное (1 бит) или 4-состоятельное (2 бита) представление. 4-состоятельное представление полезно для ускорения вызовов шейдеров для подтверждения попадания по непрозрачности с помощью поиска по текстуре, тогда как 2-состоятельное представление (или принудительный 2-состоятельный резервный вариант для 4-состоятельного представления) может использоваться для полного исключения вызовов шейдеров и достижения максимальной производительности трассировки. Для минимизации накладных расходов на память, карты используются повторно между треугольниками с помощью буфера индексов OMM для каждого треугольника, сгенерированного для специальных индексов треугольников с согласованным состоянием)»,
— пояснил разработчик проекта.
