Конвейеры отрисовки Unity
Удаленная отрисовка работает как с (встроенным Standard render pipeline конвейером отрисовки), так и Universal render pipeline с (URP). По соображениям производительности рекомендуется использовать встроенный конвейер отрисовки, если не существует строгих причин, требующих URIP.
Настройка универсального конвейера отрисовки
Чтобы использовать Universal render pipelineпакет, его пакет должен быть установлен в Unity, а ресурс HybridRenderingPipeline необходимо добавить в параметры графики.
- Установите пакет универсальной RP (версии 7.3.1 или более поздней версии) с помощью пользовательского интерфейса диспетчер пакетов Unity, как описано в разделе Unity вручную. Установка из реестра.
- Откройте Параметры редактирования > проекта.
- Выбор графики из меню слева
- Измените параметр Scriptable Rendering Pipeline (Конвейер отрисовки с поддержкой скриптов), задав значение HybridRenderingPipeline.

Иногда пользовательский интерфейс не заполняет список доступных типов конвейеров из пакетов. Если эта проблема возникает, ресурс HybridRenderingPipeline необходимо перетащить в поле вручную:
Примечание. Если не удается перетащить ресурс HybridRenderingPipeline в поле Render Pipeline Asset (Преобразовать для просмотра ресурс конвейера), например потому, что это поле не существует, убедитесь, что конфигурация пакета содержит пакет com.unity.render-pipelines.universal .
Настройка стандартного конвейера отрисовки
В отличие от этого Universal render pipeline, для работы с ARR нет дополнительных действий Standard render pipeline по настройке. Вместо этого среда выполнения ARR автоматически задает необходимые перехватчики отрисовки.
Следующие шаги
- Установка пакета Удаленная отрисовка для Unity
- Настройка Удаленная отрисовка для Unity
- Игровые объекты и компоненты Unity
- Учебник. Просмотр удаленных моделей
Масштабируемая и высокая производительность рендеринга
Universal Render Pipeline от Unity стал мощным решением, сочетающим красоту, скорость и производительность, а также поддержку всех целевых платформ Unity.
See what’s new in URP in Unity 2022 LTS Learn more
Scalable visuals across all platformsThe Universal Render Pipeline is a multiplatform rendering solution built on top of the Scriptable Render Pipeline (SRP) framework. With 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 by Zoink Games
Первый взгляд на Universal Render Pipeline
- Сравнение: Universal Render Pipeline и встроенный рендеринг
- Поддерживаемые платформы
- Больше выбора и контроля
- Обновитесь сегодня
- Обновитесь сегодня
- Обновитесь сегодня

LEGO® Builder’s Journey от Light Brick Studio
Universal Render Pipeline и встроенный рендеринг
Universal Render Pipeline
Упор на производительность
Однопроходный упреждающий рендеринг
Поддержка Shader GraphВстроенный процесс рендеринга
Универсальность
Поддерживает как упреждающий, так и отложенный рендеринг
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 от студии Zoink Games
Больше выбора и контроля
Возможность конфигурации рендеринга в Unity с помощью скриптов на C# позволяет вам:
- оптимизировать производительность для конкретных устройств;
- тонко настраивать процесс рендеринга в соответствии с конкретными требованиями;
- управлять потреблением вычислительных ресурсов.

Circuit Superstars by Original Fire Games
Обновитесь сегодня
Universal Render Pipeline проще, чем встроенный процесс рендеринга, но улучшает качество графики. Перевод проекта со встроенного процесса рендеринга на Universal Render Pipeline должен обеспечивать аналогичную или улучшенную производительность. Прочтите статью в нашем блоге, чтобы узнать о том, как Universal Render Pipeline повышает частоту кадров без снижения качества графики.
Вы можете воспользоваться преимуществами готовых технологий уже сегодня. Обновите проекты с помощью средств перехода или создайте новый проект на основе нашего шаблона Universal через Unity Hub.

Artist-friendly features
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.

Production-proven results
Thanks to its large platform reach, URP already powers numerous successful games, such as the relaxing puzzle platformer LEGO Builder’s Journey and the action-adventure game Lost in Random.
To help you start creating inspiring experiences in URP, discover the URP 3D Sample to learn how to create, customize, and scale beautiful graphics with flexibility and performance.
Разработка мобильных игр на Unity в современных реалиях. URP, 2D Animation и все-все все на примере игры
Всем привет! Это снова Илья и сегодня мы поговорим о технической реализации мобильной игры в современных реалиях. Статья не претендует на уникальность, однако в ней вы можете найти для себя что-то полезное. А чтобы рассмотреть разработку на реальном проекте — мы возьмем реализацию нашей игры, которая на днях выходит в Soft-Launch.
Итак, запасаемся кофе, открываем Unity и погнали!
Базовая настройка проекта. URP и все-все-все.
Начнем с того, что мы работаем с URP (Universal Render Pipeline). Почему так? Потому что он проще в настройке и обладает более гибким контролем, чем стандартный рендер. Ну и добиться хорошей производительности на тапках исходя из этого — намного проще.
Стоит указать, что ниже пойдет речь о 2D игре. Для 3D игр подходы будут несколько отличаться, как и настройки.
Мы реализовали два уровня графики. Low Level — для деревянных смартфонов и High Level — для флагманов. Уровни графики подключаются при помощи Project Settings.
В нашем проекте стоят следующие настройки (для Quality уровней):
Настройки графики для пресета Low в Project Settings
Настройки пресета HighНа что здесь следует обратить внимание:
- Texture Quality — качество текстур. Для High — мы берем полный размер текстур, для Low — Четверть. Можно еще внести Middle пресет с дополнительным уровнем.
- Resolution Scaling везде стоит 1 — мы берем это значение из URP Asset.
- VSync на Low уровне стоит отключить.
- Все что связано с реалтаймом — отключаем.
Теперь перейдем к настройкам самих URP Asset. На что следует обратить внимание:
Для разных уровней качества можно установить Render Scale — тем самым снижая разрешение для отрисовки. Также незабываем про Dynamic / Static батчинг.
Adaptive Performance
Отличная штука для автоматической подгонки производительности мобильных игр (в частности для Samsung-устройств):
Другие полезные настройки:
- Отключите 3D освещение, лайтмапы, тени и все что с этим связано.
- Используйте для сборки IL2CPP — ускорьте работу вашего кода.
- Используйте Color Space — Linear.
- По-возможности подключите multithreaded rendering.
Игровой фреймворк
Едем дальше. URP и другие настройки проекта сделали. Теперь настало время поговорить о нашем ядре проекта. Что оно включает в себя?
Само ядро фреймворка включает в себя:
- Игровые менеджеры для управления состояниями игры, аудио, переводов, работы с сетью, аналитикой, рекламными интеграциями и прочим.
- Базовые классы для интерфейсов (компоненты, базовые классы View).
- Классы для работы с контентом, сетью, шифрованием и др.
- Базовые классы для работы с логикой игры.
- Базовые классы для персонажей и пр.
- Утилитарные классы (Coroutine Provider, Unix Timestamp, Timed Event и пр.)
Зачем нужны менеджеры?
Они нужны нам для того, чтобы из контроллеров управлять состояниями и глобальными функциями (к примеру, аналитикой).
Хотя мы и используем внедрение зависимостей, менеджеры состояний реализованы в качестве синглтонов и могут быть (и по их назначению должны быть) инициализированы единожды. А дальше мы просто можем использовать их:
AnalyticsManager.Instance().SendEvent(«moreGamesRequested»);
А уже сам менеджер распределяет, в какие системы аналитики, как и зачем мы отправляем эвент.
Базовые классы.
Здесь все просто. Они включают в себя базовую логику для наследования. К примеру, класс BaseView и его интерфейс:
namespace GameFramework.UI.Base < using System; public interface IBaseView < public void ShowView(ViewAnimationOptions animationOptions = null, Action onComplete = null); public void HideView(ViewAnimationOptions animationOptions = null, Action onComplete = null); public void UpdateView(); >>
А дальше мы можем использовать его, к примеру таким образом:
Классы для работы с контентом, сетью, шифрованием
Ну здесь все просто и очевидно. Вообще, у нас реализовано несколько классов:
1) Классы шифрования (Base64, MD5, AES и пр.)
2) FileReader — считывающий, записывающий файл, с учетом кодировки, шифрования и других параметров. Также он умеет сразу сериализовать / десериализовать объект в нужном формате и с нужным шифрованием.
3) Network-классы, которые позволяют удобно работать с HTTP-запросами, работать с бандлами / адрессаблс и др.
Утилитарные классы
Здесь у нас хранятся полезные штуки, вроде Unix Time конвертера, а также костыли (вроде Coroutine Provider-а).
Unix Time Converter:
Костыль Coroutine-Provider:
namespace GameFramework.Utils < using System.Collections; using System.Collections.Generic; using UnityEngine; public class CoroutineProvider : MonoBehaviour < static CoroutineProvider _singleton; static Dictionary
_routines = new Dictionary (100); [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )] static void InitializeType () < _singleton = new GameObject($"#").AddComponent(); DontDestroyOnLoad( _singleton ); > public static Coroutine Start ( IEnumerator routine ) => _singleton.StartCoroutine( routine ); public static Coroutine Start ( IEnumerator routine , string id ) < var coroutine = _singleton.StartCoroutine( routine ); if( !_routines.ContainsKey(id) ) _routines.Add( id , routine ); else < _singleton.StopCoroutine( _routines[id] ); _routines[id] = routine; >return coroutine; > public static void Stop ( IEnumerator routine ) => _singleton.StopCoroutine( routine ); public static void Stop ( string id ) < if( _routines.TryGetValue(id,out var routine) ) < _singleton.StopCoroutine( routine ); _routines.Remove( id ); >else Debug.LogWarning($»coroutine » not found»); > public static void StopAll () => _singleton.StopAllCoroutines(); > > Логика сцен
Наша игра — это по своей сути интерактивная история с различными мини-играми (поиск предметов, простенькие бои, крафтинг, найди пару, а также большое количество головоломок).
Каждая сцена — содержит в себе основной Installer, который помимо различных View, подключает логические блоки — своеобразные куски механик:
Способы рендеринга
Unity поддерживает различные способы рендеринга (Rendering Paths). Вам следует выбрать подходящий вам способ в зависимости от содержимого вашей игры и целевой платформы / аппаратных средств. Различные способы рендеринга имеют разную функциональность и разные показатели производительности; в основном, это касается теней и источников света.
The rendering path used by your project is chosen on the Graphics window. Additionally, you can override it for each Camera.
If the graphics card can’t handle a selected rendering path, Unity automatically uses a lower fidelity one. For example, on a GPU that can’t handle Deferred Shading, Forward Rendering will be used.
Deferred Shading
Deferred Lighting — это способ рендеринга с наиболее точным освещением и тенями. Лучше всего применять при большом количестве динамических источников света. Требует определённый уровень аппаратной поддержки и доступен только в Unity Pro.
Для дополнительной информации, посетите страницу про отложенное освещение.
Forward Rendering
Forward — это способ рендеринга, основанный на шейдерах. Он поддерживает попиксельное освещение (включая карты нормалей и источники света с cookie текстурами) и динамические тени от одного направленного источника света. По умолчанию, небольшое количество самых ярких источников света рендерится в режиме попиксельного освещения. Остальные источники света рассчитываются на вершинах объекта.
Для дополнительной информации, посетите страницу про упреждающий рендеринг.
Legacy Deferred
Legacy Deferred (light prepass) is similar to Deferred Shading, just using a different technique with different trade-offs. It does not support the Unity 5 physically based standard shader.
Для дополнительной информации, посетите страницу про отложенное освещение.
Legacy Vertex Lit
Vertex Lit — это способ рендеринга с наименьшей точностью освещения и без поддержки динамических теней. Лучше всего его применять на старых компьютерах или на ограниченных мобильных платформах.
Для дополнительной информации, посетите страницу про вершинное освещение.
NOTE: Deferred rendering is not supported when using Orthographic projection. If the camera’s projection mode is set to Orthographic, these values are overridden, and the camera will always use Forward rendering.
Сравнение способов рендеринга
Deferred Forward Legacy Deferred Vertex Lit Возможности Попиксельное освещение (карты нормалей, источники освещения с cookie) Да Да Да — Динамические тени Да With caveats Да — Reflection Probes Да Да — — Буферы глубины и нормалей Да С дополнительными проходами рендеринга Да — Мягкие частицы Да — Да — Полупрозрачные объекты — Да — Да Сглаживание Anti-Aliasing — Да — Да Маски выборочного рендеринга у источников света Ограниченно Да Ограниченно Да Точность освещения Все источники попиксельные Некоторые источники попиксельные Все источники попиксельные Все источники повертексные (вершинные) Производительность Зависимость потребления ресурсов попиксельным источником света Количество освещаемых пикселей Количество освещаемых пикселей * количество освещаемых объектов Количество освещаемых пикселей — Number of times objects are normally rendered 1 Зависимость потребления ресурсов попиксельным источником света 2 1 Overhead for simple scenes High Ничего Medium Ничего Поддержка на разных платформах PC (Windows/Mac) Shader Model 3.0+ & MRT Все Shader Model 3.0+ Все Мобильные платформы (iOS/Android) OpenGL ES 3.0 & MRT, Metal (on devices with A8 or later SoC) Все OpenGL ES 2.0 Все Консоли XB1, PS4 Все XB1, PS4, 360 — - Измените параметр Scriptable Rendering Pipeline (Конвейер отрисовки с поддержкой скриптов), задав значение HybridRenderingPipeline.