The enjoyment of one’s tools is an essential ingredient of successful work. – Donald E. Knuth
A WebGPU in ClojureScript.
After a weekend of looking at WebGPU specs, firefox sources and tons of internet documents… a wild WebGPU triangle appears!
- [-] App setup, display a triangle
- [ ] Add a frame/camera uniform buffer
- [ ] Meta shader macros, generate bindings
- [ ] Meshes and textures, working with data
- [ ] Materials, parameterized effect shaders
- [ ] Surfaces, parameterized 3D model shaders
npm install # Ensures Stats.js and gl-matrix are exposed to ClojureScript.
There’s no production build yet. Everything runs from the REPL.
In Emacs/cider, run cider-jack-in-cljs
to launch the environment, then navigate
to http://localhost:9500/
. Feel free to contribute setups of other editors!
Don’t try to control the process. Be creative and let things happen. Just see where they take you.
The browser is a perfect environment for this kind of application. There are
enough technologies and APIs available to effectively consider it an operating
system in its own right. The JavaScript virtual machine allows functions to be
redefined at runtime and ClojureScript
takes full advantage of this feature.
This application is entirely developed while it runs at full framerate. The goal is to provide a fun playground to learn development, quickly experiment with new ideas and maybe even produce interactive content interactively at the Lisp REPL.
The web is making incredible progress nowadays; Spacelancers for example is the result of an Unreal Engine game exported to the browser. Both WebGL and WebGPU!
Naming things is hard, naming projects is impossibly hard. That’s why I leave it to whatever I find in the moment.
Just a few days ago, I learned The Mars Volta
, one of the bands ever, released
two new singles called Blacklight Shine and Graveyard Love.
Earlier that day, I was listening to Edguy’s Lavatory Love Machine for the first time in a decade. Then the mashup just became the name.
It speaks of the infinite shades inside a living system, which is lovely!