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

Это редактор биомов. Текстуры на палитре в верхней его части – спутниковые сэмплы участков ландшафта. Их можно изменить, нажав на ячейку – появится окно выбора текстуры. Каждая текстура далее может быть настроена путем изменения её цвета, масштаба, вращения и веса смешивания. Внизу находится палитра с материалами грунта, которые используются в текущем пресете (т.е. для данной планеты).

Редактор биомов с окном выбора текстур сэмплов

Материал грунта – это мелкомасштабные текстуры, такие как камни и трава. При нажатии «Add» появляется аналогичное окно выбора текстур, но на этот раз с материалами грунта, а не спутниковыми сэмплами:

Редактор биомов с окном выбора материалов

Материал грунта – это не простая текстура, а хитрая смесь двух текстур, которая хорошо смотрится на всех масштабах. Это достигается комбинацией текстур «detail» и «modulation» с применением метода удаления тайлинга (повторяющегося узора). Метод описан в этом блог-посте, я лишь добавил отражения/повороты текстуры на каждом шаге. Окно выбора материала показывает уже результат смешивания. Кнопка «Edit» открывает редактор материалов, в котором можно назначать текстуры и настраивать их масштаб, вращение и вес смешивания.

Редактор материалов с окном выбора текстур

В настоящее время настройка вращения имеет всего 2 значения: «включена» и «отключена». Когда она включена, шейдер поворачивает / отражает текстуру в соседних пространственных зонах, которые используется для устранения тайлинга. Это добавляет вариативность без необходимости увеличения разрешения текстуры или использования дополнительных текстур. То же самое используется для спутниковых сэмплов. Можно отключить это вращение/отражение для некоторых текстур, таких как песчаные дюны, иначе получится странный результат.

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

Другая большая работа – подготовка библиотеки текстур сэмплов и матералов. У меня их уже больше 50 штук, некоторые отличные, некоторые не очень. Я решил сразу перейти на PBR текстуры материалов, чтобы устранить двойную работу в будущем. Поэтому после релиза бета-версии, моддеры должны будут искать или создать PBR текстуры для своих аддонов. Это обязательное условие теперь: текстура грунта должна содержать карту альбедо, карту высот (displacement) и карту шероховатости (roughness); также будет добавлена поддержка карты AO (ambient occlusion) и карты металличности. И в релизе все текстуры, скорее всего, будут в формате DDS со сжатием, что также будет обязательным.

PBR-текстурирование выглядит многообещающим. Правда с ним есть некоторые проблемы, которые необходимо решить: блендинг с глобальной текстурой планеты, которая теперь тоже должна быть PBR; устранение артефактов при переходах между материалами; улучшение производительность (30 FPS не есть хорошо). Для последних двух я планирую реализовать некоторое кэширование вместо рендера в реальном времени. Движок будет смешивать материалы и рендерить их в дополнительные тайлы октодерева или в специальную clipmap-текстуру. Clipmap, вероятно, лучше, потому что она позволит реализовать parallax occlusion mapping, которое сделает камни в текстуре объёмными. Так много работы ещё предстоит!

Мне нравится, как мягко теперь выглядит солнечный блик, поэтому все нижеследующие скриншоты были сделаны на рассвете.

Обудить пост на форуме.