PSX

Не все, наверное, знают, что я изучал разработку под PlayStation – с этой приставкой у меня связано множество ностальгических воспоминаний. Все началось в середине нулевых, в годы повального увлечения эмуляцией ретро-консолей – тогда появился свободный SDK MIPS-GCC с библиотеками от Blade, на основе которого энтузиасты создали PsOne Development Studio. К сожалению, этот SDK имел довольно ограниченные возможности – например, не поддерживал чтение файлов с CD, что мешало создавать на нем что-то серьезное.

По счастью, в какой-то момент в Сети появился оригинальный SDK, который использовался для разработки некоторыми студиями в 90-х – PsyQ от SN Systems Ltd и Psygnosis. Это полнофункциональный SDK, предоставляющий доступ ко всем возможностям приставки, а также содержащий подробную документацию. В процессе изучения PsyQ я накопил достаточно много всяких полезных штук и решил, в итоге, сделать для них небольшую страничку: https://psxdev.xtreme3d.ru.

Пока на сайте есть лишь архив утилит и документации – в скором времени планирую выложить также свои примеры и демки.

Dagon 0.12

Вышла новая версия движка Dagon. Главное нововведение в этом релизе – поддержка моделей в формате glTF (gltf+bin). glTF представляет собой текстовое описание трехмерной сцены на основе JSON, хранящее всю информацию, необходимую для ее отрисовки (граф, материалы, текстуры и т.д.). Главной особенностью glTF является лейаут, оптимизированный по скорости загрузки – для передачи в графические API данные из glTF практически не нужно декодировать или конвертировать, поэтому сцены загружаются очень быстро.

Также значительно улучшен загрузчик текстур в формате DDS. Список поддерживаемых пиксельных форматов расширился (в частности, 32- и 16-битными RGBA с плавающей запятой), появилась поддержка кубических карт и mip-уровней. К примеру, теперь стало возможно загружать кубические карты с предрассчитанными зеркальными лепестками (specular lobes) для разных уровней шероховатости. Декодирование неигровых форматов изображений (PNG, JPEG и др.) в Dagon теперь осуществляется при помощи библиотеки stb_image, что в разы ускорило загрузку ресурсов. Как бесплатный бонус – появилась поддержка формата PSD.

Добавлен новый эффект постобработки Depth of Field (расфокусированность) с реалистичным боке и настройками оптики. Исправлены некоторые баги постобработки и отложенных эффектов – в частности, устранен артефакт “черных точек”.

На смену встроенному физическому движку dmech идет привязка к Newton Dynamics, реализованная как расширение dagon:newton (подключается к проекту как отдельная зависимость). Newton предоставляет отличный компромисс между производительностью и стабильностью симуляции, поддерживает все стандартные геометрические тела, а также поддержку физики для ландшафтов и произвольных объектов (автоматически генерирует выпуклые оболочки для мешей).

Dagon теперь использует SDL 2.0.14.

Dagon и EARenderer

На YouTube появилось видео со сравнением двух рендер-движков, для D и C++ – Dagon и EARenderer.

Быстрая загрузка текстур

Декодирование некоторых форматов текстур (PNG, JPEG и др.) в Dagon теперь осуществляется при помощи библиотеки stb_image, что в разы ускорило загрузку игровых ресурсов. Как бесплатный бонус – появилась поддержка формата PSD.

Декодирование HDR и DDS по-прежнему основывается на функциях dlib.image. В будущем хочу также добавить декодер KTX, нового формата текстур от Khronos.