Обновления

Улучшения в Dagon

Выход Dagon 0.19 уже не за горами, релиз планируется большой – накопилось множество изменений в различных частях движка.

dmech, мой старый физический движок, включает продвинутые алгоритмы проверки столкновений, которые до недавнего времени пропадали зря (в частности, Minkowski Portal Refinement и солвер Джонсона) – я решил исправить этот недочет и добавить их в Dagon в качестве пакета dagon.collision. В данный момент он поддерживает обнаружение пересечений между любыми выпуклыми телами и проверку пересечения выпуклого тела с лучом.

Продолжаю работу над упрощенным рендером, о котором уже писал ранее. Появились билборды и универсальная ортографическая проекция: теперь можно, к примеру, легко сделать изометрическое 3D со спрайтовой графикой, как на скриншоте. Среди прочих улучшений – рефакторинг компонента FreeviewComponent и улучшенный контроллер персонажа Newton (появилась поддержка приседания). Оптимизирован deferred-рендер, сокращено количество переключений кадровых буферов. Добавлен новый встроенный примитив – цилиндр.

BindBC-GLSLang

Написал биндинг к glslang, референсному компилятору GLSL от Khronos – можно генерировать модули SPIR-V для WebGPU-приложений прямо в D, без использования внешнего ПО.

https://github.com/gecko0307/bindbc-glslang

Раздел со статьями

Добавил раздел “Статьи” для быстрого доступа к ним. Там, в основном, написанное за последние 10 лет и доступное онлайн, так как более ранние мои материалы публиковались еще в PDF-версии журнала “FPS” и бумажных изданиях – ссылки на них поставить затруднительно.

Поддержка мешей в dmech

В dmech возвращена поддержка статических полигональных мешей. Она существовала и ранее, но ее на долгое время пришлось убрать по причине несовместимости с нынешней архитектурой движка – сейчас, наконец-то, ее код удалось адаптировать.
Проверка столкновений с полигонами основана на все том же алгоритме MPR, но с оптимизацией за счет разбиения пространства (а именно, используется одна из разновидностей BVH – иерархии ограничивающих объемов).
Поддерживается проверка столкновений меша с любыми выпуклыми телами (включая боксы, цилиндры, конусы и т.д.) Единственное ограничение – в настоящее время полигональные меши могут быть только статичными телами.

Изменения доступны в репозитории dmech на GitHub.

Цилиндры и MPR

В физическом движке реализован новый алгоритм проверки столкновений – Minkowski Portal Refinement (MPR), который позволяет ввести поддержку таких тел, как цилиндр, конус, пирамида, призма, капсула, октаэдр и т.д. Этот же алгоритм работает и для привычных сфер с боксами – самое замечательное в том, что список поддерживаемых тел можно расширить вообще любым выпуклым объектом, для которого определена функция экстремальной точки в заданном направлении (иными словами, геометрия должна знать, какая ее точка является “самой далекой” от центра в каждом направлении).

Сборка для Windows (1,62 МБ)
Сборка для Linux (2,48 МБ)
Исходники (3,11 МБ)