Unity 6.3
0 онлайн 87 гостей 3 в системе
Вход

Graphics.SetRandomWriteTarget

Declaration

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

Параметры

Параметр Описание
индекс Индекс объекта случайной записи.
БПЛА Буфер или текстура для установки в качестве цели записи.
preserveCounterValue Оставить ли значение счетчика добавления/потребления без изменений.

Описание

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

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

К значению параметра index, переданному в SetRandomWriteTarget, добавьте количество используемых целей визуализации. Полученное значение может не совпадать с фиксированным индексом регистра, заданным в шейдерах, поскольку индексация UAV различается на разных платформах. Подробные сведения об этих различиях см. в документации соответствующей платформы. В DX11 первым допустимым индексом UAV является количество активных целей визуализации, поэтому в распространённом случае с одной целью индексация UAV начинается с 1. Платформы с автоматически преобразуемыми шейдерами HLSL ведут себя так же, однако в написанных вручную шейдерах GLSL индексы соответствуют привязкам.

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

Цели остаются заданными, пока вы вручную не очистите их с помощью ClearRandomWriteTargets. Рекомендуется вызывать ClearRandomWriteTargets после завершения визуализации. В противном случае возможны ошибки визуализации и аварийное завершение некоторых встроенных проходов визуализации Unity.

Дополнительные ресурсы: RenderTexture.enableRandomWrite, ComputeBuffer, ComputeBuffer.SetCounterValue, UsingDX11GL3Features.