To build the samples, first install Emscripten via Emsdk, then enter Emsdk command line environment (emsdk_env), and type
cd path/to/wasm_webgpu
mkdir build
cd build
emcmake cmake ../samples -DCMAKE_BUILD_TYPE=Debug # Or MinSizeRel, RelWithDebInfo or Release
make -jOn Windows, the last make command is not available, so either install Mingw32-make via emsdk and run mingw32-make -j, or install Ninja via emsdk, then pass -G Ninja to the emcmake command line, and then run ninja instead of make.
For the smallest Clear Screen "hello world" example, see clear_screen.c/clear_screen.c.
There is also an Emscripten JSPI-enabled variant of the same demo, at clear_screen.c/clear_screen_sync.c.
The demo failing_shader_compilation/failing_shader_compilation.c tests handling of shader compilation errors.
The demo gpu_oom/gpu_oom.c exhausts the GPU VRAM, testing handling of GPU OOM events.
The demo hello_triangle/hello_triangle_minimal.c contains the smallest triangle rendering demo.
The variant hello_triangle/hello_triangle_verbose.c offers the same, but with verbose debug logging.
The demo offscreen_canvas/offscreen_canvas.c shows how to perform WebGPU rendering using OffscreenCanvas from a Wasm Worker.
If you are using pthreads, the variant offscreen_canvas/offscreen_canvas_pthread.c illustrates OffscreenCanvas rendering by using a pthread instead.
Finally, if you are using pthreads with the Emscripten -sPROXY_TO_PTHREAD build option, then check out the offscreen_canvas/offscreen_canvas_proxy_to_pthread.c code sample.
The sample texture/texture.c tests the wgpu_load_image_bitmap_from_url_async() API.
The test vertex_buffer/vertex_buffer.c shows an example of how to map a GPU buffer and use the function wgpu_buffer_write_mapped_range().



