Unity - Scripting API: Graphics.Blit
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.
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.
Declaration
public static void Blit(Texture source, RenderTexture dest, int sourceDepthSlice, int destDepthSlice);
Parameters
| source | The source texture. |
| dest | The destination RenderTexture. |
| mat | The material to use. If you don't provide mat, Unity uses a default material. |
| pass | If the value is -1, Unity draws all the passes in mat. Otherwise, Unity draws only the pass you set pass to. The default value is -1. |
| scale | The scale to apply. |
| offset | The offset to apply. |
| sourceDepthSlice | The element in the source texture to copy from, for example the texture in a texture array. You can't use sourceDepthSlice to specify a face in a Cubemap. |
| destDepthSlice | The element in the destination texture to copy from, for example the texture in a texture array. You can't use destDepthSlice to specify a face in a Cubemap. |
Description
Uses a shader to copy the pixel data from a texture into a render texture.
This method copies pixel data from a texture on the GPU to a render texture on the GPU. This is one of the fastest ways to copy a texture.
When you use Graphics.Blit, Unity does the following:
- Sets the active render texture to the
desttexture. - Passes
sourceto thematmaterial as the_MainTexproperty. - Uses the material's shader to draw a full-screen surface from the
sourcetexture to thedesttexture.
If you provide a mat material that doesn't have a _MainTex property, Blit doesn't use source.
You can use Graphics.Blit to create post-processing effects, by setting mat to a material with a custom shader.
Blit changes RenderTexture.active. Store the active render texture before you use Blit if you need to use it afterwards.
Avoid setting source and dest to the same render texture, as this may cause undefined behaviour. Use Custom Render Textures with double buffering instead, or use two render textures and alternate between them to implement double buffering manually.
In linear color space, set GL.sRGBWrite before using Blit, to make sure the sRGB-to-linear color conversion is what you expect.
To blit to the screen in the Built-in Render Pipeline, follow these steps:
- Set
desttonull. Unity now usesCamera.main.targetTextureas the destination texture. - Set the Camera.targetTexture property of Camera.main to
null.