Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

RenderPipeline.Render

Declaration

protected void Render(Rendering.ScriptableRenderContext context, List<Camera> cameras);

Параметры

Параметр Описание
контекст Контекст, используемый для отображения камер.
камеры Список камер для рендеринга.

Описание

Метод точки входа, который определяет пользовательское отображение для этого RenderPipeline.

Этот метод является точкой входа в Scriptable Render Pipeline (SRP). Эта функциональность не совместима с Built-in Render Pipeline.

Unity вызывают этот метод автоматически. В автономном приложении Unity вызывает этот метод один раз за кадр для отображения основного представления и один раз за кадр для каждого ручного вызова Camera.Render. В Unity Editor Unity вызывает этот метод один раз за кадр для каждого видимого представления Scene или Game, один раз за кадр, если видим предварительный просмотр камеры Scene, и один раз за кадр для каждого ручного вызова Camera.Render.

Если вы используете Universal Render Pipeline (URP) или High Definition Render Pipeline (HDRP), вы можете использовать делегаты RenderPipelineManager.beginContextRendering, RenderPipelineManager.beginCameraRendering, RenderPipelineManager.endCameraRendering и RenderPipelineManager.endContextRendering для вызова вашего пользовательского кода в определенных точках во время выполнения этого метода.

Если вы пишете пользовательский SRP, вы можете либо добавить код непосредственно в тело этого метода, либо вызвать делегаты самостоятельно с помощью RenderPipeline.BeginContextRendering, RenderPipeline.BeginCameraRendering, RenderPipeline.EndCameraRendering и RenderPipeline.EndContextRendering.

В следующем примере кода показано, как реализовать этот метод в пользовательском SRP:

using UnityEngine;
using UnityEngine.Rendering;
using System.Collections.Generic;

public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { }

protected override void Render(ScriptableRenderContext context, List<Camera> cameras) { // This is where you can write custom rendering code. Customize this method to customize your SRP. // 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 ScriptableRenderContext to tell the graphics API to perform the scheduled commands context.Submit(); }

// Older version of the Render function that can generate garbage, needed for backwards compatibility protected override void Render(ScriptableRenderContext context, Camera[] cameras) { } }

Дополнительные ресурсы: Unity Руководство: Scriptable Render Pipeline, RenderPipelineManager.beginContextRendering, RenderPipelineManager.beginCameraRendering, RenderPipelineManager.endContextRendering, RenderPipelineManager.endFrameRendering.

Declaration

Obsolete protected void Render(Rendering.ScriptableRenderContext context, Camera[] cameras);

Описание

Метод точки входа, который определяет пользовательское отображение для этого RenderPipeline.

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

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

using UnityEngine;
using UnityEngine.Rendering;

public class ExampleRenderPipeline : RenderPipeline { public ExampleRenderPipeline() { }

protected override void Render(ScriptableRenderContext context, Camera[] cameras) { // This is where you can write custom rendering code. Customize this method to customize your SRP. // 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 ScriptableRenderContext to tell the graphics API to perform the scheduled commands context.Submit(); } }