Thomas Hooper
banner
tdhooper.bsky.social
Thomas Hooper
@tdhooper.bsky.social
Code artist. Graphics programmer (ex Jumpship Studio). Web developer (ex Last.fm). he/him
mastodon.gamedev.place/@tdhooper · x.com/tdhooper · stainlessvision.com
Exploring the fractal reef
January 23, 2025 at 3:02 PM
The atomic structure of fractals
January 23, 2025 at 3:03 AM
It's really fun to explore fractals this way tdhooper.github.io/offline-shad...
January 20, 2025 at 5:00 PM
One of the tedious aspects of modeling SDFs with raw shader code is adjusting the position of objects, so I'm adding transform gizmos into my tool

They write changes directly to the shader on disk, so I don't need an external object hierarchy

tdhooper.github.io/offline-shad...
January 20, 2025 at 4:57 PM
Once we've put all that together we can have some fun with it ;) here's the shader used to make these gifs www.shadertoy.com/view/lf3BDr
December 4, 2024 at 3:24 PM
Finally we just need to scale exponentially instead of linearly
December 4, 2024 at 3:24 PM
Notice there is a point that the fractal converges on, if we rotate around that, it looks better but there's still a little jump

I've a method for finding this point of convergence here www.shadertoy.com/view/tscBDH
December 4, 2024 at 3:24 PM
We can try linearly interpolating from one transform to the next, it loops, but it's not continuous
December 4, 2024 at 3:24 PM
Let's look at the problem in 2D, we want to achieve this, moving from one face to the next in a smooth continuous movement
December 4, 2024 at 3:24 PM
Which we use to tile the face with hexagons, I'm using a variation of this technique from Matt Zucker www.shadertoy.com/view/4d2GzV, it gives you the closest hexagon centers in 2D, which I then project onto the face in 3D by reversing the steps I used to make the uv-map
November 22, 2024 at 4:20 PM
From these two points, we can construct a little uv-map for the section of the icosahedron face we're near
November 22, 2024 at 4:14 PM
We can speed things up by just calculating distance to the tile we're near, or even better, just the tile-corner we're near
November 22, 2024 at 12:43 PM
I fragment the head into little hexagon tiles, so how do we find the distance to the closest tile from some position in space? We could loop through a list of tile positions, calculate the SDF for each one, and return the smallest distance... but this becomes expensive for all those march iterations
November 22, 2024 at 12:43 PM
Before I continue, a primer on ray marching SDFs:

While ray marching, you take your current position on the ray, with which query the SDF for the distance to the geometry surface, and step forward along the ray by that distance. Eventually you either converge onto the surface, or shoot past it
November 22, 2024 at 12:43 PM
Creating a realistic head this way, with just code, is no easy task. To make life easier I grabbed a polygonal modal from Daz 3D, and 'traced' it with my SDF

I made a couple of views to visualize the difference between the poly and sdf geometry, a left/right split, and a camera-depth comparison
November 21, 2024 at 6:18 PM
The head is a distance field, mostly constructed using metaballs and a lot of smooth-blended CSG primitives, about 500 lines of glsl www.shadertoy.com/view/wlf3WX

Here we can see the primitives as they are blended together (Thanks teadrinker for this visualisation www.shadertoy.com/view/tlByzR)
November 21, 2024 at 5:55 PM
Let's post some old work with a little behind-the-scenes

This loop, Fractal Polycephaly, won the 2019 Revision Demoparty animated GIF competition

It's rendered entirely within a raymarching shader, there's no polygonal geometry
November 21, 2024 at 5:40 PM
Hi Bluesky!

With the sudden closure of Jumpship, I'm looking for a new role

I'm looking for anywhere I can make beautiful things with code, my ideal role would be a mix of graphics programming, technical art, and gameplay programming (or anything else interactive)
November 21, 2024 at 4:41 PM