Трассировщик лучей на D

Решил выложить свой трассировщик лучей, написанный для соответствующего цикла статей в «FPS» — может, кому-нибудь пригодится. Он умеет рендерить плоскости и сферы, поддерживает текстуры, отражения (в том числе размытые), туман, мягкие тени, Ambient Occlusion и антиалиасинг.

Рендерит не очень быстро, код не слишком оптимизирован (упор делался, в основном, на простоту и наглядность исходников). Основная оптимизация заключается в распараллеливании трассировки на несколько потоков, что дает заметный прирост производительности на многоядерных процессорах.

Проект написан на D, для работы с изображениями и математических вычислений использует библиотеку dlib. Исходники умещаются в 400 строк. Лицензия — public domain или CC0, на ваш выбор.

Скачать

Heat haze

Сделал эффект «искажения пространства», похожий на марево от жары — думаю применить его где-нибудь в игре:

x86_64! Ура, товарищи!

Наконец-то мне удалось собрать Atrium под 64-битную Windows! Пришлось ставить VS 2015, но оно стоило того…

Заодно проверил на практике LDC 1.0.0 — производительность, как и несколько лет назад, в разы выше, чем с использованием DMD, что не может не радовать. Теперь все тестовые сборки и промежуточные релизы будут собираться LDC и снабжаться 64-битными версиями.

Интерьер

Продолжаю работу над дизайном интерьера станции:

Хронология развития движка Atrium

Порой интересно оглянуться назад и оценить пройденный путь. Atrium разрабатывается с 2013 года, и графический движок проекта с того времени претерпел серию значительных эволюционных изменений. Одновременно менялся и визуальный стиль игры:

Не могу не отметить, что процесс разработки идет намного медленнее, чем я изначально предполагал — только на графику с физикой ушло целых три года. Надеюсь, читатели блога отнесутся к этому с пониманием, ведь я работаю над движком в одиночку, в свободное время.

PBR-окружение в Atrium

Продолжаю адаптировать Atrium к PBR, пробую различные варианты колорита окружения и объектов:

PBR. Продолжение

Адаптирую модель гравитационного излучателя к новому физически корректному рендеру:

GitHub снова заблокирован

Они все не уймутся. Не знаю, по ошибке или преднамеренно, но на днях в России был заблокирован IP-адрес 151.101.36.133, по которому находятся сервера GitHub для статических данных (assets-cdn.github.com, raw.githubusercontent.com). В результате веб-интерфейс Гитхаба оказался в неработоспособном состоянии. Странички проектов (gh-pages) тоже перестали работать. По всей видимости, блокировку пока осуществляют не все провайдеры (поэтому, наверное, пока все молчат), но это лишь вопрос времени.
В общем, огромное спасибо за это нашим дорогим властям. Уже в который раз.

PBR. Шероховатость

Теперь DGL автоматически генерирует размытые текстуры окружения для материалов с разной степенью шероховатости:

А вот как смотрится в движке пистолет Cerberus, известная PBR-модель Андрея Максимова: