Всем полный дзен !
Нет, я не про деньги. По крайней мере, не сегодня. Сегодня немного размышлений над пайплайном для материалов разных объектов.
Для примера немного пошаманив, я собрал шейдер для металлических объектов. И для теста затекстурил им решётку.
Решетка намеренно гиперлоупольная, чтобы показать всю важность работы над материалами.
Подобный тип работы скорее интеллектуальный, так как это в будущем много на чем отразиться и надо сразу по максимуму всего учесть.
Однако, слишком затягивать тоже не стоит. Иначе есть риск увязнуть в дебрях своего мозга навсегда и так ничего и не сделать. Вы в любом случае о чем-то забудете. Но важно создать какой-то хотя бы примерный набросок, минимально рабочий прототип, от которого уже потом можно будет отталкиваться.
Сначала определяемся с текселем.
Его я принял за 1024 пикселя на метр. Это даже чуть больше, чем сейчас принято для игр от 3го лица. Намерянно беру с запасом, идя на опережение текущих технологий... К тому же всегда проще откатиться в меньшую сторону, чем наоборот.
Готовый мастер-материал имеет параметры:
— UVшка — для регуляции тайлинга микротекстуры
— сменная текстура с масками
— сменная карта нормалей
т. е. для каждого объекта с уникальной геометрией будет создан свой инстанс-материал, а вот мастер-материал у них один общий. Это снизит нагрузку на железо.
второй важный нюанс — то, что сменные текстуры (маски и нормали) могут быть весьма низкого разрешения, особенно маски. Так как детализация создается уже внутри шейдера, а маски лишь показывают где чем красить объект.
Чтобы было понятнее: на скрине у меня маски имеют разрешение всего 256×256 пикселя. и это для объекта 3 на 3 метра! т. е.
с обычным безмасочным подходом мне бы пришлось брать текстуру 4к (4096×4096) и плюс для каждого объекта был бы нужен свой уникальный мастер-материал. А так можно обойтись лишь маленькой текстуркой.
карту нормалей, также можно уменьшить примерно до 1024 пикселя без явной потери качества, как показали тесты.
материал имеет 4 слоя:
- собственно металл с выбором цвета и блеска
- слой ржавчины (по маске)
- слой грязи (по маске)
- слой царапин/повреждений/потёртостей (по маске)
в дальнейшем я планирую добавить вертекс-пэинт. это позволит избавиться от масок и вносить разнообразие в однотипные ассеты на базе одной геометрии и одного инстанс-материала делать совершенно разные (внешне) объекты.