Version: 2017.3 (switch to 2017.4)
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Graphics.Blit

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 static method Blit(source: Texture, dest: RenderTexture): void;
public static void Blit(Texture source, RenderTexture dest);
public static method Blit(source: Texture, dest: RenderTexture, mat: Material, pass: int = -1): void;
public static void Blit(Texture source, RenderTexture dest, Material mat, int pass = -1);
public static method Blit(source: Texture, mat: Material, pass: int = -1): void;
public static void Blit(Texture source, Material mat, int pass = -1);
public static method Blit(source: Texture, dest: RenderTexture, scale: Vector2, offset: Vector2): void;
public static void Blit(Texture source, RenderTexture dest, Vector2 scale, Vector2 offset);

Parameters

source Source texture.
dest The destination RenderTexture. Set this to null to blit directly to screen. See description for more information.
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.
offset Offset applied to the source texture coordinate.
scale Scale applied to the source texture coordinate.

Description

Copies source texture into destination render texture with a shader.

This is mostly used for implementing post-processing effects.

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

If dest is null, the screen backbuffer is used as the blit destination, except if the main camera is currently set to render to a RenderTexture (that is Camera.main has a non-null targetTexture property). In that case the blit uses the render target of the main camera as destination. In order to ensure that the blit is actually done to the screen backbuffer, make sure to set /Camera.main.targetTexture/ to null before calling Blit.

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, Post-processing effects.

 // Copies aTexture to rTex and displays it in all cameras.

var aTexture : Texture; var rTex : RenderTexture;

function Start() { if(!aTexture || !rTex) Debug.LogError("A texture or a render texture are missing, assign them."); }

function Update () { Graphics.Blit (aTexture, rTex); }
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); } }

Did you find this page useful? Please give it a rating: