"Hello, Triangle" WebGPU and Dawn
Starter project for C++ WebGPU/Emscripten and Dawn. Build for Windows using Visual Studio from 2015 onwards. Build for Emscripten using CMake (or on Windows using build-web.bat
). Build for Mac using the Xcode project (tested with Xcode 11 onwards, and macOS 10.14 onwards).
The included libdawn
is pre-built for Windows/MSVC and Mac; see instructions if you wish to build it yourself for Windows (out of the box Dawn on Windows builds with Depot Tools/Clang so MSVC's linker fails with the exposed std
types).
As of May 2023 the API should be stable enough, with Chrome being the first browser to enable WebGPU by default. The code is tested and working with Chrome 113 (other browsers may need flags to enable) and Emscripten 3.1.38.
Emscripten build instructions:
clone https://github.com/cwoffenden/hello-webgpu.git
cd hello-webgpu
mkdir out
emcmake cmake -B out -DCMAKE_BUILD_TYPE=Release
cmake --build out
Then serve this locally, otherwise CORS will probably stop the file://
URL loading the Wasm:
python3 -m http.server --directory out
Recalling to have enabled WebGPU in the browser and launched Chrome with the WebGPU flag, e.g. for Mac:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-unsafe-webgpu
Dawn is Apache 2.0 licensed (see LICENSE). The example code is released under a Creative Commons Zero license (or Public Domain, whichever is applicable in your jurisdiction).