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 failedFor 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 Your name Your email Suggestion* Declarationpublic static void
Blit(
Texture source,
Material mat, int
pass= -1);
Declarationpublic static void
Blit(
Texture source,
Material mat, int
pass, int
destDepthSlice);
Declarationpublic static void
Blit(
Texture source,
RenderTexture dest, int
sourceDepthSlice, int
destDepthSlice);
Parameters Parameter Description source The source texture. dest The destination RenderTexture or GraphicsTexture. mat The material to use. If you don't providemat
, 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 target.
This method copies pixel data from a texture on the GPU to a render texture or graphics texture on the GPU. This is one of the fastest ways to copy a texture.
When you use Graphics.Blit
, Unity does the following:
dest
texture. (See RenderTexture.active and GraphicsTexture.active.)source
to the mat
material as the _MainTex
property.source
texture to the dest
texture.If you provide a mat
material that doesn't have a _MainTex
property, Blit
doesn't use source
. If you provide a GraphicsTexture as dest
, it must have GraphicsTextureDescriptorFlags.RenderTarget enabled in its GraphicsTextureDescriptor.flags.
You can use Graphics.Blit
to create post-processing effects, by setting mat
to a material with a custom shader.
Blit
changes RenderTexture.active and GraphicsTexture.active. Store the active render target before you use Blit
if you need to use it afterwards.
Avoid setting source
and dest
to the same 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:
dest
to null
. Unity now uses Camera.main.targetTexture
as the destination texture.null
.To blit to the screen in the Universal Render Pipeline (URP) or the High Definition Render Pipeline (HDRP), you must call Graphics.Blit or CommandBuffer.Blit inside a method that you call from the RenderPipelineManager.endContextRendering callback.
If you want to use a depth or stencil buffer that is part of the source
(Render)texture, or blit to a subregion of a texture, you have to manually write an equivalent of the Graphics.Blit function - 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).
Additional resources: Graphics.BlitMultiTap, Post-processing effects.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4