Version: 2022.3
Language : English
Rendering order in the Built-in Render Pipeline
Hardware requirements for the Built-in Render Pipeline

Extending the Built-in Render Pipeline with CommandBuffers

This page contains information on using CommandBuffers in the Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
. For information on using CommandBuffers in render pipelines based on the Scriptable Rendering Pipeline, see Scheduling and executing rendering commands in the Scriptable Rendering Pipeline.

CommandBuffer fundamentals

A CommandBuffer holds a list of rendering commands (such as setting the render target, or drawing a given mesh). You can instruct Unity to schedule and execute those commands at various points in the Built-in Render Pipeline, which allows you to customize and extend Unity’s rendering functionality.

Blurry refraction, using Command Buffers.
Blurry refraction, using Command Buffers.

You can execute CommandBuffers immediately using the Graphics.ExecuteCommandBuffer API, or you can schedule them so that they occur at a given point in the render pipeline. To schedule them, use the Camera.AddCommandBuffer API with the CameraEvent enum, and the Light.AddCommandBuffer API with the LightEvent enum. To see when Unity executes CommandBuffers that you schedule in this way, see CameraEvent and LightEvent order of execution.

For a full list of the commands that you can execute using CommandBuffers, see the CommandBuffer API documentation. Note that some commands are supported only on certain hardware; for example, the commands relating to ray tracingThe process of generating an image by tracing out rays from the Camera through each pixel and recording the color contribution at the hit point. This is an alternative to rasterization. raytracing
See in Glossary
are supported only in DX12.

Command Buffer examples

Decals, using Command Buffers.
Decals, using Command Buffers.

The Unity blog post Extending Unity 5 rendering pipeline: Command Buffers introduces CommandBuffers in the Built-in Render Pipeline. It describes how to use CommandBuffers to achieve several different effects, and contains a sample project and example code. The project was created for an older version of Unity, but the principles are the same.

CameraEvent and LightEvent event order of execution

CameraEvent

The order of execution for CameraEvents depends on the rendering pathThe technique that a render pipeline uses to render graphics. Choosing a different rendering path affects how lighting and shading are calculated. Some rendering paths are more suited to different platforms and hardware than others. rendering pathThe technique that a render pipeline uses to render graphics. Choosing a different rendering path affects how lighting and shading are calculated. Some rendering paths are more suited to different platforms and hardware than others. More info
See in Glossary
that your Project uses.

Deferred rendering path

  • BeforeGBuffer
  • Unity renders opaque geometry
  • AfterGBuffer
  • Unity resolves depth.
  • BeforeReflections
  • Unity renders default reflections, and Reflection ProbeA rendering component that captures a spherical view of its surroundings in all directions, rather like a camera. The captured image is then stored as a Cubemap that can be used by objects with reflective materials. More info
    See in Glossary
    reflections.
  • AfterReflections
  • Unity copies reflections to the Emissive channel of the G-buffer.
  • BeforeLighting
  • Unity renders shadows. See LightEvent order of execution.
  • AfterLighting
  • BeforeFinalPass
  • Unity processes the final pass.
  • AfterFinalPass
  • BeforeForwardOpaque (only called if there is opaque geometry that cannot be rendered using deferred)
  • Unity renders opaque geometry that cannot be rendered with deferred rendering.
  • AfterForwardOpaque (only called if there is opaque geometry that cannot be rendered using deferred)
  • BeforeSkybox
  • Unity renders the skyboxA special type of Material used to represent skies. Usually six-sided. More info
    See in Glossary
    .
  • AfterSkybox
  • Unity renders halos.
  • BeforeImageEffectsOpaque
  • Unity applies opaque-only post-processingA process that improves product visuals by applying filters and effects before the image appears on screen. You can use post-processing effects to simulate physical camera and film properties, for example Bloom and Depth of Field. More info post processing, postprocessing, postprocess
    See in Glossary
    effects.
  • AfterImageEffectsOpaque
  • BeforeForwardAlpha
  • Unity renders transparent geometry, and UI(User Interface) Allows a user to interact with your application. Unity currently supports three UI systems. More info
    See in Glossary
    Canvases with a Rendering Mode of Screen Space - CameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. Glossary Canvases with a Rendering Mode of Screen Space - CameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
    See in Glossary
    .
  • AfterForwardAlpha
  • BeforeHaloAndLensFlares
  • Unity renders lens flaresA component that simulates the effect of lights refracting inside a camera lens. Use a Lens Flare to represent very bright lights or add atmosphere to your scene. More info
    See in Glossary
    .
  • AfterHaloAndLensFlares
  • BeforeImageEffects
  • Unity applies post-processing effects.
  • AfterImageEffects
  • AfterEverything
  • Unity renders UI Canvases with a Rendering Mode that is not Screen Space - Camera.

Forward rendering path

LightEvent order of execution

During the “render shadows” stage above, for each shadow-casting Light, Unity performs these steps:

Rendering order in the Built-in Render Pipeline
Hardware requirements for the Built-in Render Pipeline