public static void Blit (Texture source, RenderTexture dest);
public static void Blit (Texture source, RenderTexture dest, Material mat, int pass= -1);
public static void Blit (Texture source, Material mat, int pass= -1);


source Source texture.
dest Destination RenderTexture, or null to blit directly to screen.
mat Material to use. Material's shader could do some post-processing effect, for example.
pass If -1 (default), draws all passes in the material. Otherwise, draws given pass only.


Copies source texture into destination render texture with a shader.

This is mostly used for implementing image effects.

Blit sets dest as the render target, sets source _MainTex property on the material, and draws a full-screen quad.

Note that if you want to use depth or stencil buffer that is part of the source (Render)texture, you'll have to do equivalent of Blit functionality manually - i.e. Graphics.SetRenderTarget with destination color buffer and source depth buffer, setup orthographic projection (GL.LoadOrtho), setup material pass (Material.SetPass) and draw a quad (GL.Begin).

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 Blit or any other manual rendering.

See Also: Graphics.BlitMultiTap, image effects.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Texture aTexture; public RenderTexture rTex; void Start() { if (!aTexture || !rTex) Debug.LogError("A texture or a render texture are missing, assign them."); } void Update() { Graphics.Blit(aTexture, rTex); } }