Объявление
public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset);
public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs);
public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);
public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset);
public void DrawProceduralIndirect(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs);
Параметры
matrix | Используемая матрица преобразования. |
material | Материал для использования. |
shaderPass | Какой проход шейдера использовать (или -1 для всех проходов). |
topology | Топология процедурной геометрии. |
properties | Дополнительные свойства материала для применения непосредственно перед визуализацией. См. MaterialPropertyBlock. |
bufferWithArgs | Буфер с аргументами отрисовки. |
argsOffset | Байтовое смещение, где в буфере находятся аргументы отрисовки. |
Описание
Добавляет команду "draw procedural geometry".
При выполнении командного буфера выполняется вызов отрисовки на графическом процессоре без каких-либо вершинных или индексных буферов. Объем геометрии для рисования считывается из ComputeBuffer. Типичный пример использования — генерация произвольного объема данных из ComputeShader и последующая их визуализация без необходимости обратного считывания в ЦП.
Это полезно только на оборудовании уровня Shader Model 4.5, где шейдеры могут считывать произвольные данные из ComputeBuffer буферы.
Буфер с аргументами, bufferWithArgs
, должен содержать четыре целых числа с заданным смещением argsOffset
:
количество вершин на экземпляр, количество экземпляров, начальное местоположение вершины и начальное местоположение экземпляра.
Это соответствует Direct3D11 DrawInstancedIndirect и эквивалентным функциям в других графических API. В версиях OpenGL до 4.2 и во всех версиях OpenGL ES, поддерживающих косвенную отрисовку, последний аргумент зарезервирован и поэтому должен быть равен нулю.
В вершинном шейдере обычно используются входные переменные SV_VertexID и SV_InstanceID для извлечения данных из некоторых буферов.
Смотрите так же: DrawProcedural, MaterialPropertyBlock, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.
Объявление
public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset);
public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs);
public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset, MaterialPropertyBlock properties);
public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs, int argsOffset);
public void DrawProceduralIndirect(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, GraphicsBuffer bufferWithArgs);
Параметры
indexBuffer | Индексный буфер, используемый для передачи вершин графическому процессору. |
matrix | Используемая матрица преобразования. |
material | Материал для использования. |
shaderPass | Какой проход шейдера использовать (или -1 для всех проходов). |
topology | Топология процедурной геометрии. |
bufferWithArgs | Буфер с аргументами отрисовки. |
argsOffset | Байтовое смещение, где в буфере находятся аргументы отрисовки. |
properties | Дополнительные свойства материала для применения непосредственно перед визуализацией. См. MaterialPropertyBlock. |
Описание
Добавляет команду "draw procedural geometry".
При выполнении командного буфера выполняется вызов отрисовки на графическом процессоре без буфера вершин. Объем геометрии для рисования считывается из ComputeBuffer. Типичный пример использования — генерация произвольного объема данных из ComputeShader и последующая их визуализация без необходимости обратного считывания в ЦП.
Это полезно только на оборудовании уровня Shader Model 4.5, где шейдеры могут считывать произвольные данные из ComputeBuffer буферы.
Буфер с аргументами, bufferWithArgs
, должен содержать пять целых чисел с заданным смещением argsOffset
:
количество индексов на экземпляр, количество экземпляров, начальное местоположение индекса, базовое местоположение вершины и начальное местоположение экземпляра.
Это соответствует Direct3D11 DrawIndexedInstancedIndirect и эквивалентным функциям в других графических API. В версиях OpenGL до 4.2 и во всех версиях OpenGL ES, поддерживающих косвенную отрисовку, последний аргумент зарезервирован и поэтому должен быть равен нулю.
В вершинном шейдере обычно используются входные переменные SV_VertexID и SV_InstanceID для извлечения данных из некоторых буферов.
Смотрите так же: DrawProcedural, MaterialPropertyBlock, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.