Эта страница содержит информацию о том, как получить, установить и настроить конвейер рендеринга, который сейчас использует Unity. Конвейер рендеринга, который сейчас использует Unity, называется активным конвейером рендеринга.
Обзор
Для рендеринга контента Unity может использовать либо встроенный конвейер рендеринга, либо конвейер рендеринга на основе конвейера рендеринга с поддержкой сценариев (SRP), который включает универсальный конвейер рендеринга ( URP) и конвейер рендеринга высокого разрешения (HDRP).
Чтобы указать, какой Scriptable Render Pipeline использует Unity, вы используете ресурсы Render Pipeline. Актив конвейера рендеринга сообщает Unity, какой SRP использовать и как его настроить. Если вы не укажете актив конвейера рендеринга, Unity использует встроенный конвейер рендеринга.
Вы можете создать несколько ресурсов конвейера рендеринга, использующих один и тот же конвейер рендеринга, но с разными конфигурациями; например, вы можете использовать разные ресурсы конвейера рендеринга для разных уровней качества оборудования. Общее введение в ресурсы конвейера рендеринга см. в разделе Введение в Scriptable Render Pipeline. Для получения информации об активе конвейера рендеринга URP см. Универсальный ресурс конвейера рендеринга, а для ресурса конвейера рендеринга HDRP см. Ресурс конвейера рендеринга высокого разрешения.
Как только вы измените активный конвейер рендеринга в редакторе Unity или во время выполнения, Unity использует новый активный конвейер рендеринга для рендеринга содержимого. Если вы находитесь в редакторе Unity, это включает представление игры, СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Просмотр в представлении Словарь и предварительный просмотр материалов в Панель «Проект» и ИнспекторОкно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и отредактируйте значения. Подробнее
См. в Словарь.
При изменении активного конвейера рендеринга необходимо убедиться, что ресурсы и код в вашем проекте совместимы с новым конвейером рендеринга; в противном случае вы можете столкнуться с ошибками или непреднамеренными визуальными эффектами.
Определение активного конвейера рендеринга
Настройки в Настройки графики и Настройки качества определяют активный конвейер рендеринга. В настройках графики вы настраиваете конвейер рендеринга, который Unity использует по умолчанию. В настройках качества вы можете переопределить конвейер рендеринга по умолчанию для данного уровня качества.
Чтобы получить или установить конвейер рендеринга по умолчанию, используйте Настройки графики > Параметры конвейера рендеринга с поддержкой скриптов (или эквивалентный ему API, GraphicsSettings.defaultRenderPipeline). Чтобы получить или задать конвейер рендеринга, который переопределяет значение по умолчанию для данного уровня качества, выберите Настройки качества > Конвейер рендеринга (или эквивалентный ему API, ). QualitySettings.renderPipeline).
Unity определяет активный конвейер рендеринга следующим образом:
- Если настройки графики > Параметры конвейера рендеринга с поддержкой сценариев не ссылаются на актив конвейера рендеринга, Unity использует встроенный конвейер рендеринга. Это происходит независимо от состояния настроек качества.
- В противном случае:
- Если текущий уровень настроек качества > Конвейер рендеринга ссылается на актив конвейера рендеринга, Unity использует это значение.
- В противном случае Unity использует значение из настроек графики.
Как получить и установить активный конвейер рендеринга в пользовательском интерфейсе редактора
Получение активного конвейера рендеринга
Для получения активного конвейера рендеринга в редакторе UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словарь, необходимо проверить окна настроек графики и настроек качества. Информацию о том, как использовать эти значения для определения активного конвейера рендеринга, см. в разделе Определение активного конвейера рендеринга.
Активация встроенного конвейера рендеринга
Чтобы настроить активный конвейер рендеринга на встроенный конвейер рендеринга, удалите все ресурсы конвейера рендеринга из настроек графики и настроек качества.
Для этого:
- Выберите Изменить > Настройки проекта > Качество.
- Для каждого уровня качества, если объект конвейера рендеринга назначен в поле Конвейер рендеринга, отмените его назначение.
- Выберите Редактировать > Настройки проекта > Графика.
- Если ресурс конвейера рендеринга назначен в поле Параметры конвейера рендеринга с поддержкой сценариев, отмените его назначение.
Активация URP, HDRP или пользовательского конвейера рендеринга на основе SRP
Чтобы установить активный конвейер рендеринга на тот, который основан на SRP, сообщите Unity, какой ресурс конвейера рендеринга использовать в качестве активного конвейера рендеринга по умолчанию и, при необходимости, какие ресурсы конвейера рендеринга использовать для каждого уровня качества.
Для этого:
- В папке проекта найдите ресурсы Render Pipeline, которые вы хотите использовать.
- Установите конвейер рендеринга по умолчанию, который Unity использует, когда нет переопределения для данного уровня качества.
- Выберите Редактировать > Настройки проекта > Графика.
- Перетащите объект конвейера рендеринга в поле Настройка конвейера рендеринга с поддержкой сценариев.
-
Необязательно: задайте переопределение ресурсов конвейера рендеринга для разных уровней качества.
- Выберите Изменить > Настройки проекта > Качество.
- Перетащите объект конвейера рендеринга в поле Конвейер рендеринга.
Как получить и установить активный конвейер рендеринга в скриптах C#
В C# скриптыфрагмент кода, который позволяет создавать собственные компоненты, запускать игровые события, изменять свойства компонентов через время и реагировать на пользовательский ввод любым удобным для вас способом. Подробнее
См. в Словарь, вы можете получить и установить активный конвейер рендеринга и получить обратный вызов при изменении активного конвейера рендеринга. Это можно сделать в режиме редактирования или режиме воспроизведения в редакторе Unity или во время выполнения приложения.
Для этого используйте следующие API:
- Существует несколько способов получить активный конвейер рендеринга: <ул>
- Чтобы получить ссылку на актив конвейера рендеринга, определяющий активный конвейер рендеринга, используйте GraphicsSettings.currentRenderPipeline.
- Чтобы получить ссылку на актив конвейера рендеринга, определяющий активный конвейер рендеринга, и определить, использует ли Unity значение по умолчанию или значение переопределения, получите значения GraphicsSettings.defaultRenderPipeline и QualitySettings.renderPipeline. Сведения об использовании этих значений см. в разделе Определение активного конвейера рендеринга или в следующем примере кода.
- Чтобы получить экземпляр RenderPipeline для активного конвейера рендеринга, используйте RenderPipelineManager .currentPipeline. Примечание. Unity обновляет это свойство только после рендеринга хотя бы одного кадра с помощью активного конвейера рендеринга.
using UnityEngine;
using UnityEngine.Rendering;
public class ActiveRenderPipelineExample : MonoBehaviour
{
// In the Inspector, assign a Render Pipeline Asset to each of these fields
public RenderPipelineAsset defaultRenderPipelineAsset;
public RenderPipelineAsset overrideRenderPipelineAsset;
void Start()
{
GraphicsSettings.defaultRenderPipeline = defaultRenderPipelineAsset;
QualitySettings.renderPipeline = overrideRenderPipelineAsset;
DisplayCurrentRenderPipeline();
}
void Update()
{
// When the user presses the left shift key, switch the default render pipeline
if (Input.GetKeyDown(KeyCode.LeftShift)) {
SwitchDefaultRenderPipeline();
DisplayCurrentRenderPipeline();
}
// When the user presses the right shift key, switch the override render pipeline
else if (Input.GetKeyDown(KeyCode.RightShift)) {
SwitchOverrideRenderPipeline();
DisplayCurrentRenderPipeline();
}
}
// Switch the default render pipeline between null,
// and the render pipeline defined in defaultRenderPipelineAsset
void SwitchDefaultRenderPipeline()
{
if (GraphicsSettings.defaultRenderPipeline == defaultRenderPipelineAsset)
{
GraphicsSettings.defaultRenderPipeline = null;
}
else
{
GraphicsSettings.defaultRenderPipeline = defaultRenderPipelineAsset;
}
}
// Switch the override render pipeline between null,
// and the render pipeline defined in overrideRenderPipelineAsset
void SwitchOverrideRenderPipeline()
{
if (QualitySettings.renderPipeline == overrideRenderPipelineAsset)
{
QualitySettings.renderPipeline = null;
}
else
{
QualitySettings.renderPipeline = overrideRenderPipelineAsset;
}
}
// Print the current render pipeline information to the console
void DisplayCurrentRenderPipeline()
{
// GraphicsSettings.defaultRenderPipeline determines the default render pipeline
// If it is null, the default is the Built-in Render Pipeline
if (GraphicsSettings.defaultRenderPipeline != null)
{
Debug.Log("The default render pipeline is defined by " + GraphicsSettings.defaultRenderPipeline.name);
}
else
{
Debug.Log("The default render pipeline is the Built-in Render Pipeline");
}
// QualitySettings.renderPipeline determines the override render pipeline for the current quality level
// If it is null, no override exists for the current quality level
if (QualitySettings.renderPipeline != null)
{
Debug.Log("The override render pipeline for the current quality level is defined by " + QualitySettings.renderPipeline.name);
}
else
{
Debug.Log("No override render pipeline exists for the current quality level");
}
// If the default render pipeline is the Built-in Render Pipeline, Unity always uses that.
// Otherwise, if an override render pipeline is defined, Unity uses that.
// If an override render pipeline is not defined, it falls back to the default value
if (GraphicsSettings.defaultRenderPipeline == null)
{
Debug.Log("The active render pipeline is the default render pipeline");
}
else if (QualitySettings.renderPipeline != null)
{
Debug.Log("The active render pipeline is the override render pipeline");
}
else
{
Debug.Log("The active render pipeline is the default render pipeline");
}
// To get a reference to the Render Pipeline Asset that defines the active render pipeline,
// without knowing if it is the default or an override, use GraphicsSettings.currentRenderPipeline
if (GraphicsSettings.currentRenderPipeline != null)
{
Debug.Log("The active render pipeline is defined by " + GraphicsSettings.currentRenderPipeline.name);
}
else
{
Debug.Log("The active render pipeline is the Built-in Render Pipeline");
}
}
}