Version: 2023.2
LanguageEnglish
  • C#

ScriptableRenderContext

struct in UnityEngine.Rendering

/

Implemented in:UnityEngine.CoreModule

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Defines state and drawing commands that custom render pipelines use.

When you define a custom RenderPipeline, you use a ScriptableRenderContext to schedule and submit state updates and drawing commands to the GPU.

A RenderPipeline.Render method implementation typically culls objects that the render pipeline doesn't need to render for every Camera (see CullingResults), and then makes a series of calls to ScriptableRenderContext.DrawRenderers intermixed with ScriptableRenderContext.ExecuteCommandBuffer calls. These calls set up global Shader properties, change render targets, dispatch compute shaders, and other rendering tasks. To actually execute the render loop, call ScriptableRenderContext.Submit.

Additional resources: RenderPipeline.

Public Methods

BeginRenderPassSchedules the beginning of a new render pass. Only one render pass can be active at any time.
BeginScopedRenderPassSchedules the beginning of a new render pass. If you call this a using-statement, Unity calls EndRenderPass automatically when exiting the using-block. Only one render pass can be active at any time.
BeginScopedSubPassSchedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.
BeginSubPassSchedules the beginning of a new sub pass within a render pass. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.
CreateGizmoRendererListCreates a new Gizmo RendererList.
CreateRendererListCreates a new renderers RendererList.
CreateShadowRendererListCreates a new shadow RendererList.
CreateSkyboxRendererListCreates a new skybox RendererList.
CreateUIOverlayRendererListCreates a new UIOverlay RendererList.
CreateWireOverlayRendererListCreates a new WireOverlay RendererList.
CullPerforms culling based on the ScriptableCullingParameters typically obtained from the Camera currently being rendered.
CullShadowCastersPerforms shadow casters culling for all the visible lights.
DrawGizmosSchedules the drawing of a subset of Gizmos (before or after post-processing) for the given Camera.
DrawUIOverlayDraw the UI overlay.
DrawWireOverlaySchedules the drawing of a wireframe overlay for a given Scene view Camera.
EndRenderPassSchedules the end of a currently active render pass.
EndSubPassSchedules the end of the currently active sub pass.
ExecuteCommandBufferSchedules the execution of a custom graphics Command Buffer.
ExecuteCommandBufferAsyncSchedules the execution of a Command Buffer on an async compute queue. The ComputeQueueType that you pass in determines the queue order.
HasInvokeOnRenderObjectCallbacksCheck if any objects in the scene have OnRenderObject callbacks registered.
InvokeOnRenderObjectCallbackSchedules an invocation of the OnRenderObject callback for MonoBehaviour scripts.
PrepareRendererListsAsyncStarts to process the provided RendererLists in the background.
QueryRendererListStatusQueries the status of a RendererList.
SetupCameraPropertiesSchedules the setup of Camera specific global Shader variables.
StartMultiEyeSchedules a fine-grained beginning of stereo rendering on the ScriptableRenderContext.
StereoEndRenderSchedule notification of completion of stereo rendering on a single frame.
StopMultiEyeSchedules a stop of stereo rendering on the ScriptableRenderContext.
SubmitSubmits all the scheduled commands to the rendering loop for execution.
SubmitForRenderPassValidationThis method submits all the scheduled commands to the rendering loop for validation. The validation checks whether render passes that were started with the BeginRenderPass call can execute the scheduled commands.

Static Methods

EmitGeometryForCameraEmits UI geometry for rendering for the specified camera.
EmitWorldGeometryForSceneViewEmits UI geometry into the Scene view for rendering.