CRYENGINE EaaS: Создание Detail Maps
Это адаптация оригинальной статьи Crytek по Detail mapping.
Detail maps (карты/текстуры детализации) предназначены для увеличения микро и макро детализации поверхности при минимальном снижении производительности сцены.
В CRYENGINE EaaS Detail map включает в себя одновременно Diffuse, Normals и Gloss. То есть одна специальная текстура заменяет три.
Есть два типа Detail maps:
Создаёт микродетали для задания фактуры материала (ткань, дерево, кожа и прочее). Представляет собой бесшовную текстуру (tile), которая несколько раз повторяется по модели (tiling).
Создаёт макродетали для подчёркивая массивных форм (валуны, скалы и прочее). В основном используется для объектов развёрнутых UVW Unwrap, то есть повторяется один раз объект.
Пример работы.
Detail map выключена:
Detail map включена:
Макро.
Пресет CryTif: Detail_MergedAlbedoNormalsSmoothness_Lossless
В этом примере используется особый подход. Камень развёрнут UVW Unwrap, но его основная текстура бесшовная (tile) и повторяется (tiling) на нём около 5 раз. Швы старательно спрятаны. В свою очередь Detail map повторяется лишь раз, формируя интересную массивную форму. В итоге детализация намного более высокая и качественная, чем использование этих подходов отдельно.
Микро.
Пресет CryTif: Detail_MergedAlbedoNormalsSmoothness
Detail map выключена:
Detail map включена:
В этом примере текстура бетона бесшовная (tile) и повторяется (tiling) по стене несколько раз. Фактура бетона создаётся Detail map, которая тоже бесшовная (tile) и также повторяется (tiling) несколько раз.
___________________________________________
Создание Detail map.
Такая текстура содержит в себе информацию одновременно о Diffuse, Normals и Gloss. Информация особым образом организована в каналах текстуры:
Красный канал (Red): сюда целиком копируется альбедо диффузной текстуры и вставляется в красный канал (Diffuse) создаваемой Detail map.
Зелёный канал (Green): необходимо выделить и скопировать красный канал текстуры нормалей (Normal Red), а затем вставить в зелёный канал создаваемой Detail map.
Синий канал (Blue): целиком копируется и вставляется карта Gloss.
Альфа-канал (Alpha): необходимо выделить и скопировать зелёный канал нормали (Normal Green), а затем вставить в альфа-канал создаваемой Detail map.
Итоговый результат будет выглядеть примерно так:
___________________________________________
Экспорт через CryTif.
Чтобы текстура работала нужно обязательно провести экспорт через специальный плагин для Photoshop - CryTif, который идёт в комплекте к движку.
В CryTif есть два пресета для экспорта:
Detail_MergedAlbedoNormalsSmoothness (используется BC7 компрессия) - используется для микро-деталей (фактура ткани, дерева, кожи и прочего).
Detail_MergedAlbedoNormalsSmoothness_Lossless - используется для макро-деталей (подчёркивание массивных форм, например валунов, скал и подобного). Эта текстура не сжимается и весит в 4 раза больше, поэтому нужно быть осторожным и использовать её в разрешении не более 512х512.
___________________________________________
Подключение текстуры в материале.
Чтобы активировать Detail Map, необходимо созданную ранее текстуру поместить в слот Detail:
На скриншоте можно видеть, что Tiling (повторы текстуры - IsTileU и IsTileV) регулируются прямо в слоте материала.
Когда всё подключено, то нужно активировать галку "Detail mapping" в свитке Shader Parameter:
Примечание: Стоит помнить, что эту галку нельзя активировать, если слот Detail не содержит текстуры.
После активации галки появятся три регулируемых параметра:
Detail bump scale: регулирует интенсивность нормали, которая была размещена в зелёном (Green) и альфа (Alpha) каналах Detail Map. Регулирование этого параметра не влияет на интенсивность нормали, подключенной в слот Normalmap.
Detail diffuse scale: регулирует интенсивность диффуза, который был помещён в красный (Red) канал. Влияет на смешивание с текстурой диффуза, помещённой в слот Diffuse.
Detail gloss scale: регулирует интенсивность Gloss, который был помещён в синий (Blue) канал. Влияет на смешивание с текстурой Gloss, которая идёт в DDNA.
Если в материале Diffuse Color выставлен на 0.0.0, то диффуз Detail Map не будет виден.
Тоже самое применимо к Gloss. Если Specular Color 0.0.0, Gloss не будет виден.












