На этой странице объясняется, как запланировать и выполнить отрисовкупроцесс отрисовки графики на экран (или текстуру отрисовки). . По умолчанию основная камера в 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.
Чтобы запланировать команды рендеринга, вы можете:
- Передайте CommandBuffers в ScriptableRenderContext, используя ScriptableRenderContext.ExecuteCommandBufferа>
- Прямые вызовы API к контексту рендеринга с поддержкой сценариев, например ScriptableRenderContext.Cull или ScriptableRenderContext.DrawRenderers
Чтобы сообщить 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.