CommandBuffer.DrawProceduralIndirect
Declaration
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);Параметры
| Параметр | Описание |
|---|---|
| матрица | Используемая матрица преобразования. |
| материал | Используемый материал. |
| shaderPass | Какой проход шейдера использовать (или -1 для всех проходов). |
| топология | Топология процедурной геометрии. |
| свойства | Дополнительные свойства материала, которые следует применять непосредственно перед рендерингом. См. MaterialPropertyBlock. |
| bufferWithArgs | Буфер с аргументами отрисовки. |
| argsOffset | Смещение в байтах, по которому в буфере находятся аргументы отрисовки. |
Описание
Добавлена команда "нарисовать процедурную геометрию".
При выполнении буфера команд он выполнит вызов отрисовки на GPU без каких-либо вершинных или индексных буферов. Количество отрисовываемой геометрии считывается из ComputeBuffer. Типичный случай использования — это генерация произвольного количества данных из ComputeShader и затем рендеринг этого, без необходимости обратного чтения в CPU.
Это полезно только на Shader Model 4.5 уровне оборудования, где шейдеры могут читать произвольные данные из ComputeBuffer буферов.
Буфер с аргументами, bufferWithArgs, должен иметь четыре целых числа на заданной argsOffset смещении: число вершин на экземпляр, число экземпляров, местоположение стартовой вершины и местоположение стартовой экземпляра. Это отображается на Direct3D11 DrawInstancedIndirect и эквивалентные функции на других графиках APIs. На OpenGL версиях до 4.2 и всех OpenGL ES версиях, поддерживающих косвенное рисование, последний аргумент зарезервирован и поэтому должен быть равен нулю.
В вершинном шейдере, вы обычно используете входные переменные SV_VertexID и SV_InstanceID для получения данных из некоторых буферов.
Дополнительные ресурсы: DrawProcedural, MaterialPropertyBlock, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.
Declaration
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 | Буфер индекса, используемый для представления вершин в GPU. |
| матрица | Используемая матрица преобразования. |
| материал | Используемый материал. |
| shaderPass | Какой проход шейдера использовать (или -1 для всех проходов). |
| топология | Топология процедурной геометрии. |
| bufferWithArgs | Буфер с аргументами отрисовки. |
| argsOffset | Смещение в байтах, по которому в буфере находятся аргументы отрисовки. |
| свойства | Дополнительные свойства материала, которые следует применять непосредственно перед рендерингом. См. MaterialPropertyBlock. |
Описание
Добавлена команда "нарисовать процедурную геометрию".
При выполнении буфера команд это даст вызов отрисовки на GPU без вершинного буфера. Количество отрисовываемой геометрии считывается из ComputeBuffer. Типичный случай использования генерирует произвольный объем данных из ComputeShader и затем передавать это, не требуя обратного чтения в CPU.
Это полезно только на Модель шейдера 4.5 аппаратного уровня, где шейдеры могут читать произвольные данные ComputeBuffer — буферы.
Буфер с аргументами, bufferWithArgs, должно иметь пять целых чисел на данной argsOffset offset: число индексов на экземпляр, число экземпляров, местоположение индекса начала, местоположение вершины базы и местоположение экземпляра начала. Direct3D11 DrawIndexedInstancedIndirect и эквивалентные функции на других графических APIsОн. OpenGL версии до 4.2 и все OpenGL ES версий, поддерживающих косвенную выводку, последний аргумент зарезервирован и поэтому должен быть равен нулю.
В вершинном шейдере вы обычно используете SV_VertexID и SV_InstanceID вводные переменные для получения данных из некоторых буферов.
Дополнительные ресурсы: DrawProcedural, MaterialPropertyBlock, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.