E-Book

Как перенести проект Built-in Render Pipeline в Universal Render Pipeline (URP)

Jul 31, 2024|12 мин.
Fantasy Kingdom - Made with Unity, Assets by Synty Studios
Эта страница была переведена с использованием машинного перевода. Для просмотра исходной версии, которая является точной и служит источником достоверной информации,

Universal Render Pipeline (URP) - это конвейер рендеринга по умолчанию в Unity 6. В этом руководстве мы объясним, почему мы делаем URP по умолчанию, расскажем о ключевых особенностях и преимуществах этого Scriptable Render Pipeline (SRP), поделимся примерами студий, которые перевели свои проекты на URP, и объясним шаг за шагом, как Вы можете сделать то же самое со своими проектами.

Для более глубокого погружения в URP ознакомьтесь с полной электронной книгой " Введение в URP для продвинутых создателей".

Эволюция рендеринга: От встроенных конвейеров рендеринга к конвейерам рендеринга со сценарием

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

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

Однако, поскольку Unity продолжает добавлять поддержку большего количества платформ, мы столкнулись со следующими ограничениями во встроенном конвейере рендеринга:

  • Большая часть кода написана на C++ и не может быть изменена, что делает ее системой "черного ящика".
  • Поток рендеринга и передачи рендеринга предварительно структурированы.
  • Алгоритм рендеринга жестко закодирован.
  • Неограниченная настройка затрудняет достижение хорошей производительности на всех платформах.
  • Он открывает обратные вызовы в коде рендеринга, которые запускают точки синхронизации в конвейере. Эти обратные вызовы предотвращают оптимизацию многопоточного рендеринга, позволяя изменять состояние в любой точке кадра динамически, обращаясь к C#.
  • Трудно кэшировать данные, чтобы управлять состоянием персистентности для пользовательских инъекций.

Решение: Конвейеры рендеринга со сценариями

Конвейер рендеринга высокой четкости (HDRP) и URP - это конвейеры рендеринга со сценариями (SRP). ПСП Unity были разработаны для поддержки эффективного многоплатформенного рабочего процесса, обеспечивая:

  • Интеллектуальное и надежное масштабирование для максимального количества аппаратных платформ, от высоко- до низкоуровневых устройств
  • Возможность настраивать процессы рендеринга с помощью C#, а не C++, что означает, что не нужно компилировать новый исполняемый файл для каждого изменения
  • Гибкость для поддержки эволюции архитектуры
  • Способность создавать четкую графику, которая работает на многих платформах

На изображении ниже показано, как работают SRP. Они используют C# для управления и настройки проходов рендеринга и управления рендерингом, а также HLSL-шейдеры, которые можно создавать с помощью удобных для художника инструментов, таких как Shader Graph. Шейдеры дают Вам доступ даже к API нижнего уровня и абстракциям машинного уровня.

Новая графическая программируемая модель для Scriptable Render Pipelines
Новая графическая программируемая модель для Scriptable Render Pipelines

Опытный разработчик может создать новый SRP с нуля или модифицировать URP или HDRP. Графический стек имеет открытый исходный код и доступен для использования на GitHub.

Хотя оба SRP обладают уникальными преимуществами, URP разработан для максимального охвата платформы, чтобы Вы могли принести великолепно выглядящую графику куда угодно. Давайте посмотрим подробнее.

Образцы Unity's URP, Happy Harvest, The Oasis и Gem Hunter Match
Последние образцы проектов URP: Happy Harvest / The Garden / Gem Hunter Match

6 причин перенести свой проект Unity на URP

  1. URP доступен для широкого спектра уровней мастерства.

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

  2. URP является расширяемым и настраиваемым.

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

    Хотя низкоуровневый API рендеринга написан на C++ для повышения производительности, разработчик URP может написать простой скрипт на C#, который будет вызываться во время конвейера рендеринга, что позволяет выполнить высокоуровневую настройку без ущерба для производительности.

  3. URP предлагает несколько вариантов рендеринга.

    URP предоставляет универсальный рендерер, поддерживающий пути рендеринга Forward, Forward+ и Deferred, а также 2D-рендерер.

    Вы можете расширить эти рендеры дополнительными функциями и скриптовыми передачами рендеринга.

    Функция Render Objects (Рендеринг объектов) может использоваться для рендеринга объектов из заданной маски слоя на разных этапах конвейера рендеринга. Он также позволяет переопределять состояние материала и другие состояния рендеринга при визуализации этих объектов, что позволяет настраивать рендеринг без кода.

    URP может быть расширен пользовательскими рендерами для удовлетворения специфических потребностей. Unity 6 представляет Render Graph- это инструмент, который позволяет Вам получать доступ к различным буферам, используемым для рендеринга кадра, и манипулировать ими. Используя рабочий процесс рендеринга, его можно добавить на любом этапе конвейера рендеринга.

  4. URP улучшает разработку 2D игр.

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

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

  5. URP совместим с новейшими технологиями для художников.

    URP поддерживает новейшие инструменты для художников, такие как Shader Graph, VFX Graph и Rendering Debugger.

  6. Вы можете добиться лучшей производительности с помощью URP.

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

    - URP очень эффективно оценивает освещение в реальном времени. При рендеринге Forward все освещение оценивается за один проход. Forward+ улучшает стандартный рендеринг Forward, отбирая свет пространственно, а не по объекту. Это увеличивает общее количество ламп, которые можно использовать для визуализации кадра. При отложенном рендеринге он поддерживает Native RenderPass API, позволяя объединить проходы G-буфера и освещения в один проход рендеринга.

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

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

    - Unity 6 Preview представляет целый ряд обновлений URP, включая улучшения для CPU и GPU при рисовании сетки; SRP Batcher, который обеспечивает меньшее количество вызовов рисования и улучшает обработку глубины; а также GPU Resident Drawer и GPU Occlusion Culling, которые могут значительно уменьшить количество вызовов рисования для некоторых сцен.

    Хотя большинство проектов Unity теперь строятся на URP или HDRP, встроенный конвейер рендеринга по-прежнему доступен в Unity 6.

3 студии, которые перенесли свои проекты Built-in Render Pipeline в URP

Kluge Interactive - Synth Riders

Компания Kluge Interactive выпустила свою иммерсивную ритм-игру Synth Riders на Steam VR и Meta Quest в 2019 году. С тех пор она была перенесена на множество устройств, включая Apple Vision Pro. Следование новейшим технологиям было очень важно для того, чтобы помочь студии охватить все большее количество игроков на VR-платформах.

"Последние 12-18 месяцев разработки игр были посвящены погашению технического долга и приближению наших инструментов к 2022 LTS", - объясняет АннМари Виррел Бартоломеус, технический продюсер компании Kluge Interactive. "Мы уже перешли со встроенного конвейера рендеринга на универсальный конвейер рендеринга (URP) и перешли на бэкэнд OpenXR. Это помогло нам оказаться в гораздо более выгодном техническом положении, чтобы работать с новыми технологиями".

Читать подробный обзор

Subcult Joint - Cookie Cutter

Subcult Joint's Cookie Cutter это высокооктановая Metroidvania в жанре beat-em-up, доступная на PC и консолях. Все объекты игры нарисованы вручную и анимированы с использованием традиционных техник. Чтобы придать глубину этим потрясающим персонажам и окружению, Subcult Joint нужна была идеальная система освещения - такая, которую можно было бы оптимизировать и сохранять работоспособность на разных платформах.

Перейдя на URP и обновив проект до последней версии Unity, Subcult Joint раскрыла весь потенциал Cookie Cutter. Они добавили более 10 000 2D Lights и оптимизировали их с помощью обновленного Memory Profiler. А последняя версия Sprite Atlases позволила им легче и эффективнее переносить сотни нарисованных вручную анимаций на различные целевые платформы.

"Каждый свет в игре освещает наши спрайты в режиме реального времени, создавая ощущение плотности и согласованности между персонажами, анимацией и окружением", - говорит основатель Subcult Joint Стефано Гульельмана (Stefano Guglielmana). "В темных местах персонажи находятся в тени, и купаются в свете, когда попадают под насыщенные, загрязненные световые люки во внешних помещениях. Мне так нравятся эти детали!"

Читать подробный обзор

more8bit - Bleak Sword DX

Соло-разработчик Луис Морено Хименес, также известный как more8bit, первоначально выпустил свою 8-битную игру, похожую на Souls Bleak Sword на Apple Arcade в 2019 году. После успеха игры издатели Devolver Digital предложили more8bit выпустить игру на PC и консолях, чтобы охватить еще больше игроков. more8bit воспользовалась возможностью расширить оригинальную концепцию Bleak Sword, а не воссоздать точную копию мобильной версии.

Bleak Sword DXВизуальное оформление напоминает ретро-аркадные игры. Эффекты Post Processing включают в себя расцветку света с грязной текстурой, искривление экрана, фильтры, похожие на VHS, эффекты глубины резкости и многое другое. Для Луиса самой сложной задачей было сохранить визуальную изюминку Bleak Sword, но улучшить графику DX, чтобы использовать преимущества дополнительной вычислительной мощности. Он создал большую часть VFX, используя встроенный конвейер рендеринга Unity и Shader Graph, а затем оптимизировал в URP.

"Переход от Built-in к URP прошел очень гладко. Мне потребовались лишь выходные, а затем неделя, чтобы устранить мелкие неполадки", - говорит more8bit.

Читать подробный обзор

Как добавить URP в существующий проект Built-in Render Pipeline

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

Важно: Перед выполнением шагов в этом разделе обязательно сделайте резервную копию проекта с помощью системы контроля исходного кода. Этот процесс преобразует активы, и Unity не предоставляет возможности отмены. Если Вы используете контроль исходного кода, Вы сможете при необходимости вернуться к предыдущим версиям активов.

Если Вы обновляете существующий проект Built-in Render Pipeline, Вам необходимо добавить пакет URP в свой проект.

Перейдите в Window > Package Manager и нажмите на выпадающий список Packages , чтобы добавить URP в свой проект. Убедитесь, что выбрали Unity Registry, а затем Universal RP. Нажмите Загрузить в правом нижнем углу окна, если пакет URP еще не установлен на Вашем компьютере для разработки. После загрузки нажмите Установить.

Установка URP с помощью Package Manager
Установка URP с помощью Package Manager

Чтобы создать ассет URP, щелкните правой кнопкой мыши в окне проекта и выберите Create > Rendering > URP Asset (с Universal Renderer). Назовите актив.

Создание актива URP
Создание актива URP

Помните: Если Вы создаете новый проект с использованием шаблонов Universal Render Pipeline или 3D (URP), эти активы URP уже доступны в проекте. Вместо того, чтобы создавать один актив URP, URP использует два файла, каждый из которых имеет расширение Asset.

Два ассета в URP, один для настроек URP, а другой для данных рендерера
Два ассета в URP, один для настроек URP, а другой для данных рендерера

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

Кроме того, UniversalRP_Renderer управляет высокоуровневой логикой рендеринга и передает данные для URP. Он поддерживает прямые и отложенные пути, а также 2D-рендерер, который позволяет использовать такие функции, как 2D Lights, 2D Shadows и Light Blend Styles. Вы даже можете расширить URP, чтобы создать свои собственные рендеры.

Inspector для актива данных UniversalRP_Renderer
Inspector для актива данных UniversalRP_Renderer

Другой ассет URP служит для управления настройками Quality, Lighting, Shadows и Post-processing. Вы можете использовать различные активы URP для управления настройками качества.

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

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

Актив URP в Inspector
Актив URP в Inspector

Несмотря на выполнение этих шагов по созданию URP Asset, открытая сцена в представлении Scene или Game все равно будет использовать встроенный конвейер рендеринга. Вам необходимо выполнить последний шаг, чтобы перейти на URP: Перейдите в меню Редактирование > Настройки проекта и откройте панель Графика. Нажмите на маленькую точку рядом с None (Render Pipeline Asset). На открытой панели выберите UniversalRP.

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

Преобразование сцен существующего проекта

Выполнив описанные выше действия, Вы обнаружите, что Ваши прекрасные сцены вдруг окрасились в пурпурный цвет. Это происходит потому, что шейдеры, используемые материалами в проекте Built-in Render Pipeline, не поддерживаются в URP. К счастью, существует метод, позволяющий вернуть Вашим сценам их первоначальное качество.

Материалы в сцене отображаются пурпурным цветом, потому что их шейдеры, основанные на Built-in Render Pipeline, должны быть преобразованы для использования в URP.
Материалы в сцене отображаются пурпурным цветом, потому что их шейдеры, основанные на Built-in Render Pipeline, должны быть преобразованы для использования в URP.

Перейдите в меню Window > Rendering > Render Pipeline Converter. Выберите Преобразовать встроенный в 2D (URP) для 2D проекта или Встроенный в URP для 3D проекта. Предполагая, что Ваш проект 3D, Вам нужно будет выбрать соответствующие конвертеры:

  • Настройки рендеринга: Выберите эту опцию, чтобы создать несколько активов настроек конвейера рендеринга, которые будут максимально соответствовать встроенным настройкам качества конвейера рендеринга. Это позволит Вам более эффективно тестировать различные уровни качества.
  • Обновление материала: Используйте эту функцию для преобразования материалов из встроенного конвейера рендеринга в URP.
  • Конвертер анимационных клипов: Это позволяет конвертировать анимационные ролики. Он запускается после завершения работы конвертера Material Upgrade.
  • Только для чтения Преобразователь материалов: Это преобразует предварительно собранные, доступные только для чтения Материалы, включенные в проект Unity. Он индексирует проект и создает временный файл .index. Обратите внимание, что это может занять значительное время.

Преобразование пользовательских шейдеров

Пользовательские шейдеры не преобразуются с помощью конвертера Material Upgrade. Использование Shader Graph часто является самым быстрым способом обновления пользовательского шейдера до URP.

Существует несколько различных шейдеров URP, включая:

  • Универсальный трубопровод для рендеринга/Lit: Этот шейдер физического рендеринга (PBR), похожий на встроенный стандартный шейдер, может использоваться для представления большинства реальных материалов. Он поддерживает все функции стандартных шейдеров с металлическим и спекулярным рабочим процессом.
  • Universal Render Pipeline/Simple Lit: Эта модель использует модель Блинна-Фонга и подходит для мобильных устройств низкого класса или игр, в которых не используются рабочие процессы PBR.
  • Universal Render Pipeline/Baked Lit: Используйте этот шейдер для стилизованных игр или приложений, в которых требуется только запеченное освещение с помощью лайтмапов, световых зондов и адаптивных зондовых объемов Unity 6. Этот шейдер не использует Physically Based Shading и не имеет освещения в реальном времени, поэтому все ключевые слова и варианты шейдера, относящиеся к реальному времени, удалены из кода шейдера, что ускоряет его вычисление.
  • Универсальный трубопровод/комплекс Lit: Complex Lit Shader содержит все функции Lit Shader и добавляет расширенные возможности материала. Некоторые функции этого шейдера могут быть значительно более ресурсоемкими и требовать оборудования Unity Shader Model 4.5.
  • Универсальный трубопровод/неосвещенный: Это GPU-производительный шейдер, который не использует уравнения освещения.
  • Универсальный рендер Трубопровод/Рельеф/Свет: Он подходит для использования с пакетом Terrain Tools.
  • Универсальный конвейер рендеринга/Частицы/Лит: Этот шейдер частиц использует модель освещения PBR.
  • Универсальный конвейер рендеринга/частицы/неосвещенность: Этот шейдер частиц без подсветки является легким для GPU.

Хотя Simple Lit заменяет многие устаревшие или мобильные шейдеры, производительность не такая же. Устаревшие/мобильные шейдеры оценивают освещение лишь частично, в то время как Simple Lit учитывает все освещение, как определено в URP Asset.

Обратитесь к этой таблице в нашей документации по URP, чтобы увидеть, как каждый шейдер URP соотносится с его эквивалентом в Встроенном Конвейере Рендеринга.

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

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

Если Вы выберете Initialize And Convert, преобразование начнется автоматически после инициализации конвертеров. После завершения работы Вам может быть предложено снова открыть сцену, активную в Редакторе.

Конвертер конвейера рендеринга
Конвертер конвейера рендеринга

Получите полную электронную книгу

Изучите Universal Render Pipeline (URP) для опытных создателей Unity.
Изучите Universal Render Pipeline (URP) для продвинутых создателей Unity (издание 2022 LTS)

Получите максимум от URP с помощью нашего исчерпывающего 140-страничного руководства, Введение в Universal Render Pipeline для продвинутых создателей Unity. Написанное экспертом по Unity Ником Левером, это руководство рассказывает о лучших практиках создания масштабируемой графики в Unity. Основные моменты включают:

  • Настройки и конвертеры URP
  • Сравнение конвейеров рендеринга и путей рендеринга
  • Освещение в URP
  • Шейдеры и обратные вызовы конвейера
  • Post Processing
  • Советы по производительности и оптимизации и многое другое

Эти обновления присутствуют почти в каждом разделе этого последнего издания руководства, поэтому Вы можете рассчитывать на то, что оно будет максимально точно соответствовать Вашему опыту использования URP в Unity 2022 LTS.

Создайте свою игру, своим способом

Получите больше контроля над внешним видом Вашей игры и максимизируйте производительность рендеринга с помощью URP. Этот SRP станет еще более мощным, чем когда-либо, когда Unity 6 выйдет на рынок в конце этого года. Создавайте сцены с высокой детализацией и масштабируйте кадры низкого разрешения без потери визуальной достоверности, сводя к минимуму необходимость ручной оптимизации на Ваших целевых платформах.

Начните работу с Unity 6 Preview

Как перенести проект Built-in Render Pipeline в Universal Render Pipeline (URP)

Узнайте, как обновить проект Built-In Render Pipeline Unity до Universal Render Pipeline, и посмотрите, как 3 студии достигли большего количества платформ, перейдя на URP.