Skip to content

Distributive-Network/webgpu

 
 

Repository files navigation

This is a WebGPU API for native JavaScript, based on a Fork of Chromium's Dawn Project.

NPM Version NPM Downloads

Platforms

This project comes with pre-built N-API binaries for the following platforms:

OS Status
Windows ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ✔ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌
Linux ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌✔ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌
MacOS ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌✔ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌ ‌‌

Installation

npm install webgpu

Building

You have to build dawn as a shared library. After building dawn, create a file named PATH_TO_DAWN in this project's root directory, containing the absolute path to dawn using only forward slashes as path separators.

In case you have multiple python installations, you might want to use the --script-executable gn flag to instruct gn to use the python 2.x installation.

After you have generated and built dawn, you can now build this project by running:

npm run all --dawnversion=0.0.1

Windows

Follow dawn's initial setup instructions, but instead of the standard build, do the following:

To generate the project as a shared library using MSVS:

gn gen out/Shared --ide=vs --target_cpu="x64" --args="is_component_build=true is_debug=false is_clang=false"

It's important that you build using MSVS and not clang, as otherwise you will potentially get linking errors.

To build the project run:

ninja -C out/Shared

In case python wasn't found:

  • Use where python to get the location of your python installation
  • Repoint it by running e.g. npm config set python C:\depot_tools\python.bat

Linux

Follow dawn's initial setup instructions, but instead of the standard build, do the following:

To generate the project as a shared library:

gn gen out/Shared --target_cpu="x64" --args="is_component_build=true is_debug=false is_clang=true"

To build the project run:

ninja -C out/Shared

MacOS

Follow dawn's initial setup instructions, but instead of the standard build, do the following:

To generate the project as a shared library:

gn gen out/Shared --target_cpu="x64" --args="is_component_build=true is_debug=false is_clang=true"

To build the project run:

ninja -C out/Shared

Examples

cd examples & cd ..
node --experimental-modules examples/interactive-triangle.mjs

TODOs

  • Add CTS
  • Remove libshaderc from build?

Packages

No packages published

Languages

  • C 44.8%
  • C++ 35.2%
  • JavaScript 11.5%
  • Nunjucks 4.0%
  • Objective-C 3.6%
  • Objective-C++ 0.9%