Mike Turitzin
banner
miketuritzin.bsky.social
Mike Turitzin
@miketuritzin.bsky.social
Building a game/engine based on signed distance fields

~ Past: rendering lead @figma.com, indie VR dev, founder @ Workflowy, search backend @ Google, Quake modder

miketuritzin.com
New take on the tunnel gun:

Make a tunnel, walk through it, and then close it up behind you.

Going to experiment with this for gameplay in a mining context.
November 7, 2025 at 8:41 PM
Demo of bilinear interpolation of SDF samples:

- Negative (interior) samples of the analytic SDF are blue, positive (exterior) samples are orange.

- Circles are drawn around samples to show distance magnitude.

- Intermediate bilinear interp samples / segments are drawn.

1/
November 5, 2025 at 10:25 PM
Making an animation illustrating sparse allocation of SDF bricks:

- White line is the analytic SDF curve.

- Sparsely-allocated cells (and distance samples) are shaded.

- Yellow line in the reconstructed SDF curve from cached samples (via bilinear interpolation of distances).
October 30, 2025 at 7:33 PM
Just learned that the equivalent of "warp"/"wave" in ispc is a "gang".

"Gangs of Program Instances" has a certain menacing ring to it 😁
October 30, 2025 at 5:49 PM
My foes when I confront them
October 28, 2025 at 6:38 PM
A lesson I've learned: digging holes into shiny red stuff always ends up looking pretty gross🤨
October 22, 2025 at 11:58 PM
From my notes about stuff to add in the video about my engine (lol)
October 14, 2025 at 9:55 PM
Playing around with a "tunnel gun" that can open a tunnel in front of you that can be looked into or moved through.

This type of thing is really simple in my engine - just spawn an SDF capsule subtraction that is locked to the player's view.
October 14, 2025 at 7:57 PM
Playing around more with the Donut County vibes - but this time you have both a portable hole and a portable mound.

And the hole grows bigger when it consumes cubes, because that's what holes do (obviously).
October 9, 2025 at 9:42 PM
Feeding the hole.
October 9, 2025 at 1:58 AM
Herding cubes, HD remaster.
October 2, 2025 at 7:53 PM
This video shows the world-space cascades centered around the camera. If the camera hasn't moved outside of the current shadow chunk and the (SDF) scene hasn't changed, no shadow map rendering happens at all.

2/
October 1, 2025 at 9:15 PM
Finished work on directional light shadows (for now!).

This took a while because I didn't implement "normal" cascaded shadow maps (via frustum slices) but rather world-space cascades that are updated in chunks as the camera moves, and incrementally when the scene changes.

1/
October 1, 2025 at 9:15 PM
As a kludge for lack of global illumination (which I plan to add eventually), I am attenuating the visibility of ambient lighting (the skybox) deeper within the terrain.

One of the benefits of using SDFs - just eval the terrain SDF to get distance to surface for any point!
September 25, 2025 at 6:36 PM
Experimenting with a SDF material blend function that is "stamps" the material volumetrically.

The previous function I was using (which is the common one) blends the material around the surface influence area, and so would have no effect below ground.
September 12, 2025 at 9:13 PM
Almost finished implementing shadows.

This ended up being a bigger project than expected, as I decided to render world-space shadow map cascades that update/"scroll" incrementally as the camera moves.

The benefit of this is that very little work needs to be done every frame!
September 11, 2025 at 8:08 PM
Prowling around the SDF yards after dark, desecrating spheres with reckless abandon.
September 3, 2025 at 9:01 PM
BUT (again), I did find a way around this, which is that I can add the register containing this value to the "Watch" pane, and then display it as an unsigned int.

This shows its bit representation is 0x3F800001, or the next representable value higher than 1.0.
September 2, 2025 at 1:54 AM
Nicely-explained and illustrated article on making a spherical Minecraft-style blocky world.

(with playable web demo)

www.bowerbyte.com/posts/blocky...
August 28, 2025 at 5:47 PM
TIL the concept of a "net" of a polyhedron - the way its faces can be flattened and then "folded" back together.

These are 11 nets of a cube!

en.wikipedia.org/wiki/Net_(po...
August 28, 2025 at 5:39 PM
Digging with spheres (🔵) vs octahedrons (🔷)
August 19, 2025 at 7:24 PM
Demonstration!
August 13, 2025 at 11:01 PM
This is what I came up with to calculate a tight AABB for an octahedron.

The 6 vertices of the octahedron all lie on a single axis, so they each "pick" a single column of the rotation matrix. abs() handles the fact that the vertices are mirrored w.r.t. the origin.

Demo below!
August 13, 2025 at 11:01 PM
It turns out that just subtracting the corner radius from the (uniform) scale and then offsetting the distance doesn't work as it did for boxes/cylinders here:

bsky.app/profile/mike...

This is what you get for octahedrons with that technique.

2/
August 13, 2025 at 9:52 PM
Added octahedrons to experiment with them as a digging primitive and ran into an issue when getting "corner radius" working.

This is the fixed version - very satisfying :)

(explanation below)

1/
August 13, 2025 at 9:52 PM