public static void Blit (Texture source, RenderTexture dest);
public static void Blit (Texture source, RenderTexture dest, Material mat, int pass= -1);
public static void Blit (Texture source, Material mat, int pass= -1);
public static void Blit (Texture source, RenderTexture dest, Vector2 scale, Vector2 offset);

Parameters

source@param source Текстура-источник.
destThe destination RenderTexture. Set this to null to blit directly to screen. See description for more information.
mat@param mat Материал, используемый для копирования. Шейдер материала может реализовывать, например, эффект пост-обработки.
pass@param pass Если равно -1 (по умолчанию), то рисует все проходы материала. Иначе, рисует только указанный проход.
offsetOffset applied to the source texture coordinate.
scaleScale applied to the source texture coordinate.

Description

Копирует текстуру-источник в текстуру, предназначенную для рендеринга.

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); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961