• Stars
    star
    172
  • Rank 221,201 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

webgpu-devtools

WebGPU devtools is a Web browser extension that helps debug WebGPU applications by monitoring WebGPU usage.

Note: This project is still in the alpha stage. The WebGPU devtools may be unstable and buggy now. See the GitHub issues and inline random TODO comments for things that need work.

WebGPU

WebGPU is a new Web graphics API, which will be available by default in Chrome 113. Please refer to this page for details.

To try WebGPU use Chrome 113 (it is Chrome Beta at writing this README on Apr.22.2023) or newer. Or enable WebGPU via chrome://flags on older Chromes.

How to install the WebGPU devtools

You can install the WebGPU devtools from the Chrome Web store

This project is still in the alpha stage. If you encounter any issue, please file an issue before sending 1-star review at the store :)

Demo video

Demo Video

Screenshots

WebGPU devtools

Show WebGPU buffer content

Show WebGPU texture content

Show Framebuffer content

Show WGSL shader

Show WebGPU commands

WebGPU command error highlight

Features

The Features of the WebGPU devtools are

  • Track and show WebGPU objects
  • Capture and show WebGPU commands
  • Highlight WebGPU command errors
  • Show WGSL shader code
  • Show buffer, texture, and framebuffer contents
  • Show WebGPU command call stacktrace

Upcoming features

  • WebGPU commands record and replay #5
  • Memory leak checker #6

Feel free to request features at the GitHub issues.

How to use

  1. Go to a WebGPU application web page (eg: Three.js WebGPU examples)
  2. Open WebGPU tab in the Developer tools
  3. Reload the web page
  4. The WebGPU devtools captures the WebGPU usage of the first 50 animation frames or 5 seconds (TODO: Make it configurable #4.)
  5. WebGPU usages are shown in the WebGPU devtools tab

If you want to capture another WebGPU application or capture the same application again, just move there or reload the page. The WebGPU devtools panel will be reset and updated. (See the "Known issues" section below if it doesn't work.)

The WebGPU devtools overrides WebGPU functions and tracks WebGPU objects. They may affect performance, memory usage, and functionality in WebGPU applications. You are recommened to enable the WebGPU devtools only when debugging.

How to build and install locally

If you want to locally build and install the WebGPU devtools, clone this repository and then run npm install and npm run build commands.

$ git clone https://github.com/takahirox/webgpu-devtools.git
$ cd webgpu-devtools
$ npm install
$ npm run build

After that, manually load webgpu-devtools/extensions as an unpacked extension in developer mode. Please refer to this document.

Known issues

  • WebGPU devtools panel is not updated sometimes even after finishing the capcuring. If you face this problem, try to reload the panel and application. Refer to #9 for details.

Also see the GitHub issues for others.

Contributions

This project is still in the alpha stage. There are a lot of things that need to be done. Contributions are very welcome. If you look for any issues to work on, find inline TODO comments or issues at the GitHub issues.

Also feel free to post any bug reports or feature requests at the GitHub issues.

The author is not a front-end engineer. Ideas or PRs for improving the UI are very welcome.

Disclaimer

This software is provided for debugging purposes only. This software is not intended to be used to steal WebGPU application contents.

This software is provided "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. The author shall not be liable for any damages whatsoever arising out of the use of this software, even if the author has been advised of the possibility of such damages.

More Repositories

1

riscv-rust

RISC-V processor emulator written in Rust+WASM
Rust
595
star
2

nes-js

JavaScript NES(Famicom) emulator
JavaScript
205
star
3

nes-rust

NES emulator written in Rust + WASM
Rust
204
star
4

toho-like-js

Touhou style danmaku shooter game which runs on your chrome.
JavaScript
176
star
5

online-wgsl-editor

A tiny WGSL online editor
JavaScript
174
star
6

mmd-viewer-js

MMD model dances on your chrome with WebGL.
JavaScript
158
star
7

wgpu-rust-renderer

A tiny WebGPU renderer written in Rust
JavaScript
138
star
8

THREE.WebGPURenderer

Experimental Three.js WebGPU renderer
JavaScript
132
star
9

three-gltf-extensions

Unofficial Three.js glTF loader/exporter plugins
JavaScript
118
star
10

tiny-web-metaverse

A web-based 3D virtual space lightweight framework with high flexibility, extensibility, and easy hosting, built on ECS architecture
JavaScript
117
star
11

MMDLoader-app

sample applications for THREE.MMDLoader
HTML
111
star
12

WebAssembly-benchmark

HTML
89
star
13

a-mmd

A-Frame MMD component
JavaScript
83
star
14

ThreeNetwork

Network sync library for Three.js
JavaScript
72
star
15

glTF-Blender-IO-materials-variants

Blender3D addon for glTF KHR_materials_variants extension
Python
71
star
16

ecs-rust

Tiny ECS library in Rust
JavaScript
60
star
17

three.wasm-experimental

Experimental Three.js WASM (WIP)
JavaScript
55
star
18

glTF-Blender-IO-EXT-mesh-gpu-instancing

Python
52
star
19

mmd-parser

NPM MMD parser package
JavaScript
48
star
20

webgpu-trial

WebGPU trial
HTML
48
star
21

pdp11-js

PDP-11 emulator implemented with JavaScript. UNIX V6 runs on your chrome.
JavaScript
43
star
22

aframe-rain

A-Frame Rainfall effect component
JavaScript
41
star
23

aframe-outline

Two-pass Outline effect component for A-Frame
JavaScript
34
star
24

aframe-instancing

A-Frame instancing component
JavaScript
24
star
25

EXT_skeleton_humanoid

21
star
26

THREE.Math-WASM

Three.js Math library in WASM
JavaScript
20
star
27

aframe-webrtc

A-Frame WebRTC component
JavaScript
17
star
28

takahirox.github.io

JavaScript
16
star
29

glTF-Blender-IO-MSFT-lod

Python
16
star
30

glTF-Transform-lod-script

JavaScript
15
star
31

aframe-deferred-renderer

A-Frame Deferred Renderer component
JavaScript
15
star
32

THREE.ZipLoader

Zip archived model file Loading helper for Three.js
JavaScript
14
star
33

THREE.TextureUploader

Experimental Less-blocking Texture uploader for Three.js
10
star
34

EXT_texture_video

8
star
35

nes-rust-ecsy

NES emulator + ECSY + Webpack bundle
JavaScript
7
star
36

KHR_lights_shadows

glTF exntension to specify which nodes can cast or receive shadows
6
star
37

EXT_copyrights

glTF copyrights extension
5
star
38

AsyncGLTFLoader

JavaScript
5
star
39

binary-viewer

Easy online binary dump tool.
HTML
5
star
40

Basis-Texture-Viewer

JavaScript
4
star
41

Vulkan-glTF-viewer-trial

C++
4
star
42

WebWorkers-benchmark

HTML
4
star
43

Hubs-glTF-Test-Models

3
star
44

WebAssemblyThread-benchmark

JavaScript
3
star
45

vr-tours

3
star
46

WebGL-CPU-Profiler-Extension

WebExtension profiling CPU elapsed time for WebGL
JavaScript
3
star
47

web_ai_chat

AI chat with on-device and in-browser inference
TypeScript
3
star
48

EXT_mesh_lod

2
star
49

charset-encoder-js

Simple charset encoder with JavaScript
JavaScript
2
star
50

KHR_parallel_shader_compile_test

GLSL
2
star
51

YouTube-Auto-Ad-Skipper

JavaScript
2
star
52

custom-shader

2
star
53

license-info-js

JavaScript
2
star
54

js-arguments-test

HTML
2
star
55

rust-tiny-os

Rust
2
star
56

libsquish-js

JavaScript libsquish compiled with emscripten
C++
2
star
57

EXT_text

glTF text extension
2
star
58

whisper-web-extension

JavaScript
2
star
59

ios-webaudio-test

JavaScript
1
star
60

ios-video-test

Test purpose
HTML
1
star
61

MyPersonalTodos

1
star
62

texImage2D-gl-test

HTML
1
star
63

SIMDJS-benchmark

HTML
1
star
64

pannernode-test

HTML
1
star
65

MOZ_lightmap

1
star
66

system_trade

Easy algorithmic trading tool on Lubuntu for myself.
Shell
1
star