Описание
Буфер данных графического процессора, в основном для использования с вычислительными шейдерами.
ПрограммамComputeShader часто требуются произвольные данные для чтения и записи в буферы памяти. Класс ComputeBuffer как раз для этого - вы можете создавать и заполнять их из кода скрипта, и использовать их в вычислительных шейдерах или обычных шейдерах.
Вычислительные буферы всегда поддерживаются вычислительными шейдерами. Поддержка вычислительных шейдеров может быть запрошена во время выполнения с помощью SystemInfo.supportsComputeShaders. Дополнительную информацию о платформах, поддерживающих вычислительные шейдеры, см. на странице руководства Вычислительные шейдеры. В обычных графических шейдерах для поддержки вычислительного буфера требуется как минимум модель шейдера 4.5.
Для ComputeBuffer, который использует счетчик, платформы Metal и Vulkan не имеют встроенных счетчиков и используют отдельные небольшие буферы, которые действуют как счетчики внутри. Эти небольшие буферы привязываются отдельно от ComputeBuffer и учитываются в соответствии с пределом возможных связанных буферов (31 для Metal, исходя из устройства для Vulkan).
На стороне шейдера ComputeBuffers со значением по умолчанию ComputeBufferType сопоставляются с StructuredBuffer
и RWStructuredBuffer
в HLSL.
Смотрите так же: класс ComputeShader, Shader.SetGlobalBuffer, Material.SetBuffer, Compute Shaders.
Свойства
count | Количество элементов в буфере (только для чтения). |
name | Метка отладки для ComputeBuffer. Это имя отображается в инструментах профилирования и отладки фреймов, где это поддерживается. |
stride | Размер одного элемента в буфере (только для чтения). |
Конструкторы
ComputeBuffer | Создаёт вычислительный буфер. |
Публичные Методы
BeginWrite | Начинает операцию записи в буфер |
EndWrite | Завершает операцию записи в буфер |
GetData | Чтение значений данных из буфера в массив. Массив может использовать только непреобразуемые типы. |
GetNativeBufferPtr | Получает собственный (основной графический API) указатель на буфер. |
IsValid | Возвращает значение true, если этот вычислительный буфер действителен, и значение false в противном случае. |
Release | Освобождение вычислительного буфера. |
SetCounterValue | Устанавливает значение счетчика буфера добавления/использования. |
SetData | Устанавливает буфер со значениями из массива. |
Статические Методы
CopyCount | Копирует значение счетчика буфера добавления/потребления в другой буфер. |