Пользовательские UVs в Unreal Engine 4

0
28
Пользовательские UVs в Unreal Engine 4

На GPU вершинный шейдер запускается для каждой вершины, а пиксельный шейдер запускается для каждого пикселя. Почти все материальные узлы в Unreal Engine 4 выполняются для каждого пикселя. Хотя узел UV Coordinate может быть либо частью вершинного, либо пиксельного шейдера, функция CustomizedUVs запускается только в вершинном шейдере и обеспечивает увеличение производительности за счет выполнения тех же вычислений в пиксельном шейдере. Это дает отличный способ ускорить даже рисование текстуры. Хотя система не ограничена математикой, которую вы запускаете на UV-объектах, результат будет зависеть от тесселяции вашей меши.

Примечание: Индивидуальные UV-фильтры в настоящее время реализованы только для определенных типов компонентов: Статик Меши, Скелетные Меши, BSP, ландшафт и меш-частицы. В частности, частицы Sprite еще не поддерживают пользовательские UVs.

Свойства

В Редакторе Материалов вы можете установить количество входных пинов CustomizedUVs, выбрав основной материальный узел и отредактировав свойство Num Customized UVs в категории Material. Если Num Customized UVs установлено на число, большее 0, на основном узле материала будут отображаться пины CustomizedUVs.пины CustomizedUVs UE4

правильное расположение CUVs UE4 ” />(h:250)

добавленные пины к пользовательским UVs UE4 ” />(h:250)

Нелинейная математика

Общее правило состоит в том, что если вычисление, которое вы делаете, использует константы (положение камеры, время, векторные параметры и т.д.) или линейно изменяется с атрибутами per-vertex, то выполнение этой работы в вершинном шейдере даст те же результаты, что и их в пиксельном шейдере. Изменение линейности означает только операции, которые приведут к прямым линиям, без кривых, таких как умножение и сложение. Возведение переменной в квадрат с использованием синуса, косинуса или операций, таких как length, приведет к нелинейному уравнению.

Независимо от того, приведет ли нелинейная математика к желаемому результату, зависит от детализации меши, к которой она применяется:нелинейная математика применяется к детализации меши UE4

Меш слева представляет собой многоугольную сетку 9 x 9, а справа – многоугольную сетку 4 x 4.

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

CUVs_LVSNL_02 UE4математика в пиксельном шейдере 1 UE4

/>(h:211)

Линейная математика

Масштабирование (умножение) UVs по параметру будет одинаковым для обоих. UVs – атрибуты для вершин, а масштабирование – линейная операция. Изображения, приведенные ниже, при выполнении линейных операций, CustomizedUVs, которые вычисляются в вершинном шейдере, оказывают такое же влияние, как и на то же вычисление в пиксельном шейдере.линейные операции CUVs UE4

Пользовательские UVs в Unreal Engine 4” />(h:191)

Как это работает

Пины CustomizedUV проходят по координатам текстуры (UVs) в меше по умолчанию. Затем, когда вы размещаете узел Texcoord в инпуте пиксельного шейдера (например, BaseColor), вы все равно получаете координаты текстуры меши. Однако, если вы что-то делаете в CustomizedUV0, а затем используете Texcoord 0 на входе BaseColor, вы получите модифицированное значение UV. Обратите внимание, что узлы образцов Текстуры по умолчанию используют TexCoord 0.

Shader Model 5 на ПК может использовать 8 пользовательских UV, в то время как OpenGL ES2 на мобильных устройствах может использовать только 3.

Вот пример, исходный материал отображает текстуру с использованием пространства мира y и z.текстура с использованием пространства мира y и z UE4

Этот материал делает то же самое, логика в Customized UV 0 передается как Texcoord0 на вход пиксельного шейдера BaseColor. Однако расчет для Texcoord0 был выполнен в вершинном шейдере.

узел Texture Sample UE4У узла Texture Sample есть неявный узел TexCoord0 внутри.

Общие характеристики

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

Мобильная специфика

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

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

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

независимые образцы текстур UE4

 

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите свой комментарий!
Пожалуйста, введите ваше имя: