WebGPU wrapper finished: add multi draw indirect count support
This commit is contained in:
parent
082b8e0493
commit
7c122c5664
2 changed files with 24 additions and 0 deletions
|
|
@ -90,6 +90,10 @@ namespace psemek::wgpu
|
||||||
void draw_indexed(std::uint32_t index_count, std::uint32_t instance_count, std::uint32_t first_index, std::uint32_t base_vertex, std::uint32_t first_instance);
|
void draw_indexed(std::uint32_t index_count, std::uint32_t instance_count, std::uint32_t first_index, std::uint32_t base_vertex, std::uint32_t first_instance);
|
||||||
void draw_indirect(buffer const & indirect_buffer, std::uint64_t offset);
|
void draw_indirect(buffer const & indirect_buffer, std::uint64_t offset);
|
||||||
void draw_indexed_indirect(buffer const & indirect_buffer, std::uint64_t offset);
|
void draw_indexed_indirect(buffer const & indirect_buffer, std::uint64_t offset);
|
||||||
|
void multi_draw_indirect(buffer const & indirect_buffer, std::uint64_t offset, std::uint32_t count);
|
||||||
|
void multi_draw_indexed_indirect(buffer const & indirect_buffer, std::uint64_t offset, std::uint32_t count);
|
||||||
|
void multi_draw_indirect_count(buffer const & indirect_buffer, std::uint64_t offset, buffer const & count_buffer, std::uint64_t count_offset, std::uint32_t max_count);
|
||||||
|
void multi_draw_indexed_indirect_count(buffer const & indirect_buffer, std::uint64_t offset, buffer const & count_buffer, std::uint64_t count_offset, std::uint32_t max_count);
|
||||||
void execute_bundles(std::vector<render_bundle> const & bundles);
|
void execute_bundles(std::vector<render_bundle> const & bundles);
|
||||||
void begin_occlusion_query(std::uint32_t query_index);
|
void begin_occlusion_query(std::uint32_t query_index);
|
||||||
void end_occlusion_query();
|
void end_occlusion_query();
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,26 @@ namespace psemek::wgpu
|
||||||
wgpuRenderPassEncoderDrawIndexedIndirect((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset);
|
wgpuRenderPassEncoderDrawIndexedIndirect((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void render_pass_encoder::multi_draw_indirect(buffer const & indirect_buffer, std::uint64_t offset, std::uint32_t count)
|
||||||
|
{
|
||||||
|
wgpuRenderPassEncoderMultiDrawIndirect((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_pass_encoder::multi_draw_indexed_indirect(buffer const & indirect_buffer, std::uint64_t offset, std::uint32_t count)
|
||||||
|
{
|
||||||
|
wgpuRenderPassEncoderMultiDrawIndexedIndirect((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_pass_encoder::multi_draw_indirect_count(buffer const & indirect_buffer, std::uint64_t offset, buffer const & count_buffer, std::uint64_t count_offset, std::uint32_t max_count)
|
||||||
|
{
|
||||||
|
wgpuRenderPassEncoderMultiDrawIndirectCount((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset, (WGPUBuffer)count_buffer.get(), count_offset, max_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_pass_encoder::multi_draw_indexed_indirect_count(buffer const & indirect_buffer, std::uint64_t offset, buffer const & count_buffer, std::uint64_t count_offset, std::uint32_t max_count)
|
||||||
|
{
|
||||||
|
wgpuRenderPassEncoderMultiDrawIndexedIndirectCount((WGPURenderPassEncoder)get(), (WGPUBuffer)indirect_buffer.get(), offset, (WGPUBuffer)count_buffer.get(), count_offset, max_count);
|
||||||
|
}
|
||||||
|
|
||||||
void render_pass_encoder::execute_bundles(std::vector<render_bundle> const & bundles)
|
void render_pass_encoder::execute_bundles(std::vector<render_bundle> const & bundles)
|
||||||
{
|
{
|
||||||
static_assert(sizeof(WGPURenderBundle) == sizeof(render_bundle));
|
static_assert(sizeof(WGPURenderBundle) == sizeof(render_bundle));
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue