Глава 5. Сравнительный анализ и практические рекомендации
Original size 2480x3500

Глава 5. Сравнительный анализ и практические рекомендации

PROTECT STATUS: not protected
This project is a student project at the School of Design or a research project at the School of Design. This project is not commercial and serves educational purposes

5.1. Сравнительный анализ методов анимации

В процессе разработки шейдеров, помимо эстетической привлекательности необходимо уделять пристальное внимание вопросам производительности материала.

Эффекты, обладающие высокой значимостью для повествования, но при этом создающие существенную нагрузку на графический конвейер, требуют оптимизации и упрощения.

Данный принцип особенно критичен в контексте игровой индустрии, где плавность рендеринга является одним из главных проводников иммерсивного опыта игрока, и даже самый совершенный [с художественной точки зрения] шейдер теряет часть своей ценности, если его реализация приводит к просадкам частоты кадров, «фризам» и багам.

При создании кинематографического контента [например, итогового ролика для выпускной квалификационной работы], ограничения, связанные с необходимостью рендеринга в реальном времени, ослабевают.

Это позволяет использовать более ресурсоемкие методы, однако фундаментальный принцип баланса между качеством и сложностью остается актуальным.

Пренебрежение вопросами оптимизации даже в неинтерактивном пайплайне может привести, например, к долгому времени рендеринга, потенциальным артефактам и даже ошибкам.

Таким образом, осознанный выбор техник и оценка соотношения «визуальная составляющая/ вычислительная стоимость» являются неотъемлемой частью создания шейдеров.

В данной главе рассмотренные и собранные ранее шейдеры будут оцениваться по следующим параметрам:

— производительность; — сложность реализации; — гибкость управления.

big
Original size 2400x1000

Шейдер воды: 1 — Lit; 2 — Wireframe; 3 — Shader Complexity.

Производительность различных методов

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

Легче всего визуализировать, насколько сложный вышел шейдер, с помощью особого режима отображения: Optimization Viewmodes — Shader Complexity [alt+8].


Shader Complexity Viewmode — это специализированный режим визуализации в Unreal Engine, который отображает вычислительную стоимость шейдеров для каждого видимого фрагмента сцены в реальном времени.
Это важный инструмент диагностики производительности, позволяющий быстро идентифицировать материалы, создающие наибольшую нагрузку на GPU.
Цветовая шкала сложности:
Зеленый — указывает на низкую сложность шейдеров;
Красный — представляет среднюю сложность шейдеров и требует больше графической обработки;
Фиолетовый/Белый — указывает на высокую сложность шейдеров, которые более требовательны к GPU.
0

1 — Shader Complexity; 2 — Lit.

Во время настройки материала также можно обратить внимание на окно «Stats», в котором прописывается важная информация относительно устройства шейдера.

Там же можно увидеть и количество инструкций — один из показателей сложности шейдера.

Примеры статистики шейдеров.

Шейдеры, в основе которых лежит UV деформация демонстрируют среднюю сложность в выполнении и нагрузке на GPU.

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

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

Особенно ресурсоёмкой является работа с многоканальными шумами, а также их пространственно-временная анимация [например, панорамирование с разными скоростями для создания эффекта турбулентности].

Использование специализированных функций, подобных Motion_4WayChaos, значительно увеличивает вычислительную нагрузку.

Original size 1200x514

Сложность шейдера с Motion_4WayChaos и Opacity.

Анимация на основе World Position Offset [вертексная анимация] характеризуется зависимостью производительности от особенностей как самого материала, так и обрабатываемой геометрии. Её вычислительная сложность формируется под влиянием нескольких факторов.

На низкополигональных объектах WPO демонстрирует превосходную производительность, так как модифицируется относительно небольшой объём данных. Однако на высокополигональных моделях стоимость операции зачастую возрастает.

Производительность также напрямую определяется математической сложностью функции, генерирующей смещение. Простые синусоидальные волны или смещения на основе текстуры относительно недорогие. Напротив, процедурные алгоритмы, например, шум, значительно увеличивают нагрузку шейдера.
Original size 1200x551

Сложность шейдера, основанного на WPO; слева — opaque; справа — translucent.

Наиболее существенное падение производительности наблюдается при комбинации WPO с полупрозрачными [Translucent] материалами.

Original size 1106x581

Управление отображением слоев и его влияние на сложность шейдера.

Многослойные материалы [такие как Material layers, Substrate] могут значительно уменьшить производительность, однако в очередной раз все зависит от сложности применяемых нод для деформации, смешивания и наложения слоев друг на друга.

В первом случае Material Layers можно настроить так, чтобы сложные процедурные методы анимации переключались в Instance с помощью StaticSwitchParameter, что позволит исключить тяжелые фрагменты нодовой системы в том или ином случае. Также данный тип материала позволяет управлять отображением слоев.

Таким образом, данная система как дает инструменты для создания сложных слоистых материалов, так и предоставляет возможность облегчить результат, скрыв часть наработок.

Substrate же в среднем демонстрирует более высокую сложность создаваемых шейдеров, что ощутимо заметно при перемещении в сцене.
Original size 1300x470

Substrate: слева — однослойный базовый материал; справа — трехслойный шейдер.

Parallax Occlusion Mapping [POM] представляет собой довольно оптимизированную технику симуляции рельефа. Ее ключевое преимущество заключается в том, что она не модифицирует исходную геометрию меша, работая исключительно с данными, уже проецируемыми на объект.

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

Однако производительность POM напрямую зависит от параметров функции, одним из которых является Max Steps. Увеличение этого параметра повышает качество и точность определения рельефа, но приводит к значительному увеличению вычислительной нагрузки.

Render Target находится в среднем сегменте производительности, так как в данном случае появляется сложность с выводом изображения, которое передается в камеру в реальном времени.

Сложность реализации различных подходов

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

Процедурные анимации и деформации UV-координат

представляют собой фундаментальный и наиболее доступный уровень создания динамики. Сложность здесь варьируется от низкой до средней.

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

На данном этапе требуется понимание принципов работы нод и умение комбинировать их для достижения нужного паттерна движения.

Вертексные трансформации

Переход к материалам, задействующим трансформацию геометрии, несколько повышает требования и потенциальные риски. Сложность реализации — от средней до высокой.

Использование WPO для простых деформаций всей геометрии объекта, таких как пульсация, лёгкое дрожание, требует понимания того, как ноды будут задавать и менять движение объекта и как именно будет происходить их смещение мире. Ключевая задача на данном этапе — понять, как избежать визуального «разрыва» меша и артефактов на стыках объекта.

Original size 1040x485

Демонстрация слоев в Material Layers. В представленном примере используется 3 слоя.

Многослойные материалы

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

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

Художественная настройка множества слоев, масок и параметров может стать запутанной, поэтому создание Material Layers требует особой усидчивости и концентрации.

Сложность в создании Substrate материалов заключается в принципиально новой модели, для которой существуют свои ноды и своя логика построения шейдера.

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

Гибкость управления и адаптивности

Каждый метод создания динамических шейдеров в Unreal Engine обладает своим уникальным балансом между гибкостью настройки, адаптивностью к разным задачам и сложностью управления. Выбор подхода напрямую влияет на то, как быстро можно вносить изменения, адаптировать эффект под новые условия и масштабировать его использование в проекте.

Анимация UV и процедурные текстуры [Panner, Noise, Time] обладают довольно высокой гибкостью, так как все константы [скорость панорамирования, масштаб шума, частота осцилляции] легко параметризуются и настраиваются в Material Editor.
Original size 1400x680

Адаптивность Render Target-a.

Гибкость Render Target-а зависит от цели применения. Например, если нужно заменить сцену, которая должна отправляться в рендер-текстуру, придется пересобрать что-то новое под конкретную задачу, что займет определенный отрезок времени. С данной точки зрения цели рендеринга являются не самыми гибкими системами.

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

Многослойные материалы — это один из самых гибких способов создания и управления сложными визуальными эффектами. Все потому, что такой шейдер разбит на отдельные, самодостаточные части, каждая из которых отвечает за что-то одно, будь то базовый цвет, слой с анимированным шумом, различного рода царапины, свечение и многое другое.
Смешивая слои между собой, включая и отключая отображение, можно быстро создавать совершенно разные материалы вместо того, чтобы из раза в раз с нуля собирать сложную нодовую схему.

5.2. Рекомендации для конвейера производства

5.2.1. Организация работы с анимированными материалами

Подводя итоги работы с анимированными шейдерами, можно вывести определенные рекомендации по удобной и качественной работе с материалами.

Перед созданием любого сложного шейдера нужно четко обозначить, каким задачам и целям будет соответствовать эффект.

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

Этот этап критически важен для предотвращения бесконечных итераций создания форм одного и того же эффекта.

0

MF_OTR [offset, tiling, rotation], пример собранной функции материала.

Рекомендуется создание централизованной библиотеки Material Functions, содержащей часто используемые компоненты для распространенных типов анимаций. Например, функция, которая контролирует тайлинг, вращение и сдвиг для того, чтобы не прописывать параметры лишний раз для каждой новой текстуры.

Пример применения Material Function.

Важным пунктом является четкое соблюдение стандартов именования материалов [нейминг]. К примеру, приписка MM_, если это Master Material, MI_, если Material Instance и так далее.

Всегда стоит правильно и логически именовать параметры, объединять их с помощью 'C' [англ. comment], а также группировать их по смысловым частям шейдера. Например, все параметры, которые относятся к Base Color поместить в группу 01_BaseColor, чтобы структурировать и облегчить дальнейшую работу с материалом.

При работе в команде можно также оставлять пояснительные комментарии о том, за что конкретно отвечает та или иная нода.

Original size 2261x777

Пример нодовой системы для настройки Base Color в рамках Master Material-a для персонажей, логичные названия параметров.

Глава 5. Сравнительный анализ и практические рекомендации
Chapter:
1
2
3
4
5
6
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more