Ознакомьтесь с настройками HDRP для повышения производительности

MATHIEU MULLER / UNITYSenior Manager, Product Management
Oct 22, 2021|13 Мин
Ознакомьтесь с настройками HDRP для повышения производительности
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Узнайте, как использовать настройки High Definition Render Pipeline (HDRP) для достижения максимальной производительности и получения мощной графики в один момент.

С выпуском версии 10 HDRP для Unity 2020 LTS и последующих версий пакет HDRP продолжает уделять первостепенное внимание удобному интерфейсу, гибким функциям, стабильности и общей производительности. Но чтобы настроить HDRP на оптимальное использование, очень важно понимать все основные настройки, как они работают и что делают. Именно поэтому мы рассматриваем работу HDRP с точки зрения захвата CPU/GPU Profiler, представления Render Pipeline Debug и шейдерного фреймворка HDRP.

В этом блоге собраны советы, которые помогут вам настроить HDRP для вашего проекта, используя API Custom Pass или другую локальную часть пакета.

Структура HDRP UX

Прежде чем приступить к анализу кадров, важно познакомиться с функциями HDRP. Мы рекомендуем посмотреть нашу презентацию Unite Now " Достижение высокой точности графики в играх с помощью HDRP", вебинар " Трассировка лучей с конвейером рендеринга высокого разрешения Unity", а также доклад " Объемные облака, блики на линзах и световые якоря" - все они являются отличными руководствами по HDRP.

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

  • HDRP имеет унифицированную и физически основанную структуру рендеринга, что означает, что его атрибуты используют единицы реального мира: Значение экспозиции используется для определения светочувствительности камеры, а Кандела - для определения силы света. В нашей беседе Unite Nowtalk рассказывается о том, как мыслить физически, чтобы добиться стабильных результатов при освещении сцены.
  • В проекте HDRP можно контролировать множество параметров, и эти параметры существуют во многих местах. Отчасти это объясняется тем, что HDRP имеет больше интегрированных функций, а также более широкие возможности настройки, позволяющие художникам и инженерам точно настроить и оптимизировать свою работу.

Чтобы ознакомиться с возможностями HDRP, мы начнем с глобальных настроек.

Глобальные настройки

Для встроенного конвейера рендеринга настройки графики охватывают большинство настроек графики для каждого проекта. Существуют также настройки Player, которые содержат некоторые общие настройки графики в контексте конкретной целевой платформы, например Windows, Linux, Mac или Xbox.

Изображение того, где в проектах HDRP можно найти настройки графики

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

  • В настройках графики, например, параметры Scriptable Render Pipeline (SRP) ссылаются на стандартный ассет HD Render Pipeline Asset. Этот ассет HD Render Pipeline Asset содержит настройки, которые можно переопределить на каждом уровне качества.
  • На вкладке HDRP Default Settings настраиваются параметры:
  • Настройки кадра по умолчанию, со свойствами по умолчанию, которые можно переопределить для каждой камеры (включая камеры, используемые для планарных отражений или зондов отражения). Здесь вы можете решить, будут ли камеры по умолчанию отображать прозрачные объекты.
  • Компоненты Volume по умолчанию, содержащие свойства, которые могут быть переопределены для каждого "положения камеры в сцене". Например, вы можете задать интенсивность эффектов по умолчанию, которую можно отменить и сделать "сильной на улице, но слабой в помещении", используя определенные объемы для ваших сцен.
  • Свойство Default Diffusion Profile Assets, которое может быть переопределено компонентом Diffusion Profile Override в разделе Volume components на вкладке HDRP Default Settings. Это, в свою очередь, может быть отменено в параметре "Положение камеры в сцене". В настоящее время также существует "избыточный слой переопределения" для системы Diffusion Profile, но поскольку мы постоянно стремимся улучшить UX в HDRP, решение этой проблемы уже находится в процессе разработки.
  • Другие свойства, которые являются "чистыми глобальными настройками", не могут быть переопределены.
  • Наконец, некоторые низкоуровневые параметры, которые с меньшей вероятностью потребуют настройки, указаны в пакете HDRP Config. Эти настройки также являются "чистыми глобальными настройками". Их изменение требует перекомпиляции сборки C# и шейдерного фреймворка HDRP. Поэтому они расположены в другом месте.

Уровни качества

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

В частности, для проектов HDRP для каждого уровня качества можно выбрать переопределение HD Render Pipeline Asset. Это дает больше возможностей для настройки по сравнению со встроенным конвейером рендеринга, поскольку в HD Render Pipeline Asset хранится несколько параметров, таких как максимальное количество направленного, точечного и площадного освещения на экране, размер LUT для цветокоррекции, размер атласа светового печенья и другие.

Некоторые свойства на вкладке Quality Settings для проекта Built-in Render Pipeline применяются только для Built-in Render Pipeline. В проекте HDRP эти параметры могут исчезнуть со своих прежних мест и появиться в другом месте в качестве "замещающих параметров".

Например, в проекте Built-in Render Pipeline вкладка Quality Settings управляет свойством Shadow Resolution. Однако в проекте HDRP раздел Lighting > Shadows (Освещение > Тени) ассета HD Render Pipeline Asset управляет разрешением карт теней.

Снимок экрана свойств в настройках качества в проекте встроенного конвейера рендеринга по сравнению с проектом HDRP
Многие свойства в настройках качества перенесены в ассет HD Render Pipeline Asset.

Настройки камеры и кадра

Для рендеринга сцены в HDRP необходимо добавить камеры, как и во встроенном конвейере рендеринга. HDRP также использует дополнительный компонент HD Additional Camera Data (прикрепленный к тому же игровому объекту), чтобы хранить дополнительные параметры для каждой камеры.

Действительно, HDRP предлагает гораздо больше параметров для настройки каждой камеры. Существует несколько физических настроек камеры, и если вы отметите свойство Custom Frame Settings (Пользовательские настройки кадра ) для камеры, вы сможете определить, как камера рисует кадр с помощью системы Frame Settings (Настройки кадра) .

Система настроек кадра представляет собой стек переопределений свойств камеры. На вкладке HDRP Default Settings можно задать значения по умолчанию для параметров фрейма. Кроме того, каждая камера может переопределять настройки кадра по умолчанию.

Панели CameraокнаRender Pipeline Debug помогают визуализировать стек переопределений Frame Settings.

Использование панели камеры

Следующий пример демонстрирует работу панели Camera окна Render Pipeline Debug:

В сцене есть камера под названием Main Camerain. Основная камера рисует только статичные объекты. Вкладка HDRP Default Settings позволяет рисовать векторы движения, в то время как переопределение Frame Settings из Main Camera отключает эту функцию для повышения общей производительности.

Стек переопределения векторов движения отображает состояние параметров OverriddenFrame слева от параметров DefaultFrame. См. рисунок 4, выделение A:

Параметры кадра переопределяют стек, отображаемый в окне отладки конвейера рендеринга

Кроме того, в окне отладки конвейера рендеринга состояние настроек SanitizedFrame отображается слева от настроек OverriddenFrame. Санирование обеспечивает постоянство настроек переопределенного кадра. Если посмотреть на тот же пример, то движение непрозрачных объектов и движение прозрачных объектов не были явно отключены в переопределении настроек кадра основной камеры. Но поскольку Motion Vector отключен, эти зависимые функции также отключаются системой санитарной обработки, как показано на рисунке 4, выделение B.

Система объемов

Как уже говорилось в нашем Unite Nowtalk, HDRP поддерживает систему объемов. Подобно стеку постобработки во встроенном конвейере рендеринга, система HDRP Volume управляет постобработкой. Более того, он определяет способ визуализации неба, силу непрямого света и некоторые настройки теней, а также другие особенности.

Проще говоря, система томов HDRP - это абстрактная структура, которую можно использовать для изменения настроек рендеринга по мере перемещения камеры по сцене. Для каждого свойства Volume существует жестко заданное значение по умолчанию. Чтобы увидеть эти значения, используйте панель Volume в окне Render Pipeline Debug. См. крайний правый столбец на рисунке 5, где Интенсивность искажения объектива по умолчанию равна 0.

Стек переопределения объема, отображаемый в окне отладки конвейера рендеринга

Эти жестко заданные свойства по умолчанию можно отменить с помощью переопределений свойств в разделе Volume Components на вкладке HDRP Default Settingstab. Обратите внимание, что эти свойства могут быть переопределены и для томов в сцене.

И наоборот, камера берет смесь значений свойств из томов в сцене. Если их нет, то значения свойств берутся с вкладки HDRP Default Settings. В противном случае будут использоваться жестко закодированные значения свойств по умолчанию.

Как показано на рисунке 5, панель Volume окна Render Pipeline Debug полезна для визуализации текущего стека переопределения свойства Volume. Он особенно эффективен при отладке, поскольку отображает свойства тома, используемые в данный момент.

Сетки и поверхности

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

Освещение

Как и во встроенном конвейере рендеринга, в проектах HDRP есть светильники с хранилищем данных, специфичным для HDRP, для каждого светильника. Компоненты HD Additional Light Data подключаются вместе с обычными компонентами Light.

Учтите, что существует множество настроек освещения, которые берутся не из игровых объектов с компонентами Light. Вот лишь несколько примеров:

Контроллер непрямого освещения Компонент объема
Поиск недвижимости

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

одна из возможных процедур для поиска свойств графики в проекте HDRP
Размеры графических настроек

Графические настройки HDRP должны соответствовать следующим требованиям:

  • Уровень качества программы, например, платформа, на которой она работает
  • Текущая активная камера
  • Расположение камеры в сцене
  • Материалы отрисованных геометрий
  • Светильники, влияющие на отрисованную геометрию

Обратите внимание, что настройки HDRP особенно чувствительны к размерам настроек.

Противоречия между измерениями настроек

Часто возникают конфликты между следующими параметрами:

  • Уровень качества и текущая активная камера могут пытаться управлять одним и тем же графическим параметром. Например, если вы хотите уменьшить количество выборок подповерхностного рассеяния на устройствах низкого класса, вы также можете уменьшить количество выборок подповерхностного рассеяния для камер, которые рендерят в Render Textures для эффектов "картинка в картинке".
  • Уровень качества и расположение камеры в сцене могут пытаться управлять одним и тем же графическим параметром. Поэтому, если вы хотите снизить качество эффектов постобработки на платформах с ограниченной мощностью GPU, вы должны учитывать тот факт, что некоторые локации Scene уже используют значительное время GPU для сложного освещения. Поэтому вам следует стремиться снизить качество эффектов постобработки в этих местах, чтобы вернуть часть бюджета на производительность.
  • Уровень качества и освещение в Сцене могут пытаться управлять одним и тем же графическим параметром. Поэтому, если вы хотите уменьшить разрешение карты теней на платформах с ограниченным объемом оперативной памяти, вы должны помнить, что в сцене, скорее всего, есть много небольших прожекторов, отбрасывающих тень, которые требуют карт теней с меньшим разрешением.

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

значение, указанное для каждого уровня
значение, указанное для каждого уровня
значение, указанное для каждого уровня

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

Указывайте уровни, а не значения.
Указывайте уровни, а не значения.
Указывайте уровни, а не значения.

Затем HDRP может найти это свойство на соответствующем уровне в активном активе HD Render Pipeline Asset. Именно это имущество будет использоваться.

Конечно, камеры, громкость и освещение могут игнорировать многоуровневую систему настроек и напрямую определять желаемое поведение.

Три измерения настроек пересекаются

Рассмотрим другой пример, в котором размеры настроек пересекаются.

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

В этом случае три измерения параметров перекрываются:

  • Материалы геометрии в Сцене
  • Уровень качества программы
  • Камеры на сцене

Для решения подобных проблем в Shader Graph есть специальное ключевое слово Material Quality:

Ключевое слово Material Quality в Shader Graph

В отличие от обычных ключевых слов Shader Graph, которые контролируются пользователями для каждого материала, это глобальное ключевое слово, устанавливаемое внутри HDRP. В ассете HD Render Pipeline вы можете управлять доступными уровнями качества материалов, а также уровнем качества материалов по умолчанию.

Доступные уровни качества материала и уровень качества материала по умолчанию

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

Указание уровня качества материала из переопределения настроек кадра камеры

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

Оптимизация настройки HDRP

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

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

Сцена из 225 кубиков пример

Как работает эта простая установка? Давайте создадим автономный плеер с разрешением 2880x1620, на скриптовом бэкенде IL2CPP, с отключенной VSync. Запустив плеер на машине под управлением Windows с графическим процессором Intel i9-10980HK и NVIDIA RTX2080, профилировщик показал, что среднее время кадра составляет 4,6 мс.

Если посмотреть на временную шкалу профилировщика, то можно заметить, что значительное количество времени тратится на маркер DXGI.WaitOnSwapChainmarker, что указывает на его привязку к GPU.

Тесты Built-in Render Pipeline и HDRP привязаны к GPU.

Захват GPU с помощью Nsight Graphics показывает, что это происходит из-за того, что в HDRP по умолчанию активны несколько функций:

  • Активировано множество дополнительных визуальных эффектов, таких как SSAO, Subsurface Scattering, Dynamic Exposure, Motion Blur и Bloom.
  • Здесь есть несколько проходов Color Pyramid и проход Upsample Low-res Transparent, все они поддерживают сложный прозрачный рендеринг.
HDRP имеет множество эффектов и по умолчанию включен.

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

  • В активе HDRP отключены деколи, прозрачность низкого разрешения, прозрачный задний план, предварительный обход глубины, обход глубины, SSAO, SSR, контактные тени, объемность, подповерхностное рассеивание и искажения.
  • Преломление, постобработка, после постобработки, передача, зонд отражения, зонд планарного отражения и Big Tile Prepass отключены в настройках кадра камеры.
  • Громкость переопределяет режим экспозиции на "Фиксированная экспозиция".

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

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

Если вас интересуют еще более дешевые камеры, пакет HDRP UI Camera Stacking в версии 2021.2 позволяет объединять несколько камер с рендерингом UI по цене, составляющей лишь часть стоимости стандартной камеры.

Этот пример не только подчеркивает степень контроля над характеристиками производительности HDRP, но и важность настройки проекта HDRP.

Что будет дальше?
Фирменное изображение шара с лучевой трассировкой в Unity

Все начинается со света: Окончательное руководство по конвейеру рендеринга высокой четкости

HDRP в Unity 2020 LTS - это улучшенные инструменты для создания выразительного, высококлассного освещения в ваших играх. Получите это новое подробное руководство, чтобы узнать, как использовать возможности физического освещения в HDRP.

Получить руководство