WebGPU draws or computes via a pipeline that chains shaders to GPU resources through bind groups
A WebGPU pipeline connects shader code (written in WGSL) to GPU resources through a structured workflow. You create a shader module holding the WGSL, configure a render or compute pipeline that names the entry points and output formats, bind buffers and textures via bind groups, record commands into a command encoder, and submit the finished command buffer to the device queue. Commands do not run when recorded — they execute only when the command buffer is submitted, so a frame is built up as a batch then dispatched. The architecture is explicit and low-overhead: resource layouts are known at pipeline-creation time, which lets the driver optimize aggressively.
Examples
A minimal render pass: create a GPURenderPipeline with vertex+fragment entry points, make a bind group connecting a uniform buffer, encode a render pass with setPipeline + setBindGroup + draw, then finish() and queue.submit() the command buffer.
Assessment
List, in order, the objects a developer creates before a draw call can execute in WebGPU. What is a bind group for, and why are commands encoded into a buffer before being submitted?