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

Планирование и выполнение команд рендеринга в Scriptable Render Pipeline

На этой странице объясняется, как запланировать и выполнить отрисовкупроцесс отрисовки графики на экран (или текстуру отрисовки). . По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
См. в Словарь
команды в Scriptable Render Pipeline (SRP), используя CommandBuffers или выполняя прямые вызовы API к ScriptableRenderContext. Информация на этой странице применима к универсальному конвейеру рендеринга (URP), конвейеру рендеринга высокого разрешения (HDRP) и пользовательским конвейерам рендеринга, основанным на SRP.

В SRP вы используете скрипты C#фрагмент кода, который позволяет создавать собственные компоненты, запускать игровые события, изменяйте свойства компонента с течением времени и реагируйте на пользовательский ввод любым удобным для вас способом. Подробнее
См. Словарь
для настройки и планирования команд рендеринга. Затем вы указываете низкоуровневой графической архитектуре Unity выполнить их, которая отправляет инструкции графическому API.

Основной способ сделать это — сделать вызовы API к ScriptableRenderContext, но вы также можете немедленно выполнить CommandBuffers.

Использование API ScriptableRenderContext

В SRP класс ScriptableRenderContext действует как интерфейс между кодом конвейера рендеринга C# и низкоуровневым графическим кодом Unity. Рендеринг SRP работает с использованием отложенного выполнения; вы используете ScriptableRenderContext для создания списка команд рендеринга, а затем указываете Unity выполнить их. Затем низкоуровневая графическая архитектура Unity отправляет инструкции графическому API.

Чтобы запланировать команды рендеринга, вы можете:

Чтобы сообщить Unity о выполнении запланированных команд, вызовите ScriptableRenderContext.Submit. Обратите внимание, что не имеет значения, использовали ли вы CommandBuffer для планирования команды или запланировали команду, вызвав API; Unity одинаково планирует все команды рендеринга в ScriptableRenderContext и не выполняет ни одну из них, пока вы не вызовете Submit().

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

using UnityEngine; using UnityEngine.Rendering; public class ExampleRenderPipeline : RenderPipeline { public ExampleRenderPipeline() { } protected override void Render(ScriptableRenderContext context, Camera[] cameras) { // Create and schedule a command to clear the current render target var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, true, Color.red); context.ExecuteCommandBuffer(cmd); cmd.Release(); // Tell the Scriptable Render Context to tell the graphics API to perform the scheduled commands context.Submit(); } }

Немедленное выполнение CommandBuffers

Вы можете немедленно выполнить CommandBuffers без использования ScriptableRenderContext, вызвав Graphics.ExecuteCommandBuffer. Вызовы этого API выполняются за пределами конвейера рендеринга.

Дополнительная информация

Дополнительную информацию о командах, которые можно запланировать с помощью CommandBuffers, см. в документации по API CommandBuffers.

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