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.