Career story

Scratching that creative itch

How full-stack web work left the graphics itch unscratched, and how Three.js, Threlte, GLSL shaders, water simulations, coffee stirring, and raymarched scenes became the creative programming playground.

Three.jsThrelteSvelteGLSLShadersRaymarchingWebGL

Highlights

  • Used free time away from full-stack product work to reconnect with graphics and creative programming.
  • Learned Three.js and its Svelte integration through Threlte while deepening shader knowledge from Unity.
  • Built interactive water and coffee demos focused on ripples, stirring, and GPU-driven surface behavior.
  • Explored raymarching through a volumetric moon scene and a Shadertoy octahedron spiral.

Interactive demos

The graphics itch came back

Working on full-stack web projects was satisfying in a very practical way, but it left a familiar itch unscratched. I missed graphics programming, the kind where a tiny change in math can turn into something visible, strange, and alive on screen.

So in my free time I started learning Three.js and how it fits with Svelte through Threlte. Three.js gave me the browser-side 3D foundation, while Threlte made it feel natural inside the Svelte mental model I was already using elsewhere.

Back to shaders, this time on the web

The main goal was to deepen my shader knowledge. I already had shader experience from Unity development, but WebGL and GLSL made it feel fresh again. The feedback loop was different, the constraints were different, and the web made sharing experiments almost instant.

My first very basic dream was making a water shader. Not a production ocean system, not a giant simulation, just a surface that reacted, shimmered, and felt responsive. That became the water ripples demo: a small lab for movement, normals, distortion, splashes, and the joy of poking the screen and seeing the surface answer.

Coffee made it more tactile

The coffee cup demo pushed the same idea into something more playful. Instead of just disturbing water, the interaction became stirring. Pointer movement had to feel like it was affecting liquid inside a cup, which made the shader less abstract and more physical.

That is the part I enjoy about creative coding: the work sits between math and feel. The values can be technically valid and still feel wrong. You tune until the interaction has weight, delay, softness, and a little bit of personality.

Raymarching unlocked a different door

After that I started learning raymarching. It was one of those graphics topics that seems like dark magic until the model clicks: describe a distance field, step through space, and let the scene emerge from math instead of meshes.

Combining that with the water work led to the night scene, where the moon is a raymarched volumetric mass emitting rainbow colors over interactive water. It feels less like a UI experiment and more like a little mood piece, which was exactly what I wanted from the exercise.

Why it matters

I also made a raymarched octahedron spiral on Shadertoy that looks like it belongs somewhere near an old-school Doom portal. It is not useful in the SaaS sense, and that is kind of the point.

These experiments reminded me that creative programming is still part of how I think. Full-stack work gives me product discipline. Shader work gives me play, visual intuition, and a place to keep sharpening the low-level graphics instincts that started back in Unity.

Back to blog