Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Создание объекта конвейера рендеринга и экземпляра конвейера рендеринга в пользовательском конвейере рендеринга

Если вы создаете собственный конвейер рендеринга на основе конвейера рендеринга с возможностью сценариев (SRP), ваш проект должен содержать:

  • Сценарий, который наследуется от RenderPipelineAsset и переопределяет его метод CreatePipeline(). Этот скрипт определяет ваш ресурс конвейера рендеринга.
  • Скрипт, который наследуется от RenderPipeline и переопределяет его Render() метод. Этот скрипт определяет ваш экземпляр конвейера рендеринга, и в нем вы пишете свой собственный рендерингпроцесс вывода графики на экран (или на текстуру рендера). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
    См. в коде Словарь
    .
  • Актив конвейера рендеринга, созданный вами из скрипта RenderPipelineAsset. Этот ресурс выступает в качестве фабричного класса для вашего экземпляра конвейера рендеринга.

Поскольку эти элементы очень тесно связаны между собой, их следует создавать одновременно.

Создание базового ресурса конвейера рендеринга и экземпляра конвейера рендеринга

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

  1. Создайте сценарий C# с именем ExampleRenderPipelineAsset.cs.

  2. Скопируйте и вставьте следующий код в новый скрипт:

    using UnityEngine; using UnityEngine.Rendering; // The CreateAssetMenu attribute lets you create instances of this class in the Unity Editor. [CreateAssetMenu(menuName = "Rendering/ExampleRenderPipelineAsset")] public class ExampleRenderPipelineAsset : RenderPipelineAsset { // Unity calls this method before rendering the first frame. // If a setting on the Render Pipeline Asset changes, Unity destroys the current Render Pipeline Instance and calls this method again before rendering the next frame. protected override RenderPipeline CreatePipeline() { // Instantiate the Render Pipeline that this custom SRP uses for rendering. return new ExampleRenderPipelineInstance(); } }
  3. Создайте сценарий C# с именем ExampleRenderPipelineInstance.cs.

  4. Скопируйте и вставьте следующий код в новый скрипт:

    using UnityEngine; using UnityEngine.Rendering; public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { } protected override void Render (ScriptableRenderContext context, Camera[] cameras) { // This is where you can write custom rendering code. Customize this method to customize your SRP. } }
  5. В представлении «Проект» либо нажмите кнопку добавления (+), либо откройте контекстное меню и перейдите к пункту Создать, а затем выберите Визуализация > Пример ресурса конвейера рендеринга. Unity создает новый ассет Render Pipeline в представлении Project.

Создание настраиваемого объекта конвейера рендеринга и экземпляра конвейера рендеринга

По умолчанию конвейер рендеринга сохраняет ресурсырастущую библиотеку бесплатных и коммерческих ресурсов, созданных Unity и членами сообщества. . Предлагает широкий спектр ресурсов, от текстур, моделей и анимации до целых примеров проектов, руководств и расширений редактора. Подробнее
См. в Словарь
информацию о том, какой экземпляр Render Pipeline использовать. для рендеринга, а также материалы по умолчанию и шейдерыпрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь
для использования в редакторе. В сценарии RenderPipelineAsset вы можете расширить свой ресурс конвейера рендеринга, чтобы он хранил дополнительные данные, и вы можете иметь несколько разных ресурсов конвейера рендеринга с разными конфигурациями в своем проекте. Например, вы можете использовать Render Pipeline Asset для хранения данных конфигурации для каждого отдельного уровня оборудования. Конвейер рендеринга высокого разрешения (HDRP) и универсальный конвейер рендеринга (URP) включают примеры этого.

В следующем примере показано, как создать сценарий RenderPipelineAsset, определяющий объект Render Pipeline Asset с общедоступными данными, которые можно задать для каждого экземпляра с помощью ИнспекторОкно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать значения. Дополнительная информация
См. в Словарь
, а также экземпляр конвейера рендеринга, который получает актив конвейера рендеринга в его конструктор и использует данные из этого ресурса конвейера рендеринга.

  1. Создайте сценарий C# с именем ExampleRenderPipelineAsset.cs.

  2. Скопируйте и вставьте следующий код в новый скрипт:

    using UnityEngine; using UnityEngine.Rendering; // The CreateAssetMenu attribute lets you create instances of this class in the Unity Editor. [CreateAssetMenu(menuName = "Rendering/ExampleRenderPipelineAsset")] public class ExampleRenderPipelineAsset : RenderPipelineAsset { // This data can be defined in the Inspector for each Render Pipeline Asset public Color exampleColor; public string exampleString; // Unity calls this method before rendering the first frame. // If a setting on the Render Pipeline Asset changes, Unity destroys the current Render Pipeline Instance and calls this method again before rendering the next frame. protected override RenderPipeline CreatePipeline() { // Instantiate the Render Pipeline that this custom SRP uses for rendering, and pass a reference to this Render Pipeline Asset. // The Render Pipeline Instance can then access the configuration data defined above. return new ExampleRenderPipelineInstance(this); } }
  3. Создайте сценарий C# с именем ExampleRenderPipelineInstance.cs.

  4. Скопируйте и вставьте следующий код в новый скрипт:

    using UnityEngine; using UnityEngine.Rendering; public class ExampleRenderPipelineInstance : RenderPipeline { // Use this variable to a reference to the Render Pipeline Asset that was passed to the constructor private ExampleRenderPipelineAsset renderPipelineAsset; // The constructor has an instance of the ExampleRenderPipelineAsset class as its parameter. public ExampleRenderPipelineInstance(ExampleRenderPipelineAsset asset) { renderPipelineAsset = asset; } protected override void Render(ScriptableRenderContext context, Camera[] cameras) { // This is an example of using the data from the Render Pipeline Asset. Debug.Log(renderPipelineAsset.exampleString); // This is where you can write custom rendering code. Customize this method to customize your SRP. } }
  5. В представлении «Проект» либо нажмите кнопку добавления (+), либо откройте контекстное меню и перейдите к пункту Создать, а затем выберите Визуализация > Пример ресурса конвейера рендеринга. Unity создает новый ассет Render Pipeline в представлении Project.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3