PBR рендеринг №1

Duke экспериментирует с PBR (physically-based rendering) - физическим методом рендеринга, в сочетании с IBL (image-based lighting) - освещением на основе карт окружения. Чтобы интегрировать это в SE, была добавлена поддержка PBR текстур для кораблей, возможность указать, требует ли материал карту окружения, и дополнительный проход фильтрации созданной карты окружения (специальное размытие, необходимое для PBR и IBL). Таким образом, модели кораблей теперь освещаются своим реальным окружением, а характеристики их поверхности (отражательная способность и рассеивающие свойства) задаются текстурами попиксельно. Набор текстур включает:
Пока что карты шероховатости, металличности и AO объединены в единую RGB текстуру, но в будущем можно будет задавать любые комбинации (например, поместить карту металличности в альфа-канал карты альбедо, а шероховатости - в альфа-канал карты нормалей).
Тестовые скриншоты пока не выглядят на 100% правильными, но это только начало. Стандартный тест PBR - массив шариков с постепенно изменяющейся металличностью (сверху вниз) и шероховатостью (слева направо):
В файлах материалов корабля *.sml введён новый тег MaterialPBR {...} для описания PBR-материала. В нём задаются пути к вышеупомянутым текстурам, а также аддитивные и мультипликативные константы. Последние можно использовать для подстройки внешнего вида материала или для задания материала без текстур, то есть с однородным цветом, шероховатостью или металличностью, как, например, на скриншоте с шариками. Таким образом, SE теперь поддерживает как PBR, так и старые «specular» материалы (они используются для старых моделей кораблей, материалы которых описаны в тегом Material {...} в скрипте).
Тестовая модель Damaged helmet:
Тестовая модель Cerberus:
Эта система всё еще требует серьёзной доработки, поэтому не ожидайте, что она будет завершена в 0.990. Основная проблема - скорость обновления карт окружения. Рендеринг самой карты окружения - и так сложная задача для SE (вспомните, как настройки качества чёрных дыр и варп-эффекта влияют на производительность). А проход фильтрации сгенерированной карты ещё хуже, шейдер очень тяжёлый, т.к. вычисляет двумерную свёртку. Также есть проблемы с учётом освещения от солнца, которое должно быть аналитическим (так что на него не будут влиять окклюдеры, такие как облака, горы и другие корабли - для их учёта надо реализовать тени). Но всё же моддеры могут уже начать переводить свои старые аддоны кораблей на PBR текстуры. Существует множество программ, которые могут помочь в преобразовании старых текстур в PBR текстуры, например, эта.
Обсудить на форуме.







