Вышла новая версия библиотеки meshoptimizer 1.0 Обложка: Skyread

Вышла новая версия библиотеки meshoptimizer 1.0

Новости
Главное:

  • Выпущена первая стабильная версия 1.0 библиотеки meshoptimizer для оптимизации 3D-мешей.
  • Основные улучшения коснулись алгоритмов кластеризации, упрощения и разбиения, а также стабильности API и ABI.
  • Создана сопутствующая библиотека clusterlod.h для непрерывного уровня детализации с использованием кластерного упрощения.

9 декабря 2025 года разработчик Arseny Kapoulkine (zeux) представил первый мажорный релиз библиотеки meshoptimizer версии 1.0. Этот проект с открытым исходным кодом, написанный на C++ и JavaScript, разрабатывается с 2017 года и распространяется под лицензией MIT. Значительную поддержку получена от компании Valve.

Meshoptimizer предназначена для повышения эффективности обработки треугольных мешей графическими процессорами, оптимизируя данные вершин и индексов на различных этапах рендеринга. Библиотека содержит алгоритмы для оптимизации мешей, уменьшения их сложности и уменьшения накладных расходов на хранение данных. Вместе с основной библиотекой активно развиваются два проекта: gltfpack — инструмент для автоматической оптимизации файлов glTF, и clusterlod.h — библиотека для непрерывного уровня детализации, использующая технологию кластерного упрощения.

Версия 1.0 ориентирована на улучшение алгоритмов кластеризации, упрощения и разбиения mesh-сеток. Разработчик отмечает, что стабильными теперь считаются практически все функции библиотеки, за исключением разрешительного (permissive) режима упрощения, который остаётся экспериментальным. Алгоритмы кластеризации стали быстрее и производят более качественные группы мешлетов, особенно при пространственном разбиении.

Новая библиотека clusterlod.h реализует непрерывный уровень детализации, формируя иерархию кластеров, которые постепенно упрощаются аналогично технологии Nanite. Она построена поверх meshoptimizer, обладает читаемой архитектурой и подходит как для использования «из коробки», так и для самостоятельных доработок.

В функции упрощения (meshopt_simplifyWithUpdate и meshopt_SimplifyPermissive) улучшено качество результирующих мешей. Все остальные ранее экспериментальные опции переведены в стабильный статус, что гарантирует обратную совместимость API и ABI в будущих релизах.

Помимо этого, функции кодирования вершин теперь по умолчанию используют формат v1, но при необходимости поддерживается и старый формат v0, применимый для расширения EXT_meshopt_compression. Инструмент gltfpack обзавёлся поддержкой нового расширения KHR_meshopt_compression, обеспечивающего более эффективное сжатие, хотя широкая поддержка этого расширения в загрузчиках пока отсутствует.

Наконец, JavaScript-привязки библиотеки обновлены — они перешли с CommonJS на модули ES, что может потребовать изменения импортов в проектах. Для совместимости с CommonJS сохранён отдельный вариант meshopt_decoder.cjs.

Релиз meshoptimizer 1.0 знаменует собой важный этап в развитии инструментов оптимизации 3D-графики, предлагая разработчикам стабильные, эффективные и гибкие решения для работы с мешами в графических приложениях и играх.

Tagged