Руководство по оптимизации VFX в Unreal Engine 4

0
31
Руководство по оптимизации VFX в Unreal Engine 4

Этот документ предполагает предварительное знание Cascade, Редактора Материалов, Blueprints и Matinee, а также общих проблем, связанных с производительностью. Существует несколько способов решения проблемы с производительностью. В этом документе мы сделаем попытку описать, как команда эффектов Epic занимается решением этих проблем с помощью доступных инструментов.

Общие нарушения для производительности со слабыми эффектами

Overdraw

Площадь экрана, на которую распространяются частицы, и количество инструкций на этих частицах. Overdraw = количество слоев * количество затронутых пикселей. (GPU)

Tick Time

Время, необходимое Игровой Теме для обновления всех систем частиц. (Game Thread)

Draw Calls

Государственные настройки для подготовки к GPU. (Render Thread)

Bounds Calculation

Время, необходимое для обновления границ эффекта, которые используются для определения видимости на основе усечения камеры. (Имеются ли оценки эффектов?)

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

Основные системы для производительности эффектов

GPU

Количество времени, которое требуется для рисования пикселей на экране. (Overdraw)

Game Thread

Время, необходимое для обновления поведения систем частиц. (Tick Time)

Render Thread

Время, затрачиваемое на упаковку геометрии частиц и связанных с ним обратных вызовов. (Draw Calls)

Рекомендации по производительности

Количество частиц действительно играет незначительную роль в великой схеме, когда дело доходит до производительности. Независимо от раздельного экрана или нет, сложность материалов и охват экрана (overdraw) – это ваши явные враги, когда дело доходит до общего расхода данной системы. Простая эмиссионная искра, имеющая только текстуру, умноженную на вершинные цвета и проводную в эмиссионный инпут в не включенные часы Материала только в нескольких инструкциях. Вы можете в значительной степени породить их все в течение всего дня, и ваше общее влияние на производительность, вероятно, будет очень маленьким. Спринты небольшие, что означает, что покрытие экрана низкое, а сложность материалов делает их дешевыми и быстрыми для рендеринга. Количество вершин на самом деле не то, о чем вам нужно заботиться в долгосрочной перспективе, если вы не входите в действительно экстремальные числа (сотни или тысячи и более).

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

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

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

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

  • У меня возникают проблемы с графическим процессором.
  • У меня проблемы с Game Thread.
  • У меня возникают проблемы с Render Thread.

Общие темы Системы частиц

  • Оптимизация VFX: балансировка визуальных эффектов с производительностью
  • Оптимизация VFX: основные концепции оптимизации
  • Оптимизация VFX: получение результатов
  • Оптимизация VFX: Split Screen