Это первая из серии статей, в которой рассказывается о том, как разработчики и технические художники могут настроить и использовать конвейер рендеринга высокого разрешения (HDRP) в Unity для достижения высокого уровня графической реалистичности. HDRP представляет собой технологический скачок в рендеринге Unity в реальном времени, поэтому вы можете работать со светом так, как он ведет себя в реальном мире.
Обязательно прочитайте другие статьи из нашей серии "Как сделать освещение высокого класса":
HDRP расширяет существующую систему освещения Unity с помощью множества функций, позволяющих сделать рендеринг сцены более похожим на реальное освещение:
- Физические световые единицы и экспозиция: В HDRP используются реальные значения интенсивности освещения и единицы измерения. Подберите характеристики известных источников света и установите экспозицию с помощью физических камер.
- Усовершенствованное освещение: Контролируйте размещение света с помощью дополнительных вариантов формы точечных и площадных светильников. Используйте слои света, чтобы ограничить влияние света на определенные сетки. Применяйте эффекты реального времени, такие как Screen Space Global Illumination (SSGI) и Screen Space Refraction.
- Небесные пейзажи: Создайте естественное небо с помощью различных техник. Используйте систему Physically Based Sky для процедурного моделирования планетарной атмосферы, добавьте объемные облака, облачные слои или примените HDRI для моделирования статичного неба.
- Туман: Добавьте глубину и объемность сценам с помощью тумана. Включите объемные эффекты, чтобы интегрировать эффекты тумана с объектами переднего плана и создать кинематографические световые потоки. Поддерживайте управление объемным светом и тенями в зависимости от освещения и используйте компонент Local Volumetric Fog для точного управления плотностью тумана с помощью 3D-текстуры маски.
- Система объемов: HDRP имеет интуитивно понятную систему, позволяющую блокировать различные эффекты и настройки освещения в зависимости от местоположения камеры или по приоритету. Наложение и смешивание объемов позволяет контролировать каждый квадратный метр сцены на экспертном уровне.
- Постобработка Постобработка HDRP управляется серией Volume Overrides поверх существующей системы Volume. Добавьте сглаживание, тональное отображение, цветокоррекцию, расцветку, глубину резкости и множество других эффектов.
- Продвинутые тени: HDRP предлагает расширенный художественный и исполнительский контроль над тенями. Измените их оттенок, фильтрацию, разрешение, объем памяти и режим обновления. Подчеркните мелкие детали и добавьте глубины с помощью контактных и микротеней.
- Продвинутые размышления: Для визуализации отражающих поверхностей можно использовать несколько техник. Зонды отражения предлагают традиционный подход к составлению карт отражения, а зонды планарного отражения дают более продвинутые возможности для плоских поверхностей.Screen Space Reflection (SSR) добавляет технику реального времени с использованием буфера глубины.
Unity 2021 LTS и выше включает в себя пакет HDRP при установке, чтобы гарантировать, что вы всегда работаете на новейшем проверенном графическом коде. Когда вы устанавливаете последнюю версию Unity, она также устанавливает соответствующую версию HDRP.
Версия пакета HDRP Совместимая версия Unity 13.x 2022.1 12.x 2021 LTS (используется в данном руководстве)
Привязка графических пакетов HDRP к конкретным выпускам Unity помогает поддерживать совместимость. Однако вы также можете переключиться на пользовательскую версию HDRP, переопределив файл манифеста.
Системные требования
В настоящее время HRDP совместима со следующими целевыми платформами:
- Windows и Windows Store, с DirectX 11 или DirectX 12 и Shader Model 5.0
- Современные консоли (минимум Sony PlayStation 4 или Microsoft Xbox One)
- MacOS (минимальная версия 10.13) с использованием графики Metal
- Платформы Linux и Windows с Vulkan
HDRP работает только на консольных и настольных платформах, поддерживающих вычислительные шейдеры. Он не поддерживает устройства OpenGL или OpenGL ES. Более подробную информацию о требованиях и совместимости см. в документации.
Смотрите раздел Виртуальная реальность в конвейере рендеринга высокой четкости, чтобы узнать о поддерживаемых VR-платформах и устройствах.
Чтобы создать проект HDRP, начните работу в Unity Hub:
Сначала создайте новый проект и выберите пустой шаблон 3D (HDRP) или 3D Sample Scene (HDRP) из списка доступных шаблонов (в старых версиях Hub они называются High Definition RP). Чтобы импортировать пакет HDRP с несколькими примерами предустановок, выберите последний шаблон.
Если вы создаете проект с помощью шаблона 3D Coretemplate, Unity использует более старый встроенный конвейер рендеринга. Вы можете перенести проект в HDRP вручную из менеджера пакетов(Window > Rendering > HDRP Wizard).
Найдите пакет High Definition RP в реестре Unity или воспользуйтесь полем поиска, чтобы найти и установить его.
Если есть конфликт с текущими настройками проекта, появится мастер HDRP Render Pipeline Wizard , который поможет вам устранить неполадки (также находится в разделе Window > Render Pipeline > HDRP Wizard). Обратите внимание, что в Unity 2021.2/HDRP 12 он находится в разделе Window > Rendering > HDRP Wizard.
Перейдите в раздел Проверка конфигурации и нажмите кнопку Исправить все, или нажмите кнопку Исправить для каждой проблемы, чтобы исправить их по отдельности. Этот контрольный список поможет вам перейти с проекта, в котором нет скриптового конвейера рендеринга (SRP).
По завершении работы мастера появится запрос на создание нового актива трубопровода. Это файл на диске, в котором хранятся ваши конкретные настройки конвейера. Выберите Create One, чтобы добавить новый Render Pipeline Asset и назначить туда файл.
Если HDRP функционирует должным образом, убедитесь, что все флажки в окне " Проверка конфигурации " отмечены зеленым цветом. Вы можете заметить, что фоновое окружение изменило цвет.
Помните, что ручная установка из пустого проекта не приводит к автоматическому импорту 3D Sample Scene (HDRP). Используйте шаблон 3D Sample Scene, если вам нужен доступ к примерам активов, показанных в этом руководстве.
3D Sample Scene из Unity Hub - это шаблонный проект, который поможет вам начать работу с HDRP и физически обоснованным освещением. Этот легкий проект занимает менее 100 мегабайт и представляет собой хороший рабочий пример HDRP, который можно быстро загрузить для ознакомления.
В небольшой многокомнатной обстановке представлены три отдельные зоны с разным освещением. Направленный свет, изображающий солнце, имеет реальную интенсивность 100 000 люкс, и в каждом месте экспозиция камеры корректируется в соответствии с условиями освещения.
Используйте клавиши WASD и мышь, чтобы управлять FPS-контроллером по уровню.
- Комната 1 - это круглая площадка, освещенная сверху солнечным светом. Деколи добавляют грязь и лужи воды на бетонный пол.
- Комната 2 добавляет объемные валы света от светового люка, а также современные материалы для дерева внутри стеклянной витрины.
- Комната 3 демонстрирует внутреннее искусственное освещение и излучающие материалы.
Для более детального ознакомления посмотрите эту запись в блоге технического художника Unity Пьера Ива Донсаллаза, в которой подробно описывается сцена HDRP 3D Sample Scene.
Другие материалы по образцам HDRP
Возможно, после изучения HDRP 3D Sample Scene вам пригодятся и другие проекты.
Хотя изначально проект не предназначался для игр, он Проект "Автосалон демонстрирует высокодетализированный автомобиль с реалистичным освещением. Измените освещение сцены, покраску автомобиля, текстуры и фон в этой интерактивной демонстрации, доступной через Unity Hub.
Тем временем Демонстрация "Космический корабль демонстрирует графику визуальных эффектов и другие возможности HDRP в научно-фантастическом окружении. Вы можете загрузить ее из репозитория Unity на GitHub или получить доступ к ней в Steam.
Если вы используете HDRP в VR, вы по достоинству оцените Лаборатория алхимика VR. Этот проект представляет интерактивные эффекты в небольшой средневековой лаборатории.
Чтобы научиться создавать кинематографический контент или анимационные фильмы, установите наш шаблон Cinematic Studiotemplate из Unity Hub. Этот шаблон показывает, как настроить и осветить кадры забавного короткометражного фильма под названием Mich-L, сочетая стилизованную и фотореальную визуализацию.
В разделе " Настройки проекта"(Edit > Project Settings) есть несколько важных настроек, включая "Графика", " Глобальные настройки HDRP" и " Качество".
Обратите внимание, что HDRP Default Settings теперь называется HDRP Global Settings в Unity 2021.2/HDRP 12 и выше.
Настройки графики
Надпись Scriptable Render Pipeline Settings в верхней части изображения относится к файлу на диске, в котором хранятся все ваши настройки HDRP. В одном проекте может быть несколько таких Pipeline Assets.
Считайте, что каждый из них - это отдельный файл конфигурации. Например, вы можете использовать их для хранения специализированных настроек для разных целевых платформ (Xbox, PlayStation и так далее), или они могут представлять различные уровни визуального качества, которые игрок может менять во время выполнения игры.
Сцена 3D Sample Scene начинается с нескольких Pipeline Assets в папке Settings: HDRPHighQuality, HDRPLowQuality и HDRPMediumQuality. Также имеется папка HDRPDefaultResources, содержащая набор DefaultHDRPAsset.
Настройки качества позволяют привязать один из активов конвейера к заранее определенному уровню качества.
Выберите уровень качества в верхней части, чтобы активировать определенный ассет конвейера рендеринга из опций рендеринга. Вы можете настроить параметры по умолчанию или создать дополнительные уровни качества, каждый из которых будет связан с дополнительными активами трубопровода.
Уровень качества представляет собой определенный набор визуальных характеристик, активных в конвейере. Например, вы можете создать несколько уровней для графики в своем приложении. Во время выполнения игры игроки могут выбрать активный уровень качества в зависимости от аппаратного обеспечения.
Перейдите в подраздел Quality/HDRP, чтобы отредактировать фактические настройки трубопровода. В противном случае перейдите в режим просмотра проекта, чтобы выбрать актив трубопровода и изменить его настройки в инспекторе.
Имейте в виду, что включение большего количества функций в Pipeline Asset будет потреблять больше ресурсов. В общем, оптимизируйте свой проект так, чтобы использовать только то, что действительно необходимо для достижения намеченного эффекта. Если вам не нужна определенная функция, вы можете отключить ее, чтобы сэкономить ресурсы и повысить производительность.
Вот некоторые функции, которые можно отключить, если они вам не нужны:
- В активе HDRP: Декали, прозрачность низкого разрешения, прозрачный задник/глубинный препас/постпас, SSAO, SSR, контактные тени, объемность, подповерхностное рассеивание и искажения
- В настройках кадра камеры (основная камера) используется для встроенных эффектов, таких как отражения, или дополнительные камеры используются для пользовательских эффектов: Преломление, Постобработка, После постобработки, Передача, Зонд отражения, Зонд планарного отражения и Big Tile Prepass
Прочитайте эту статью в блоге, чтобы познакомиться с функциями HDRP для повышения производительности.
Глобальные настройки HDRP
Раздел " Глобальные настройки HDRP ", также известный как " Настройки HDRP по умолчанию " (до версии HDRP 12), определяет базовую конфигурацию вашего проекта. Вы можете изменить эти настройки в сцене с помощью компонентов Local или Global Volumecomponents, в зависимости от положения камеры.
Глобальные настройки сохраняются в отдельном ассете Pipeline Asset, определенном в верхнем поле, где вы можете задать параметры рендеринга и постобработки по умолчанию.
По мере разработки проекта вам может понадобиться вернуться к глобальным настройкам HDRP, чтобы включить или выключить определенные функции. Некоторые функции не будут отображаться, если не установлен соответствующий флажок в Глобальных настройках.
Убедитесь, что вы включили только те функции, которые вам необходимы, поскольку они могут негативно повлиять на производительность рендеринга и использование памяти. Обратите внимание, что некоторые настройки отображаются в Профилях громкости, в то время как другие функции находятся в Настройках кадра (в зависимости от использования).
Знакомясь с набором функций HDRP, воспользуйтесь полем поиска в правом верхнем углу в Настройках проекта. В результате будут показаны только релевантные панели с выделенными поисковыми запросами.
Включение функции в глобальных настройках HDRP не гарантирует, что она может быть отображена любой камерой в любой момент времени. Вы должны убедиться, что ассет Render Pipeline Asset, уровни качества которого указаны в разделе Projects Settings > Quality, также поддерживает эту функцию. Например, чтобы камеры могли рендерить объемные облака, необходимо включить их в глобальных настройках HDRP > Настройки кадра > Камера > Освещение, а в активном ассете конвейера рендеринга - в разделе Освещение > Объемные облака.
Если вы не привязаны к процессору, разрешение может сильно повлиять на производительность. Динамическое разрешение уменьшает разрешение рендеринга и масштабирует результат до разрешения выходного экрана. Фильтры, выполняющие это повышение, значительно улучшились в 2021 LTS, позволяя выполнять рендеринг в разрешении 70 % или ниже с минимальными потерями качества.
В Unity 2021 LTS HDRP предлагает несколько решений с использованием новейших технологий Super Sampling:
- NVIDIA DLSS (Deep Learning Super Sampling) для графических процессоров, поддерживающих эту технологию
- AMD FSR (FidelityX Super Resolution) на всех платформах
- Увеличение масштаба TAA (темпоральное сглаживание) на разных платформах
Вы можете либо принудительно изменить масштаб в HDRP Asset, либо задать собственную логику для настройки масштаба.
Чтобы настроить динамическое разрешение в своем проекте и получить некоторые рекомендации по выбору наилучшего алгоритма для ваших нужд, смотрите эту страницу из документации.
При настройке параметров HDRP в активе конвейера вы обычно начинаете с режима Lit Shader Mode в разделе Rendering, где можно выбрать между Deferred, Forward или Both. Они представляют собой пути рендеринга, которые вы можете выбрать, каждый из которых содержит определенную серию операций, определяющих, как конвейер будет рендерить и освещать геометрию. О том, как настроить путь рендеринга, читайте выше.
Чтобы задать путь рендеринга по умолчанию, перейдите в раздел Lit Shader Mode и выберите Forward или Deferred. HDRP является гибким и позволяет вам выбрать оба варианта. Эта опция позволяет использовать один путь рендеринга для большинства рендеров, а затем переопределять его для каждой камеры. Однако он занимает больше памяти GPU, поэтому обычно лучше выбрать Forward или Deferred.
Чтобы затронуть все камеры по умолчанию, перейдите в раздел Настройки по умолчанию HDRP и найдите пункт Настройки кадров по умолчанию. Ваш путь рендеринга может быть применен к камерам, запеченному или пользовательскому отражению, а также отражению в реальном времени. В группе Rendering установите путь рендеринга в режиме Lit Shader Mode.
Чтобы повлиять на конкретную камеру, отметьте ее пользовательские настройки кадра. Затем в группе Rendering переопределите и измените путь рендеринга для режима Lit Shader Mode.
При рендеринге Forward видеокарта разбивает геометрию экрана на вершины. Эти вершины далее разбиваются на фрагменты, или пиксели, которые выводятся на экран и создают конечное изображение.
Каждый объект по очереди передается графическому API. Перспективный рендеринг влечет за собой расходы на каждый свет. Чем больше света в сцене, тем больше времени займет рендеринг.
При прямом рендеринге освещение прорисовывается за несколько проходов. Если на один и тот же объект GameObject попадает несколько источников света, это может привести к значительной перерисовке и замедлению работы при наличии большого количества источников света и объектов.
В отличие от традиционного рендеринга Forward, HDRP добавляет новые возможности, такие как выборка и рендеринг нескольких источников света за один проход для каждого материала объекта. Но это все равно относительно дорогой процесс. Если вам важна производительность, лучше использовать отложенное затенение.
HDRP также может использовать отложенное затенение, когда освещение не рассчитывается для каждого объекта. Вместо этого отложенное затенение откладывает тяжелый рендеринг на более поздний этап и использует два прохода.
Во время первого прохода, или прохода геометрии G-буфера, Unity рендерит объекты GameObjects. Эта передача извлекает несколько типов геометрических свойств и сохраняет их в наборе текстур (например, диффузные и зеркальные цвета, гладкость поверхности, окклюзия, нормали и так далее).
Во втором проходе, или проходе освещения, Unity рендерит освещение сцены после завершения работы с G-буфером, тем самым откладывая затенение. Путь отложенного затенения итерирует каждый пиксель и вычисляет информацию об освещении на основе буфера, а не отдельных объектов.
Более подробную информацию о технических различиях между путями рендеринга см. в документации по HDRP в разделе " Прямой и отложенный рендеринг ".