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

Graphics.SetRandomWriteTarget

Объявление

public static void SetRandomWriteTarget(int index, ComputeBuffer uav, bool preserveCounterValue = false);

public static void SetRandomWriteTarget(int index, GraphicsBuffer uav, bool preserveCounterValue = false);

public static void SetRandomWriteTarget(int index, RenderTexture uav);

Параметры

index Индекс случайной цели записи в шейдере.
uav Буфер или текстура для установки в качестве цели записи.
preserveCounterValue Оставлять ли значение счетчика добавления/использования неизменным.

Описание

Установить случайную цель записи для пиксельных шейдеров уровня Shader Model 4.5.

Пиксельные шейдеры уровня Shader Model 4.5 и выше могут записывать в произвольные местоположения некоторых текстур и буферов, что называется "представлениями неупорядоченного доступа" (UAV) в Использование DX11GL3Features. . Эти цели «случайной записи» устанавливаются аналогично тому, как устанавливаются несколько целей рендеринга. Вы можете использовать либо RenderTexture с установленным флагом enableRandomWrite, либо ComputeBuffer. в качестве цели.

Индексация БПЛА немного различается на разных платформах. В DX11 первым действительным индексом БПЛА является количество активных целей рендеринга. Таким образом, в общем случае с одной целью рендеринга индексация БПЛА будет начинаться с 1. Платформы, использующие автоматически переведенные шейдеры HLSL, будут соответствовать этому поведению. Однако с написанными от руки шейдерами GLSL индексы будут соответствовать привязкам. На PS4 индексация всегда начинается с 1, чтобы соответствовать наиболее распространенному случаю.

При настройке ComputeBuffer параметр preserveCounterValue указывает, следует ли оставить значение счетчика без изменений или сбросить его до 0 ( поведение по умолчанию).

Цели остаются заданными до тех пор, пока вы не очистите их вручную с помощью ClearRandomWriteTargets. Лучше всего вызывать ClearRandomWriteTargets после завершения рендеринга. Если этого не сделать, могут возникнуть проблемы с рендерингом, а некоторые встроенные этапы рендеринга Unity могут завершиться сбоем.

Смотрите так же: RenderTexture.enableRandomWrite, ComputeBuffer, ComputeBuffer.SetCounterValue, UsingDX11GL3Features.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3