понедельник, 28 декабря 2015 г.

Итоги 2015 года

Наступают новогодние праздники - а значит, настало время традиционного подведения итогов по проделанной за год работе:
  • Вышло 6 номеров электронного журнала "FPS" (№№ 34, 35, 36, 37, 38, 39). В 2016 году журналу исполняется 8 лет, не за горами и юбилейный 40-й номер.
  • Открылся ресурс CG World - новостной блог, посвященный компьютерной графике
  • Значительно улучшен графический движок DGL, на котором создается Atrium. Реализовано динамическое освещение, шейдерные эффекты, тени, пост-процессинг и т.д.
  • Игра "засветилась" в PC Magazine, на IndieDB, а также в официальной группе новостей и русскоязычных сообществах по языку D.
  • Обновился сайт Atrium.
  • Состоялся выход dlib 0.7.0 со множеством улучшений во всех модулях библиотеки и поддержкой Travis-CI.
  • Физический движок dmech обновился до версии 0.2.6, обзавелся C-интерфейсом, компиляцией в динамическую библиотеку и поддержкой Mac OS X. Появились новые демки и уроки по движку.
  • Система сборки Cook обновилась до версии 2.1.x. Основные нововведения: поддержка response-файлов, кросс-компиляции и поддиректорий во внешних зависимостях.
Чем для меня был интересен прошедший 2015 год? Вот самые, на мой скромный взгляд, значимые события в мире CG, СПО и любительского геймдева:
  • Появление Vulkan, графического API нового поколения, который должен преодолеть недостатки OpenGL и Direct3D, сократив прослойку между пользовательским кодом и видеодрайвером, что позволит более глубоко оптимизировать приложения.
  • Выход нового короткометражного открытого фильма от Blender Institute - "Космическая прачечная" (проект Gooseberry). 
  • Релиз Krum: Edge of Darkness - игры, созданной на Blender Game Engine, которая создавалась несколько лет.
  • "Выстрел" Krita, которую я бы смело назвал программой года. Разработка этого малоизвестного ранее пакета сейчас идет семимильными шагами, по популярности Krita догоняет GIMP, а по функциональности превосходит уже многие коммерческие продукты.
  • GIMP 2.9 с поддержкой новых цветовых режимов и OpenEXR.
  • Открытие исходников Unreal Engine 4 и PhysX.

пятница, 25 декабря 2015 г.

Техно-демо

Результат моей работы за последний месяц - практически полный рефакторинг DGL: значительно улучшен убер-шейдер (для всех объектов используется один и тот же шейдер), повысилось качество освещения, появилась поддержка экранного антиалиасинга.

Скачать для Windows

Сразу после Нового года начну перенос Atrium на новую версию движка.


Новый сайт Atrium

Обновился дизайн страницы проекта Atrium - http://gecko0307.github.io/atrium.


воскресенье, 20 декабря 2015 г.

Новые скриншоты

Внес множество улучшений в графический движок - в основном, они касаются архитектуры, но и сама картинка стала ярче:


Да простят меня id Software за неоднократное использование их модели =)

понедельник, 30 ноября 2015 г.

Не удержался

Давно уже использую эту модель для тестирования разного рода шейдеров и эффектов, вот и в этот раз решил посмотреть, как знаменитый Hellknight из Doom 3 будет смотреться в движке:



Впрочем, монстров в Atrium, скорее всего, не будет - игра чисто интеллектуальная.

четверг, 12 ноября 2015 г.

Dlang.ru вернулся к жизни

Позитивная новость для российских пользователей D: администрация портала dlang.ru, главного русскоязычного сайта по языку D, объявила о завершении технических работ - движок сайта полностью переписан, и с сегодняшнего дня сайт, после годового простаивания, вновь функционирует в обычном режиме.

среда, 4 ноября 2015 г.

воскресенье, 1 ноября 2015 г.

суббота, 24 октября 2015 г.

Тени на шейдерах

Наконец-то переписал тени с использованием FBO и GLSL:


Следующим шагом будет variance shadow mapping (VSM).

вторник, 13 октября 2015 г.

Будущее Issuu

Мне, как пользователю издательской платформы Issuu.com, сегодня пришло приглашение принять участие в их анонимном опросе для клиентов-авторов. В числе прочего, в нем значились следующие вопросы, натолкнувшие меня на размышления: "How would you feel if you could no longer use issuu?", "Would you likely use an alternative if issuu was no longer available? If so, what?"
Очень странно спрашивать подобное, если только вы не планируете закрыть сервис. А чем черт не шутит?..

суббота, 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'ов и экспериментирую с новым способом моделирования карт. Теперь все поверхности в движке освещаются динамически (число источников света произвольное, как и было задумано):


среда, 29 июля 2015 г.

Atrium - главная героиня

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


На днях будет эскиз в полный рост.

среда, 22 июля 2015 г.

Редактор уровней для DGL и Atrium

Решил продолжить работу над редактором уровней, который ранее делал на основе GTK. Сейчас связываться с GTK для этой задачи уже как-то не хочется, поэтому решил написать для него собственный графический тулкит с использованием OpenGL. На данный момент готова оконная система, навигация по сцене и манипулятор для перемещения объектов.


среда, 15 июля 2015 г.

Статьи по dlib

На сайте студии LightHouse Software, использующей и активно продвигающей язык D, опубликовано несколько интересных статей по использованию коллекции библиотек dlib - в частности, о рисовании фрактала Курликю и графических примитивов с использованием dlib.image, а также о процедурном генерировании картинки с Псаем с последующим сохранением в файл.

http://lhs-blog.info/programming/dlang/fraktal-kurlikyu
http://lhs-blog.info/programming/dlang/dobavlenie-graficheskih-primitivov-v-dlib
http://lhs-blog.info/programming/dlang/gangnam-style-v-d
http://lhs-blog.info/programming/dlang/sohranenie-izobrazheniya-v-fayl

воскресенье, 12 июля 2015 г.

PC Magaine: игры изнутри

Не так давно я со своим Atrium принял участие в опросе российского филиала журнала PC Magazine, посвященном разработке современных игр: как устроены игры изнутри, как программируются серверы, как моделируется игровой мир, какие используются средства разработки. Недавно материал опроса был опубликован на сайте журнала - почитать мой ответ, а также информацию от многих других российских разработчиков можно по следующей ссылке:

http://pcmag.ru/reviews/sub_detail.php?ID=50061&SUB_PAGE=4

суббота, 4 июля 2015 г.

Русский форум по D

Судьба dlang.ru не совсем ясна, и поэтому русскоязычные пользователи D решили объединиться на новом форуме - http://lang-d.tk. От администратора:

"Создание данного форума преследовало одну единственную цель: восполнить брешь в виде отсутствия русскоязычных форумов по языку программирования D в рунете. Единственный, на сколько мне известно, специализированный сайт по данной тематике - http://dlang.ru, который месяц уже в неработоспособном состоянии. А время идет. Давайте попробуем общаться тут".

Так что - приглашаю всех на новый форум!

среда, 1 июля 2015 г.

Обновление всех проектов

На днях обновились библиотеки dlib, dmech, DGL и игра Atrium.
  • В коллекции библиотек dlib 0.6.0 значительно улучшен декодер JPEG, добавлена поддержка новых типов прореживания и APP-маркеров. Улучшено управление памятью (удалять теперь объекты можно через интерфейсы и родительские классы), добавлены независимые от сборщика мусора реализации классов изображений и файловых потоков. В пакете dlib.math появилась реализация некоторых идиом комбинаторики (dlib.math.combinatorics).
  • Физический движок dmech 0.2.0 включает необходимые изменения для поддержки dlib 0.6.x. Также к движку теперь прилагается небольшая документация в виде уроков.
  • DGL/GC-free, независимая от сборщика мусора ветка проекта, теперь тоже переведена на dlib 0.6.x.
  • Вышла первая альфа-версия Atrium (0.0.1a). Релиз, главным образом, обозначил перевод игры на последние версии вышеперечисленных библиотек. Есть готовые сборки для Windows и Linux.

суббота, 27 июня 2015 г.

Atom

Много лет под Windows пользуюсь текстовым редактором Programmer's Notepad, решил сейчас попробовать что-то новое. Обратил внимание на фирменный редактор от GitHub - Atom.


Приятно удивила поддержка разделяемых по горизонтали и вертикали рабочих панелей а ля Emacs или Vim. Есть темная и светлая темы оформления. Редактор открывает в качестве проекта любой каталог и отображает дерево файлов - мне лично всегда не хватало такой удобной мелочи.

Но главная "киллер-фича" - поддержка дополнений. Есть встроенный каталог пакетов, через который удобно искать дополнения - всего их очень много, пакеты для Atom создают все, кому не лень. Я, например установил atom-dlang (подсветка синтаксиса для D), atom-terminal (позволяет открыть окно терминала в папке с проектом), color-picker (диалог выбора цвета), atom-html-preview (просмотр HTML-страниц внутри редактора).

вторник, 2 июня 2015 г.

Бенчмарк загрузки PNG

Не так давно один из участников сообщества D провел любопытный тест, сравнив скорости загрузки изображения в формате PNG с различными библиотеками. В сравнении участвовали D-библиотеки (dlib и imageformats), а также C#.

Использовалось RGB-изображение размером 2048х2048, компилятор DMD 2.0.67 c флагами -release -inline -O. Задачей была загрузка из PNG, отражение по горизонтали и сохранение в PNG. Результат получился следующий:

C#:
Загрузка - 90 мс
Отражение - 10 мс
Сохранение - 380 мс

D (dlib):
Загрузка - 500 мс
Отражение - 30 мс
Сохранение - 950 мс

D (imageformats):
Загрузка - 230 мс
Отражение - 30 мс
Сохранение - 1100 мс

Тред с обсуждением

На днях обязательно сделаю собственный тест - необходимо выяснить, что именно тормозит в декодере.

четверг, 28 мая 2015 г.