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

Graphics.DrawProceduralIndirect

Объявление

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

Параметры

material Материал для использования.
bounds Ограничивающий объем, окружающий экземпляры, которые вы собираетесь рисовать.
topology Топология процедурной геометрии.
camera Если null (по умолчанию), сетка будет отрисовываться во всех камерах. В противном случае он будет отображаться только в данной камере.
bufferWithArgs Буфер с аргументами отрисовки.
argsOffset Байтовое смещение, где в буфере находятся аргументы отрисовки.
properties Дополнительные свойства материала, применяемые к материалу непосредственно перед отрисовкой этой сетки. См. MaterialPropertyBlock.
castShadows Определяет, может ли сетка отбрасывать тени.
receiveShadows Определяет, может ли сетка получать тени.
layer Слой для использования.

Описание

Рисует процедурную геометрию на GPU.

DrawProceduralIndirect выполняет вызов отрисовки на графическом процессоре без каких-либо буферов вершин или индексов. Объем геометрии для рисования считывается из ComputeBuffer. Типичный пример использования — генерация произвольного объема данных из ComputeShader и последующая их визуализация без необходимости обратного считывания в ЦП.

В основном это полезно на оборудовании уровня Shader Model 4.5, где шейдеры могут считывать произвольные данные из ComputeBuffer буферы.

Буфер с аргументами, bufferWithArgs, должен содержать четыре целых числа при заданном смещении argsOffset: количество вершин на экземпляр, экземпляр количество, начальное местоположение вершины и начальное местоположение экземпляра. Это соответствует Direct3D11 DrawInstancedIndirect и эквивалентным функциям в других графических API. В версиях OpenGL до 4.2 и во всех версиях OpenGL ES, поддерживающих косвенную отрисовку, последний аргумент зарезервирован и поэтому должен быть равен нулю.

Подобные функции есть и в CommandBuffers, см. CommandBuffer.DrawProceduralIndirect.

Смотрите так же: Graphics.DrawProcedural, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.


Объявление

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, GraphicsBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, ComputeBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

Параметры

material Материал для использования.
bounds Ограничивающий объем, окружающий экземпляры, которые вы собираетесь рисовать.
topology Топология процедурной геометрии.
indexBuffer Индексный буфер, используемый для отправки вершин в GPU..
camera Если null (по умолчанию), сетка будет отрисовываться во всех камерах. В противном случае он будет отображаться только в данной камере.
bufferWithArgs Буфер с аргументами отрисовки.
argsOffset Байтовое смещение, где в буфере находятся аргументы отрисовки.
properties Дополнительные свойства материала, применяемые к материалу непосредственно перед отрисовкой этой сетки. См. MaterialPropertyBlock.
castShadows Определяет, может ли сетка отбрасывать тени.
receiveShadows Определяет, может ли сетка получать тени.
layer Слой для использования.

Описание

Рисует процедурную геометрию на GPU.

DrawProceduralIndirect выполняет вызов отрисовки на графическом процессоре без буфера вершин. Объем геометрии для рисования считывается из ComputeBuffer. Типичный пример использования — генерация произвольного объема данных из ComputeShader и последующая их визуализация без необходимости обратного считывания в ЦП.

В основном это полезно на оборудовании уровня Shader Model 4.5, где шейдеры могут считывать произвольные данные из ComputeBuffer буферы.

Буфер с аргументами, bufferWithArgs, должен содержать пять целых чисел с заданным смещением argsOffset: число индексов на экземпляр, экземпляр количество, начальное положение индекса, базовое положение вершины и начальное положение экземпляра. Это соответствует Direct3D11 DrawIndexedInstancedIndirect и эквивалентным функциям в других графических API. В версиях OpenGL до 4.2 и во всех версиях OpenGL ES, поддерживающих косвенную отрисовку, последний аргумент зарезервирован и поэтому должен быть равен нулю.

Подобные функции есть и в CommandBuffers, см. CommandBuffer.DrawProceduralIndirect.

Смотрите так же: Graphics.DrawProcedural, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.

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