Crate simple_wgpu

Source
Expand description

§simple-wgpu

An opinionated wrapper around wgpu-rs, that aims to improve the API ergonomics.

I’m a big fan of the write-once-cross-compile-anywhere promise underlying WebGPU, but I’m less of a fan of the API itself. The WebGPU API is modelled on an earlier, pipeline-centric vision of the Vulkan API, and has inherited a degree of verbosity/inflexibility as a result. This library aims to recapture some of the simplicity of writing code for OpenGL - ideally without giving up the safety and stability guarantees of wgpu-rs.

§Goals

  • Reduce the combinatorial pipeline explosion, along the lines of VK_EXT_extended_dynamic_state
  • Improve DRY (Don’t Repeat Yourself) by eliminating the duplicate specification in bind group/pipeline layout objects
  • Make pipeline specification render target-agnostic, so the same pipeline can render to different types of target texture

§Non-goals

  • Performance. I don’t want this wrapper to be slow, but where necessary I will trade performance for ergonomics.
  • API Stability (for now). I’m actively iterating on where the boundary between dynamic and baked state should be, as well as whether the more object-oriented wrappers make sense.
  • 100% coverage of wgpu features. I’ll wrap more functionality as it becomes useful to me.

§Who is it for?

Me, mostly, but if you find it useful, feel free.

§License

I’ve put this under the Apache license, but if you need a more permissive license, feel free to get in touch.

Structs§

BindGroup
A handle to a binding group
BindGroupBuilder
Builds a BindGroup
Buffer
A handle to a GPU buffer
BufferBinding
How to bind a Buffer to a BindGroup
BufferSlice
A sub-slice of a Buffer
ColorAttachment
A color attachment for a RenderPass
ColorTargetState
Sets blend modes and color masks for a render target
CommandEncoder
Encodes a series of GPU operations
ComputePass
Record a compute pass
ComputePipeline
A compute pipeline
ComputePipelineBuilder
Builds a ComputePipeline
Context
Wraps the wgpu Device and Queue, and caches all of the wgpu resource types
DepthStencilAttachment
A depth/stencil attachment for a RenderPass
Dispatch
All of the data needed to issue a single compute operation
DrawCall
All of the data needed to issue a single draw call
EntryPoint
A handle to a compiled shader with a specific main function
RasteriserState
The set of rendering state that is convenient to vary on a per-draw basis
RenderPass
Record a render pass
RenderPipeline
A render pipeline
RenderPipelineBuilder
Builds a RenderPipeline
RenderTexture
A texture that can be used as a render pass attachment
Sampler
A texture sampler
SamplerBuilder
Builds a Sampler
Shader
A handle to a compiled shader
Texture
A handle to a GPU texture
TextureBinding
How to bind a Texture to a BindGroup
VertexBufferLayout
Describes the layout of a vertex buffer