Crate simple_wgpu

Source
Expand description

§simple-wgpu

An opinionated wrapper around wgpu-rs, that aims to improve the API ergonomics and avoid ongoing issues with rust lifetimes.

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

§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.

§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