Кстати, модель средневекового дома (и еще несколько моих игровых моделей) вы можете купить по более чем скромным ценам на CGTrader, чем поддержите мой проект по созданию современного 3D-движка для D.
dagon
dlib 0.13.0 и Dagon 0.7.0
Изменения в dlib:
- Из основной ветки был удален пакет dlib.async. Решение об удалении было принято из соображений безопасности. К сожалению, у пакета в настоящее время нет активных мейнтейнеров, некому исправлять баги, поэтому я посчитал dlib.async недостаточно стабильным для существования в качестве официальной части dlib – хотелось бы, чтобы все компоненты dlib были в одинаковой степени актуальны и поддерживаемы. dlib.async продолжит существование в рамках ветки async, но пользователям рекомендую обратить внимание на более актуальные и законченные асинхронные движки – такие, как vibe-core
- Добавлен модуль dlib.image.canvas с реализацией класса Canvas – векторного рендер-движка с интерфейсом, похожим на HTML5 canvas. В настоящее время он поддерживает отрисовку полигонов и фигур Безье с заливкой и контуром. Рендеринг осуществляется в заданное пользователем изображение SuperImage.
- Улучшен декодер файлов Radiance HDR/RGBE – теперь он читает файлы, начинающиеся со строки “#?RGBE”
- Добавлены функции tone mapping’а (hdrTonemapReinhard, hdrTonemapHable), новые алгоритмы выделения краев (edgeDetectLaplace, edgeDetectSobel), новые методы для структуры Color4f (toLinear, toGamma)
- Добавлены новые функции для векторов (reflect, refract, faceforward)
- Добавлены функции для вычисления касательного вектора кривых Безье (bezierTangentVector2, bezierTangentVector3).
- Полноценный HDR-рендеринг с автоматической экспозицией и tone mapping’ом
- Поддержка HDR-карт окружения в формате Radiance HDR/RGBE
- Улучшенные каскадные тени (более эффективное заполнение каскадами пирамиды видимости)
- Переписан весь код, отвечающий за PBR. Теперь используется модель Кука-Торренса вместо Блинна-Фонга. Добавлена поддержка текстур шероховатости (roughness) и металличности (metallic)
- Переписана система пост-обработки. Все фильтры теперь являются частью стандартной сцены (BaseScene3D), их остается только включить и настроить. Добавлены фильтры размытия при движении, свечения и цветокоррекции (LUT), улучшен фильтр хроматической аберрации
- Улучшено встроенное процедурное небо – теперь движок сам генерирует геометрию небесного купола
- Добавлены слои для сортировки объектов при рендеринге
- Камера от первого лица облегчает рендеринг оружия в шутерах, предоставляя матрицу оружия
- Улучшена поддержка джойстиков, добавлена поддержка рулей
- Dagon теперь использует dlib 0.13.0.
Улучшенные glow и lens distortion
Пост-обработка в Dagon теперь стала намного проще – все встроенные фильтры легко включаются/выключаются и настраиваются при помощи специального API, являющегося частью класса BaseScene3D. Есть и возможность добавлять свои фильтры.
Тени с учетом карты высот
vec4 shadowCoord = shadowMatrix * vec4(eyePosition + eyeNormal * height * 0.3, 1.0);
Таким образом, мы создаем фейковую точку, расположенную выше реальной поверхности, и тень для нее будет рассчитываться как если бы поверхность была действительно рельефной. Эффект особенно заметен на краях тени, углах и скруглениях – там, где при обычном расчете теневых координат была бы сплошная тень, появляются освещенные участки:
Главный недостаток метода – расчет теневых координат происходит пофрагментно, а не повершинно, но на современном железе это не слишком большая жертва.
Не знаю, использовалась ли такая техника раньше, и как она называется – может быть, что-то вроде height-corrected shadow mapping?