Tomek Czajecki
tchayen.com
Tomek Czajecki
@tchayen.com
EM @expo.dev working on EAS product infrastructure

I blog about my hobbies – a mix of graphics programming and gamedev – see tchayen.com
And this is all it took on the JS side.
May 5, 2025 at 11:43 AM
I have a 'wasm' command declared in package.json which compiles the binary and places it in web/bin. Plugin is listening for changes in zig/ and runs that command. Finally handleHotUpdate() notices that a *.wasm file changed and sends HMR to the browser.
May 5, 2025 at 11:43 AM
I don't know how I survived this long recompiling WASM binary after every change but I finally wrote a mini Vite plugin for HMR.

Now when I change anything and save the file, WASM module is automatically compiled and reloaded.
May 5, 2025 at 11:43 AM
I was working on a WebGPU demo and decided to try how fast I can make it. Zig in WASM generates a buffer with command stream sorted to minimize GPU state changes.

This is 10k individual draw calls, unoptimized, no instancing, no render bundles. Every object is controlled separately.
February 21, 2025 at 10:52 PM
Asked gemini for WebGPU setup with several cylinder models and orbiting camera. Got interstellar scene (unfortunately had to first spend 15 minutes to fix it).
February 11, 2025 at 12:28 AM
Small weekend (I lost track of time anyway) project: mesh picking in WebGPU.

There's a render pass which draws scene to a r32_unit texture where color of mesh is its ID. Then a compute shader given mouse coordinates writes which color it was to a tiny buffer which is mapped and read back CPU side.
December 30, 2024 at 2:49 PM
How it feels here after the last month on twitter
November 13, 2024 at 9:34 PM
Accidentally loaded tonemapping LUT as RGBA8 instead of RGB9E5 and made this scene way more artsy than it was supposed to be
November 7, 2024 at 6:43 PM
App.js conf starting now
May 11, 2023 at 7:56 AM