Version: 2019.2
LanguageEnglish
  • C#

CommandBuffer.SetRenderTarget

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

public void SetRenderTarget(Rendering.RenderTargetIdentifier rt);
public void SetRenderTarget(Rendering.RenderTargetIdentifier rt, Rendering.RenderBufferLoadAction colorLoadAction, Rendering.RenderBufferStoreAction colorStoreAction, Rendering.RenderBufferLoadAction depthLoadAction, Rendering.RenderBufferStoreAction depthStoreAction);
public void SetRenderTarget(Rendering.RenderTargetIdentifier rt, int mipLevel);
public void SetRenderTarget(Rendering.RenderTargetIdentifier rt, int mipLevel, CubemapFace cubemapFace);
public void SetRenderTarget(Rendering.RenderTargetIdentifier rt, int mipLevel, CubemapFace cubemapFace, int depthSlice);
public void SetRenderTarget(Rendering.RenderTargetIdentifier color, Rendering.RenderTargetIdentifier depth);
public void SetRenderTarget(Rendering.RenderTargetIdentifier color, Rendering.RenderTargetIdentifier depth, int mipLevel);
public void SetRenderTarget(Rendering.RenderTargetIdentifier color, Rendering.RenderTargetIdentifier depth, int mipLevel, CubemapFace cubemapFace);
public void SetRenderTarget(Rendering.RenderTargetIdentifier color, Rendering.RenderTargetIdentifier depth, int mipLevel, CubemapFace cubemapFace, int depthSlice);
public void SetRenderTarget(RenderTargetIdentifier[] colors, Rendering.RenderTargetIdentifier depth);
public void SetRenderTarget(Rendering.RenderTargetBinding binding);
public void SetRenderTarget(Rendering.RenderTargetBinding binding, int mipLevel, CubemapFace cubemapFace, int depthSlice);
public void SetRenderTarget(RenderTargetIdentifier[] colors, Rendering.RenderTargetIdentifier depth, int mipLevel, CubemapFace cubemapFace, int depthSlice);

Parameters

rtRender target to set for both color & depth buffers.
colorRender target to set as a color buffer.
colorsRender targets to set as color buffers (MRT).
depthRender target to set as a depth buffer.
mipLevelThe mip level of the render target to render into.
cubemapFaceThe cubemap face of a cubemap render target to render into.
depthSliceSlice of a 3D or array render target to set.
loadActionLoad action that is used for color and depth/stencil buffers.
storeActionStore action that is used for color and depth/stencil buffers.
colorLoadActionLoad action that is used for the color buffer.
colorStoreActionStore action that is used for the color buffer.
depthLoadActionLoad action that is used for the depth/stencil buffer.
depthStoreActionStore action that is used for the depth/stencil buffer.

Description

Add a "set active render target" command.

Render texture to use can be indicated in several ways: a RenderTexture object, a temporary render texture created with GetTemporaryRT, or one of built-in temporary textures (BuiltinRenderTextureType). All that is expressed by a RenderTargetIdentifier struct, which has implicit conversion operators to save on typing.

You do not explicitly need to preserve active render targets during command buffer execution (current render targets are saved & restored afterwards).

Variations of this method are available which take extra arguments such as mipLevel (int) and cubemapFace to enable rendering into a specific mipmap level of a RenderTexture, or specific cubemap face of a cubemap RenderTexture. Overloads setting a single RenderTarget and without explicit mipLevel, cubemapFace and depthSlice respect the mipLevel, cubemapFace and depthSlice values that were specified when creating the RenderTargetIdentifier. Overloads setting multiple render targets will set mipLevel, cubemapFace, and depthSlice to 0, Unknown, and 0 unless otherwise specified.

Note that in Linear color space, it is important to have the correct sRGB<->Linear color conversion state set. Depending on what was rendered previously, the current state might not be the one you expect. You should consider setting GL.sRGBWrite as you need it before doing SetRenderTarget or any other manual rendering.

Rendering.RenderTargetIdentifier.Clear is currently not supported. A subsequent call to ClearRenderTarget has the same effect and is optimized on graphics APIs that support clear load actions.

See Also: GetTemporaryRT, ClearRenderTarget, Blit, RenderTargetIdentifier.