Getting started#
Installation#
The webgpu package is available on PyPI and can also be installed
from source. A recent Python (3.8+) and a browser with WebGPU support
(Chrome, Edge, or another browser with WebGPU enabled) are required.
Install from PyPI:
pip install webgpu
Install from a local checkout:
git clone https://github.com/CERBSim/webgpu
cd webgpu
pip install -e .
Your first scene in a notebook#
The easiest way to start experimenting is inside a Jupyter notebook.
Start Jupyter (Notebook or Lab) and create a new Python notebook.
Run the following minimal example cell:
import numpy as np from webgpu.shapes import generate_cylinder, ShapeRenderer from webgpu.scene import Scene from webgpu.jupyter import Draw # 1) Create some simple geometry on the CPU shape = generate_cylinder(n=32, radius=0.5, height=1.0) # 2) Wrap it in a renderer that knows how to talk to WebGPU renderer = ShapeRenderer(shape_data=shape, label="demo") # 3) Put renderers into a Scene and draw it into a WebGPU canvas scene = Scene([renderer]) Draw(scene, width=480, height=480)
If your browser supports WebGPU, you should see a shaded cylinder rendered in the notebook output. From here, you can start modifying the geometry, camera and colors to explore the API.
Main concepts#
The library is built around a small set of concepts:
- Device and canvas (hidden by default)
A WebGPU device and HTML canvas are created for you when you call
Draw(...)in a notebook. You normally do not manage adapters, devices or swapchains directly.- Renderer
A
Rendererturns some domain-specific data (triangles, shapes, vectors, labels, etc.) into GPU buffers and a WebGPU render pipeline.- Scene
A
Sceneholds one or more renderers, plus common state like camera, lights and clipping configuration. The scene is what you pass toDraw(...).- Jupyter / Pyodide integration
The
webgpu.jupytermodule takes care of connecting your Python process to the browser’s WebGPU implementation. It supports both local Python (via a websocket link) and pure-browser Pyodide deployments (via an exported HTML using Pyodide).
The tutorial notebooks expand on these ideas with more complex examples, including instancing, selection, compute shaders and more.