Élie Michel
banner
elie-michel.bsky.social
Élie Michel
@elie-michel.bsky.social
Research Scientist at #Adobe. PhD in Computer Graphics. Author of #LearnWebGPU C++. Creative Coding. Indie game. VFX. Opinions are my own. Writes in 🇫🇷 🇺🇸.
https://portfolio.exppad.com
https://twitter.com/exppad
Note that 'naga' is the equivalent tool developed by Firefox. It can easily be installed using cargo (the rust build manager): github.com/gfx-rs/wgpu/...
June 1, 2025 at 10:44 AM
'tint' is the shader compiler developed by Chrome to implement #WebGPU. It has a nice command line interface, but so far there is no official build out...

Wait no more! I share here precompiled binaries of tint CLI: github.com/eliemichel/d...
June 1, 2025 at 10:44 AM
I've just realized something. It makes much more sense to have the "hello triangle" pointing upside down when learning #WebGPU!

👉 The ongoing "Next" rewrite of my guide reached the Hello Triangle chapter 🥳 eliemichel.github.io/LearnWebGPU/...
May 29, 2025 at 9:47 AM
🏅Honored to have been awarded at #Eurographics25 for our paper on #LipschitzPruning to speed-up SDF rendering!

👉 The paper's page: wbrbr.org/publications...

Congrats to @wbrbr.bsky.social, M. Sanchez, @axelparis.bsky.social, T. Lambert, @tamyboubekeur.bsky.social, M. Paulin and T. Thonat!
May 19, 2025 at 9:54 AM
New update post about the 🚧 Ongoing work! 🚧 in my LearnWebGPU C++ guide!

On patreon: www.patreon.com/posts/ongoin...
On Discord: discord.gg/2Tar4Kt564

Outline:
🔹 The LearnWebGPU guide
🔹 WebGPU-distribution
🔹 RenderDoc
🔹 WebGPU-C++
🔹 WebGPU spec
🔹 Dawn
🔹 wgpu-native
🔹 GLFW and SDL
🔹 Slang x WebGPU
May 10, 2025 at 10:21 PM
Starting to track down the usage of #WebGPU resources during a frame in my custom #RenderDoc driver!

(Don't mind the usage field, it's a placeholder value for now)
May 4, 2025 at 10:43 PM
Starting to nest events in the #WebGPU driver for #RenderDoc, how do you think I should handle these "WriteBuffer" that occur while encoding a "RenderPass"?

Because chronologically they are submitted before the render pass even though the API call occurs after.
May 2, 2025 at 10:53 AM
Close-up on the captured WebGPU API calls
April 30, 2025 at 7:41 AM
Who would be interested in a version of #RenderDoc that captures and replays calls to the #WebGPU API (rather than calls to the underlying DirectX/Vulkan/Metal API)?

This is an early test that only lists the API calls, but already promissing! Will share when usable.
April 30, 2025 at 7:38 AM
This report of Wells Fargo is also very informative/worrysome and points to many interesting sources: www.wellsfargoadvisors.com/research-ana...
April 27, 2025 at 11:24 AM
The most commonly cited source about the growth of energy need for compute is this IEA report: iea.blob.core.windows.net/assets/6b2fd... (screenshot of p31)
April 27, 2025 at 11:22 AM
The results: Our approach provides more expressive manipulation capabilities than solutions that do not augment the implicit function to help tracking down a point's identity!

More info and results on the web page! 👉 eliemichel.github.io/SdfManipulat... 7/8
December 3, 2024 at 8:33 AM
The solution: We #augment the output of the implicit function so that it also returns a vector that represents the #identity of the point. This then enables using the conveniently called Implicit Function Theorem en.wikipedia.org/wiki/Implici..., giving in the end a simple formula. 6/8
December 3, 2024 at 8:33 AM
The challenge: The constrained point (the one we click and drag), a priori only exists in the #current version of the shape: it's only once we can track it down in other #variations that we may define its #derivative wrt. procedural parameters.

Not easy, when the entire shape is only #implicit! 5/8
December 3, 2024 at 8:33 AM
The inspiration: This is typically a case of #DirectManipulation, like for instance #InverseKinematics (IK).

An IK solver estimates how to retro-engineer parameters to match a target constraint... But it requires the #derivative of constrained point position wrt. the procedural parameters. 4/8
December 3, 2024 at 8:33 AM
The problem: This SDF typically has some #procedural parameters exposed to the user. That's nice to explore #variations of the shape... but we only interact indirectly with the shape, through some sliders.

What if we could #directly pull the (implicit) surface of the SDF to explore variations? 3/8
December 3, 2024 at 8:33 AM
The input: a Signed Distance Field (SDF) described by a tree or graph of #primitives and #operators (typically, what people do on #shadertoy).

NB: The #SDF is NOT a #mesh, it's an #implicit representation of the shape!

📚 More about SDFs (the classical link): iquilezles.org/articles/ray... 2/8
December 3, 2024 at 8:33 AM
🏆 So honored that our paper received the Honorable Mention #Award at #SIGGRAPHAsia!

I really like this paper BTW, it is about procedural #SignedDistanceFields, a simple idea to #differentiate them and thus provide #DirectManipulation

More in the🧵⤵️ 1/8
December 3, 2024 at 8:33 AM
⚠️Note that #codegen and cross-compilation are slightly clashing, so the setups require to configure (i.e., call #cmake) twice: 1. for the generator (builds as a native command) and 2. for the WebAssembly module. 8/8
November 26, 2024 at 9:27 PM
Among its many modern language features, #Slang provides #autodiff (forward and backward), which comes very handy for #machine-learning applications! And also a #reflection API, which we use for code generation. 6/8
November 26, 2024 at 9:27 PM
What is #Slang BTW? It is a shader language that is design to bring a lot of nice modern language features such as proper modularization (rather than raw #include), type inference, generics (a.k.a. templates in C++), operator overloading, etc. 3/8
November 26, 2024 at 9:27 PM
Here is what it looks like on the C++ side: a "SomethingKernel" is auto-generated, with a 'createBindGroup' whose signature directly reflects what the #Slang shader asks for! 2/8
November 26, 2024 at 9:27 PM
Sharing a starter setup for using @shader-slang.bsky.social with #WebGPU in C++ with #CMake, either for native or web targets. 🔹 Uses the #reflection API to auto-generate boilerplate code! ✨

👉 github.com/eliemichel/S...

Very happy to take feedback about what's good and bad in this demo! More⤵️ 1/8
November 26, 2024 at 9:27 PM
For the sake of completeness, here comes the equivalent plot for the #JavaScript side of the API!
November 16, 2024 at 3:17 PM
Is it me of the activity of the #WebGPU-native spec looks like a #deadline is coming? Just saying...😁

(Also, it makes it hard to follow the pace with the #LearnWebGPU guide, but I'm working on it!)
November 16, 2024 at 3:17 PM