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. If specified, it will use the specified mipLevel, cubemapFace, and depthSlice for all targets.
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.
Additional resources: GetTemporaryRT, ClearRenderTarget, Blit, RenderTargetIdentifier.