source | ソーステクスチャ (コピー元のテクスチャ) |
dest | The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. |
mat | 使用するマテリアル。たとえば、マテリアルのシェーダーはいくつかのエフェクトを後処理できます。 |
pass | -1 (デフォルト) の場合、マテリアルのすべてのパスを描画します。そうでなければ、指定されたパスだけを描画します。 |
offset | Offset applied to the source texture coordinate. |
scale | Scale applied to the source texture coordinate. |
sourceDepthSlice | The texture array source slice to perform the blit from. |
destDepthSlice | The texture array destination slice to perform the blit to. |
元のテクスチャをシェーダーでレンダリングするテクスチャへコピーします。
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 you are using the Built-in Render Pipeline, when dest
is null
, Unity uses the screen backbuffer as the blit destination. However, if the main camera is set to render to a RenderTexture (that is, if Camera.main has a non-null targetTexture
property), the blit uses the render target of the main camera as destination. To ensure that the blit actually writes to the screen backbuffer, make sure to set /Camera.main.targetTexture/ to null
before calling Blit.
If you are using a Scriptable Render Pipeline (like HDRP or Universal RP), to blit to the screen backbuffer using Graphics.Blit, you have to call Graphics.Blit from inside a method that you register as the RenderPipelineManager.endFrameRendering callback.
Note that if you want to use a depth or stencil buffer that is part of the source
(Render)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).
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.
Graphics.Blit changes RenderTexture.active. Keep track of the previously active RenderTexture if you need to use it after calling Graphics.Blit.
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:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.