суббота, 26 сентября 2015 г.

Новости по dlib

Давненько я не отчитывался по прогрессу разработки dlib - а ведь с выхода 0.6.0 уже немало воды утекло. На данный момент актуальная версия библиотеки - 0.6.4, не за горами уже релиз 0.7.0. Вот наиболее важные нововведения:
  • Начиная с версии 0.6.1 в dlib.core.memory доступен встроенный профайлер памяти. Если собрать библиотеку с version-ключом MemoryDebug, то он будет вести отчет по выделениям динамической памяти - если вы обнаружили утечку, профайлер поможет выяснить, какие объекты создавались и не были удалены на момент вывода отчета. К сожалению, из-за ограничений языка, пока невозможно сохранять информацию о модулях и номерах строк, в которых произошло выделение памяти (это упростило бы отладку утечек до предела), но не исключено, что в будущем такая возможность все-таки появится.
  • Серьезное обновление dlib.image - с версии 0.6.2 декодер PNG больше не отражает изображение по вертикали. Это привело к многочисленным регрессионным ошибкам, так что приношу извинения за неудобства, если у вас тоже что-то сломалось. Кстати, обновился и экспортер PNG - теперь он корректно сохраняет несжимаемые изображения, такие, как пиксельарт. Появился модуль dlib.image.render.shapes с базовыми функциями рисования линий и фигур.
  • В версии 0.6.4 обновился пакет dlib.math, были оптимизированы перемножение матриц и доступ к элементам вектора.
  • Появился новый контейнер std.container.dict - универсальный ассоциативный массив, более совершенная замена std.container.aarray, который теперь помечен как deprecated. Dict реализован на основе префиксного дерева, что позволяет использовать любой тип данных в качестве ключа без необходимости определять хэш-функцию. В плане синтаксиса Dict в целом аналогичен встроенному ассоциативному массиву D, но не выделяет память через сборщик мусора.
Что касается планов на будущее, то на сегодняшний день в приоритете - дальнейший перевод dlib на ручное управление памятью. В версии 0.7.0, например, появятся независимые от Phobos и druntime потоки, а также полностью ручной связный список. Кроме того, будет переписан std.xml.
В более долгосрочной перспективе - будет серьезно улучшен пакет dlib.image, появится потоково-ориентированная система для обработки изображений путем построения направленных графов. Появится поддержка прогрессивного JPEG.
Не исключено также появление инструментов работы с сетью, примитивов для создания серверов (dlib.network?).

Возрождение dprogramming.ru

Давно слежу за этим сайтом - долгое время он был неактивен, затем домен dprogramming.ru принадлежал каким-то левым лицам, и на нем размещался не имеющий отношения к D контент, но теперь его выкупили, и там вновь размещена информация по языку D. Нынешний владелец домена, впрочем, к старому dprogramming.ru не имеет никакого отношения, поэтому сайт абсолютно новый. Сейчас там есть новости по языку и парочка статей - будем надеяться на дальнейшее развитие.

суббота, 19 сентября 2015 г.

Демка с новым освещением


Скачать для Windows

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

пятница, 18 сентября 2015 г.

Динамическое освещение карты

Избавляюсь от статических lightmap'ов и экспериментирую с новым способом моделирования карт. Теперь все поверхности в движке освещаются динамически (число источников света произвольное, как и было задумано):