Sensei Notes logo

Sensei Notes

Archives
Subscribe
April 29, 2026

Sensei Notes #09 - A racing game, an infinite world, and Three.js r184

Hey!

This week: a racing game that makes Gran Turismo nervous ๐ŸŽ๏ธ, an infinite WebGPU world with zero textures, and Three.js r184 with SSGI, 3x faster shaders, and Claude as a contributor.


๐Ÿ”ฅ Alex is cooking with Apex

Apex Screenshot

Alex aka as @mustache_dev is building a full sim-racing game in the browser, in JavaScript, with Three.js. It's called Apex and it's genuinely impressive.

v0.4 just dropped with a replay system for making cinematic videos, a reworked online racing mode, and a brand new track: Laguna Seca. The physics got a full overhaul too, now much closer to Gran Turismo. He even did a real-time side by side comparison between Apex and GT7 on the same track with the same car, and it holds up surprisingly well.

This is the kind of project that makes you realize how far the web has come for gamedev.

๐Ÿ‘‰ Try Apex


๐ŸŒฑ False Earth: an infinite WebGPU world, fully broken down

False Earth screenshot

Ming Jyun Hung just dropped a Codrops case study for False Earth, and it's basically a masterclass on what WebGPU + TSL unlocks over classic WebGL.

A few things worth calling out:

  • Infinite grass field built from a grid system that snaps with the camera. World position is used as a deterministic seed so every blade stays consistent across snaps.
  • Storage buffers replace the old FBO ping-pong GPGPU workarounds. Per-blade data packs into 4x vec4 (64 bytes) and gets written by compute shaders.
  • Indirect draw + GPU-driven culling and LOD so the CPU never touches the visibility pass. Around 80% of instances never reach the vertex shader.
  • Voronoi clump blending for natural variation, cubic Bรฉzier spines for bending, and VAT flowers with a circular spawn buffer using atomicAdd.
  • AsyncCompile pipeline with a FIFO queue to avoid freezing the browser during shader compilation. Nice pattern to steal for any heavy R3F/TSL scene.

No textures on the blades. Everything procedural. All in the browser.

๐Ÿ‘‰ Read the case study

๐ŸŽฎ Try the demo

๐Ÿ’ป Code on GitHub


๐Ÿ“ฆ Three.js r184 is out

r184 just dropped on April 16 and it's a meaty one. Here are the things worth paying attention to.

SSGI Ball Pool demo is probably the flashiest addition. Screen-space global illumination on a physics ball pool, running in the browser. Go play with it.

๐ŸŽฎ Try the SSGI Ball Pool demo

Dynamic Lights landed in WebGPURenderer (by @RenaudRohlinger), a new approach for handling lights more efficiently in GPU-driven pipelines.

TSL compilation is now 3x faster. This one matters if you're building anything complex with nodes. The PR is a 3x speedup on shader compilation, just from smarter caching.

LightProbeGrid got a proper GI implementation. Position-dependent diffuse global illumination, so probes actually vary across space instead of being a flat global approximation.

HTMLTexture shipped. You can now render actual HTML as a texture in your Three.js scene. Genuinely useful for UI in 3D or just fun experiments.

The Inspector keeps getting better: this release adds a Timeline tab (basically a command recorder), a TSL Graph view for visualizing your node graph, a Memory tab, extension support, and stack trace capture. It's becoming a real devtool.

FBXLoader got a long overdue fix pass: skinning, rotation animations, morph deltas, Z-up coordinate system correction, and more. If you've been fighting FBX issues, this one's for you.

Fun side note: @claude is listed as a contributor in several r184 PRs. The three.js team has been using AI to help write code. The future is now.

๐Ÿ‘‰ Full r184 changelog


Happy coding ๐Ÿง‘โ€๐Ÿ’ป

Wawa

Don't miss what's next. Subscribe to Sensei Notes:
โ† Newer Sensei Notes #10 - Three.js Conf Paris, scroll-driven WebGPU, and AI texturing in the browser Older โ†’ Sensei Notes #08 - I'm back (and Pascal is trending)
Twitter
YouTube
globe