Urp unity что это

от admin

Использование универсального конвейера рендеринга

Универсальный конвейер рендеринга (URP) — это готовый конвейер рендеринга с поддержкой сценариев, созданный Unity. URP предлагает удобные для художников рабочие процессы, которые позволяют быстро и легко создавать оптимизированную графику для различных платформ, от мобильных до консолей высокого класса и ПК.

Предыдущая версия URP называлась Lightweight Render Pipeline (LWRP). URP заменяет LWRP.

Using the Universal Render Pipeline

The Universal Render Pipeline (URP) is a prebuilt Scriptable Render Pipeline, made by Unity. URP provides artist-friendly workflows that let you quickly and easily create optimized graphics across a range of platforms, from mobile to high-end consoles and PCs.

An earlier version of URP was called the Lightweight Render Pipeline (LWRP). URP replaces LWRP.

Фотореалистичная графика на уровне ААА в Unity

Такое мнение сформировалось по ряду причин. Первая из них отсылает нас к 2015 году, когда в Unity был доступен лишь встроенный конвейер рендеринга с рядом ограничений. На тот момент добиться сопоставимого с Unreal Engine визуала было очень сложно. Другой причиной является порог входа в Unity: он довольно низкий, а начинающим программистам и дизайнерам совсем не очевидна концепция компонентной системы Unity, что порождает довольно много слухов по сей день.

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

Всем под кат! Далее мы расскажем, как добиться фотореалистичной графики в Unity.

Вместо оглавления:

Основные механизмы улучшения графики

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

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

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

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

Настройка встроенного конвейера

При использовании стандартного конвейера рендеринга в Unity вы можете скачать специальный пакет Post Processing через Package Manager. Мы будем использовать универсальный конвейер рендеринга URP версии Unity 2020.3.16f1 LTS (версия с долговременной поддержкой). Но если вы используете встроенный конвейер рендеринга, то его необходимо настроить:

Выберем Window → Package Manager и скачаем пакет Post Processing. В папке Assets мы создадим папку Graphics, а в ней создадим папку PostProcess. Теперь нажмем по свободной области правой кнопкой мыши, выберем Create → Post-Process Profile. Создастся файл с соответствующим именем.

В иерархии создадим пустой объект. Нажмем правой кнопкой и выберем GameObject → Create Empty, назовем его PostProcessingBox (PPB). Добавим компонент PostProcessLayer на объект камеры, а компонент Post Process Volume к созданному ранее объекту PPB. К нему также добавим компонент Box Collider и активируем параметр isTrigger. Теперь, при условии нахождения камеры внутри границ объекта PPB, PostProcessing будет активен.

Создадим специальный слой рендеринга PostProcess. В верхней части выбранного объекта выделим Layer с параметром Default и перейдем в AddLayer. В любом из пронумерованных слоев создадим слой PostProcess.

На компоненте PostProcessLayer, который мы добавили к камере ранее, в параметре Layer выберем созданный нами слой PostProcess. Затем добавим этот же слой к объекту PPB. Для того чтобы повысить качество картинки и использовать AO (Ambient Occlusion) по максимуму, необходимо изменить путь визуализации в конвейере рендеринга с прямого на отложенный и включить поддержку HDR. Это можно сделать в настройках проекта, в окне «Качество» (Quality).

Направленный свет Directional Light является аналогом солнечного света. Он может освещать всю сцену, оставаясь единственным источником освещения. Это в свою очередь приводит к проблеме сглаживания перспективы, т.к. теневая карта покрывает большую часть или всю сцену целиком. Cкриншот «бородатой» картинки прилагается.

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

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

Если углубиться в процесс рендеринга, то можно обнаружить, что процесс выборки теневой карты UnitySampleShadowmap() находится в UnityShadowLibrary.cginc. В этой статье мы не будем рассматривать язык Cg, но для тех, кто с ним знаком, добавим, что процесс обработки жестких теней в шейдере выполняется за один проход рендера в отличие от прохода для мягких теней, который выполняется несколько раз. Чуть ниже мы настроим мягкие тени для универсального конвейера с учетом теневых карт без написания кода на Cg.

Подробнее о направленном свете в Unity написано здесь.

Настройка универсального конвейера

Универсальный конвейер рендеринга (URP, ранее LWRP) — это готовый конвейер рендеринга Unity с поддержкой сценариев. С помощью URP можно быстро и легко создать оптимизированную графику на различных платформах, от мобильных до высокопроизводительных консолей и ПК.

Примечание. Проекты, созданные с использованием URP, несовместимы с конвейером визуализации высокой четкости (HDRP), а также со встроенным конвейером визуализации, поэтому, перед тем как начать разработку, вы должны решить, какой конвейер рендеринга будете использовать.

Для начала создадим новый проект в Unity Hub. Нажав на кнопку New, мы увидим различные шаблоны, которые Unity предлагает для начала работы. Выберем URP из предложенных шаблонов (Templates) и нажмем на кнопку Create.

URP будет автоматически установлен и настроен.
Unity-проект откроется и в окне иерархии (Hierarchy). Мы увидим простую сцену с объектами главной камеры, освещением постпроцессинга и 3D-моделями, подготовленными в качестве примера.

Нас интересует Post-process Volume, но перед тем как продолжить, проверим, какое цветовое пространство выбрано в Unity.

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

Перейдем в File → Build Settings → Player Settings → Other Settings → Rendering и убедимся, что в параметре Color Space* выбрано цветовое пространство Linear. Если выбрано пространство Gamma, то необходимо переключиться на Linear.

Подготовка к работе с эффектами универсального конвейера

Вернемся к объекту сцены Post-process Volume. Выберем его и перейдем на вкладку «Инспектор» (Inspector). Здесь отображаются базовые параметры компонента Volume.

Компонент Volume можно добавить к любому GameObject, включая камеру, но Unity рекомендует создавать отдельные GameObject для каждого Volume в сцене.
Компонент Volume сам по себе не содержит фактических данных. Он ссылается на профиль в параметре Profile, который содержит значения для интерполяции. Эффекты в профиле Volume по умолчанию скрыты. Чтобы просмотреть, добавить или изменить эти эффекты, нужно нажать на кнопку Add Override (переопределение).

Читать:
Что относится к высшей математике

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

Перед тем как добавить новый эффект, настроим базовый параметр Mode, который отвечает за область применения текущего компонента постпроцессинга. По умолчанию указано значение Global: все объекты на сцене будут проходить через постпроцессинг. Но мы переключимся на Local и посмотрим, как контролировать постпроцессинг в нужной нам области.

В интерфейсе появится параметр Blend Distance и кнопка добавления коллайдера.

Нажмем на нее и выберем из выпадающего списка Box. Компонент Box Collider будет добавлен в нижнюю часть вкладки «Инспектор».

Для параметра Size установим значение «10 10 10».

Чтобы увидеть текущую границу постпроцессинга, нужно выбрать параметр Gizmos на вкладке Scene. Границы постпроцессинга будут выделены зеленым полупрозрачным кубом. В параметре Blend Distance выставим значение «3». Поскольку к любому объекту в иерархии можно добавить компонент Volume, мы можем применять различные эффекты постпроцессинга для отдельных участков сцены. Эти эффекты будут интерполировать между собой на расстоянии, заданном параметром Blend Distance.

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

Работа с эффектами универсального конвейера

Вернемся к теневым картам и настроим их для нашего универсального конвейера.

Для этого в шапке Unity нажмем на кнопку Edit и выберем Project Settings. Откроется соответствующая вкладка. Выберем из списка параметр Quality и в графе Rendering нажмем на выбранный ассет UniversalRP-HighQuality. В нижней вкладке Project подсветится нужный компонент, нажмем на него и перейдем на вкладку «Инспектор» (Inspector).

В открывшейся вкладке настроим параметр Shadows:

в Сascade Count укажем 3;

в Split 1 укажем 12;

в Split 2 укажем 15;

в Depth Bias поставим 1;

в Normal bias поставим 0.8;

ставим галочку на Soft Shadows.

В результате получим более четкие тени на переднем и заднем планах с учетом каскада.

Давайте добавим новый эффект. Нажмем на кнопку Add Override, в открывшейся панели выберем post-processing, далее выберем Panini projection.

Объект Main Camera имеет параметр Field Of View (поле зрения). По умолчанию этот параметр выставлен в 60 градусов, поэтому объекты по углам сцены в окне Game приобретут эффект дисторсии (растяжения).

Вместо проекции Panini projection можно воспользоваться настройкой физической камеры, включив свойство Physical camera в компоненте Camera. Настройка этой системы выходит за рамки данной статьи.

Вы уже могли заметить, что в эффектах отсутствует затенение Ambient Occlusion, которое, в отличие от прямого освещения, добавляет реалистичности и объема объектам на сцене. Для применения эффекта выберем вкладку Project и перейдем в папку Settings, где лежит профиль для Volume, который мы настраивали выше. Выберем ForwardRenderer.asset и перейдем на вкладку Inspector. Нажмем на кнопку AddRendererFeature и в открывшемся окошке выберем компонент Screen Space Ambient Occlusion. Теперь на вкладке «Инспектор» появится добавленный компонент New Screen Space Ambient Occlusion.

Оптимальных параметров для настройки этого объекта нет, они подбираются индивидуально. Мы предлагаем следующие настройки параметров:

Source — выберем Depth Normals. Параметр Normal Quality при этом блокируется, он будет доступен только при выборе Depth (в некоторых сценариях с помощью этого параметра можно улучшить качество затенения);

Direct Lighting Strength — 0.217;

Sample Count — 4.

Вернемся к настройке постпроцессинга. Выберем PostProcessValue и перейдем на вкладку «Инспектор». Нажмем на длинную кнопку Add Override (через нее мы будем добавлять все остальные постэффекты) и выберем хроматическую аберрацию (Chromatic Aberration). Аберрацию обычно используют для получения эффекта искажения цвета, которое создает реальная камера, когда ее объектив не может объединить все цвета в одну точку. (Эффект, в частности, с завидной регулярностью наблюдается в костюмах главного героя серии игр Crysis.) Если выкрутить параметр Intensity на 1, сможем насладиться этим эффектом во всей красе.

Не забываем вернуть значение Intensity в 0.1.

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

Теперь добавим эффект небольшой размытости отдаленных объектов (Depth Of Field).

выставим параметр Mode на Gaussian;

включим Hight Quality Sampling.

Давайте придадим нашей картинке еще более правдоподобный вид.

Добавим эффект Color Adjustments и настроим его следующим образом:

Post Exposure — 0.2;

Contrast 10 — Saturation -20.

Теперь повысим яркость в нашей сцене для получения большего динамического диапазона в работе над светом. Перейдем в панель Lighting. Нажмем на кнопку Window в шапке Unity, выберем Rendering → Lighting, в открывшейся вкладке выберем вторую закладку Environment, в разделе Environment Lighting установим значение Intensity Multiplier на 2.

Поскольку мы работаем с запеченным освещением, необходимо нажать на кнопку Generate Lighting внизу вкладки. Unity автоматически начнет запекать карту освещения. Перед этим рекомендуем сделать сцену чуть более яркой, установив значение Indirect Intensity на 2.

Теперь в окне Hierarchy выберем объект Directional Light и вернемся к вкладке «Инспектор». Установим значение Intensity на 2.

Масштабируемая и высокая производительность рендеринга

Universal Render Pipeline от Unity стал мощным решением, сочетающим красоту, скорость и производительность, а также поддержку всех целевых платформ Unity.

The Universal Rendering Pipeline is a scalable multiplatform render pipeline built on top of the Scriptable Render Pipeline (SRP) framework. Thanks to its scalability, customizability, and a rich feature set, URP offers you creative freedom in any type of project, from stylized visuals to physically based rendering.

Lost in Random scene

Lost In Random by Zoink Games

Lego Builder's Journey

LEGO® Builder's Journey от Light Brick Studio

Universal Render Pipeline
Упор на производительность
Однопроходный упреждающий рендеринг
Поддержка Shader Graph

Встроенный процесс рендеринга
Универсальность
Поддерживает как упреждающий, так и отложенный рендеринг

Mini Motorways Game

Mini Motorways by Dinosaur Polo Club

От 2D и 3D до AR/VR-проектов: Universal Render Pipeline позволяет не тратить время на доработку проекта для выпуска на новом устройстве.

  • Mac и iOS
  • Android
  • Xbox One
  • PlayStation 4
  • Nintendo Switch
  • Ведущие AR- и VR-платформы
  • Windows и UWP

Lost in Random: королева

Lost In Random от студии Zoink Games

Возможность конфигурации рендеринга в Unity с помощью скриптов на C# позволяет вам:

  • оптимизировать производительность для конкретных устройств;
  • тонко настраивать процесс рендеринга в соответствии с конкретными требованиями;
  • управлять потреблением вычислительных ресурсов.

Circuit

Circuit Superstars by Original Fire Games

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

Вы можете воспользоваться преимуществами готовых технологий уже сегодня. Обновите проекты с помощью средств перехода или создайте новый проект на основе нашего шаблона Universal через Unity Hub.

Красивый снимок Gigaya

To help with your transition from the Built-in Render Pipeline, URP offers numerous rendering capabilities, from Camera Stacking to Light Cookies and Point Light Shadows, as well as Renderer Features such as Decals and Screen Space Ambient Occlusion (SSAO).

In addition, URP supports the latest node-based tools offered by Unity. Shader Graph allows you to visually author shaders in real-time. With VFX Graph, you can leverage the power of your GPU to create extraordinary VFX.

Баннер Hero Shot

Thanks to its large platform reach, the URP already powers numerous successful games, such as the relaxing puzzle platformer LEGO Builder’s Journey and action-adventure game Lost in Random.

To help you start creating inspiring experiences in URP, Unity offers learning sample content including the URP Package Samples and the Gigaya living game sample.

Похожие статьи