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.
CloseFor 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.
Closesource | 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. |
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.
Note that a call to Blit with source
and dest
set to the same RenderTexture may result in undefined behaviour. A better approach is to either use Custom Render Textures with double buffering, or use two RenderTextures and alternate between them to implement double buffering manually.
See Also: Graphics.BlitMultiTap, Post-processing effects.
using UnityEngine;
public class Example : MonoBehaviour { // Copies aTexture to rTex and displays it in all cameras.
Texture aTexture; 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:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!