Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

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);

public static void Blit(Texture source, RenderTexture dest, int sourceDepthSlice, int destDepthSlice);

public static void Blit(Texture source, Material mat, int pass, int destDepthSlice);

public static void Blit(Texture source, RenderTexture dest, Vector2 scale, Vector2 offset, int sourceDepthSlice, int destDepthSlice);

Параметры

source Исходная текстура.
dest Место назначения RenderTexture. Установите для этого параметра значение null, чтобы вывести его прямо на экран. См. описание для получения дополнительной информации.
mat Материал для использования. Например, шейдер материала может выполнять некоторый эффект постобработки..
pass Если -1 (по умолчанию), рисует все проходы в материале. В противном случае рисует только данный проход.
offset Смещение применяется к исходной координате текстуры.
scale Масштаб применяется к исходной координате текстуры.
sourceDepthSlice Исходный фрагмент массива текстур, из которого выполняется перенос.
destDepthSlice Целевой срез массива текстур для выполнения преобразования.

Описание

Копирует исходную текстуру в целевую визуализированную текстуру с помощью шейдера.

В основном это используется для реализации эффектов постобработки.

Blit устанавливает dest в качестве цели рендеринга, устанавливает source_MainTex на материале и рисует полноэкранный четырехугольник.

Чтобы перенести в резервный буфер экрана во встроенном конвейере рендеринга, необходимо убедиться, что dest равно null, и что свойство Camera.targetTexture файла Camera.main также равно null. Если dest имеет значение null, Unity пытается использовать Camera.main.targetTexture в качестве места назначения.

Чтобы перенести на экран резервный буфер в конвейере рендеринга на основе Scriptable Render Pipeline, необходимо вызвать Graphics.Blit в методе, который вы вызываете из RenderPipelineManager.endFrameRendering или RenderPipelineManager.endContextRendering обратные вызовы.

Если вы хотите использовать буфер глубины или шаблона, который является частью исходного (Render)текстуры, вам нужно вручную написать эквивалент функции Graphics.Blit, т. е. Graphics.SetRenderTarget с целевым цветовым буфером исходный буфер глубины, настройка ортогональной проекции (GL.LoadOrtho), настройка прохода материала (Material.SetPass) и нарисуйте четырехугольник (GL.Begin).

В линейном цветовом пространстве важно правильно установить состояние преобразования цвета sRGB<->Linear. В зависимости от того, что было обработано ранее, текущее состояние может отличаться от ожидаемого. Вы должны установить GL.sRGBWrite по мере необходимости, прежде чем выполнять Blit или любой другой ручной рендеринг.

Вызов Blit с параметрами source и dest, для которых задана одна и та же RenderTexture, может привести к неопределенному поведению. Лучшим подходом является либо использование Пользовательских текстур визуализации с двойной буферизацией, либо использование двух текстур визуализации и чередование между ними для реализации двойной буферизации вручную.

Graphics.Blit изменяет RenderTexture.active. Отслеживайте ранее активную RenderTexture, если вам нужно использовать ее после вызова Graphics.Blit.

Смотрите так же: 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); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3