Статус Dagon 2
Разработка новой версии движка идет гораздо быстрее, чем я успеваю писать о ней. В августе я уже отчитывался о порте dagon:imgui и dagon:audio, на днях я также портировал dagon:physfs, dagon:video, dagon:security и dagon:server. Перенесен менеджер ввода InputManager, биндинг Wintab и модуль ввода с графического планшета, реализована поддержка компонентов для Entity, поддержка HiDPI, вычислительных шейдеров и ресэмплинга текстур на GPU.

Кроме того, я занимался оптимизацией некоторых частей рендера и решил ряд застарелых проблем производительности:
- Все стохастические алгоритмы теперь используют перемешанный конгруэнтный генератор (PCG). Это один из лучших генераторов псевдослучайных чисел, подходящих для вычислений в реальном времени. В отличие от предыдущих решений в движке, PCG не использует тригонометрические функции и опирается на целочисленную арифметику. Этот генератор ускоряет шейдеры, в которых используется случайность (сэмплинг Монте-Карло) — SSAO, SSLR, Motion blur;
- Оптимизирован SSLR, устранены лишние перемножения векторов и матриц для репроекции при raymarching’е;
- Оптимизирован SSAO, вся тригонометрия вынесена из цикла сэмплинга;
- Метроном (
Cadencer) теперь использует высокоточный наносекундный таймер. Реализован новый планировщик кадров, который сильно снижает нагрузку на CPU и уменьшает тем самым энергопотребление и нагрев, что важно на ноутбуках; - Добавлена поддержка режима презентации Mailbox, что, по всей видимости, ставит точку на многолетней проблеме VSync. Отныне никакого тиринга и инпут-лага!