Casey Primozic / ameo's Avatar

Casey Primozic / ameo

@ameo.dev

Programmer, primarily. Music makes life worth living; the internet is the greatest wonder of our age. https://cprimozic.net/ Previously found at: https://twitter.com/Ameobea10

193
Followers
210
Following
80
Posts
12.11.2024
Joined
Posts Following

Latest posts by Casey Primozic / ameo @ameo.dev

A screenshot of the Geotoy editor showing a smooth tendril-like form rendered on the left and the code generating it on the right.  The code includes calls to `trace_path` as well as `rail_sweep`, the latter of which is used to generate the actual mesh

A screenshot of the Geotoy editor showing a smooth tendril-like form rendered on the left and the code generating it on the right. The code includes calls to `trace_path` as well as `rail_sweep`, the latter of which is used to generate the actual mesh

A screenshot of the Geotoy editor showing a sword or blade-like object rendered on the left and the code to generate it on the right.  The code uses `trace_path` to generate the 2D cross-sections of the blade, uses a deformed rectangular prism to cut a divot out of the middle, and generates the shape of the blade itself using the `rail_sweep` function

A screenshot of the Geotoy editor showing a sword or blade-like object rendered on the left and the code to generate it on the right. The code uses `trace_path` to generate the 2D cross-sections of the blade, uses a deformed rectangular prism to cut a divot out of the middle, and generates the shape of the blade itself using the `rail_sweep` function

Hell yeah, this is really cool

14.01.2026 03:23 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a Geotoy composition showing what looks like a curved piece of metal with a cylindrical hole drilled through it rendered with a gray brushed-metal texture.  The code used to generate it is displayed on the right and it contains a call to a function called `trace_path` which contains some 2D drawing commands like move, line, cubic_bezier, and arc.

A screenshot of a Geotoy composition showing what looks like a curved piece of metal with a cylindrical hole drilled through it rendered with a gray brushed-metal texture. The code used to generate it is displayed on the right and it contains a call to a function called `trace_path` which contains some 2D drawing commands like move, line, cubic_bezier, and arc.

Panning out pretty well so far

The new `trace_path` command doesn't add a _ton_ of new functionality by itself, but it's only half the puzzle. The next piece will build on it and really open things up

13.01.2026 07:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've just had an idea for what I think will be a very powerful geometry generation primitive for Geoscript

Still working through details, but if it pans out it will be really cool

12.01.2026 23:57 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
A Unique Performance Optimization for a 3D Geometry Language For the past several months, I’ve been working on a programming language called Geoscript. It’s specialized for generating and manipulating 3D geometry for use in a Shadertoy-inspired web app called G...

Wrote a post about a neat optimization opportunity I ran into for Geotoy

cprimozic.net/notes/posts/...

It uses persistent constant expression memoization to skip work when re-running slightly modified programs. It's effective since Geoscript programs are basically pure functions

11.01.2026 19:39 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Oh hell yeah, that's a banger. I feel like it's going to be considered a monumental song for decades to come

11.01.2026 09:34 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Namitape - Screenspace
Namitape - Screenspace YouTube video by namitape

Another modern track that has become one of my all-time favorites:

www.youtube.com/watch?v=K2B_...

(Screenspace by Namitape)

The MV is super creative too and really makes it special to me. There's a raytracer test scene featured and some other computer graphics references

11.01.2026 03:51 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
ループアルーム feat. εˆιŸ³γƒŸγ‚― / "Looping the Rooms" ft. Hatsune Miku
ループアルーム feat. εˆιŸ³γƒŸγ‚― / "Looping the Rooms" ft. Hatsune Miku YouTube video by γƒ«γ‚·γƒŽ / rusino

Some of these modern vocaloid producers are out there creating just really amazing stuff

www.youtube.com/watch?v=icBD...

(song is Looping the Rooms by rusino)

I've said this before, but it really warms my heart that Vocaloid is still popular, thriving, and evolving in 2026

11.01.2026 03:51 πŸ‘ 3 πŸ” 1 πŸ’¬ 3 πŸ“Œ 0
Colorful curlicues resembling twist-ties twisted into various sorts of spirals and textured with a bright geometric chevron pattern

Colorful curlicues resembling twist-ties twisted into various sorts of spirals and textured with a bright geometric chevron pattern

A voxel construct resembling a hollow hourglass sitting on a concrete mat with a folding structure around it

A voxel construct resembling a hollow hourglass sitting on a concrete mat with a folding structure around it

A concrete or stone walkway with shiny dark puple rock-like organic-looking spires surrounding it

A concrete or stone walkway with shiny dark puple rock-like organic-looking spires surrounding it

A series of gray tendrils or pipes following an organic looking flow pattern reminiscent of fluid dynamics or smoke

A series of gray tendrils or pipes following an organic looking flow pattern reminiscent of fluid dynamics or smoke

Still working on my Geotoy project on and off

Building up a pretty decent collection of cool stuff with it

3d.ameo.design/geotoy/edit/71
3d.ameo.design/geotoy/edit/72
3d.ameo.design/geotoy/edit/76
3d.ameo.design/geotoy/edit/66

07.01.2026 02:18 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
A Modern Recommender Model Architecture This post provides a detailed rundown of the architecture of a recommender model I recently developed. It gives details about all of the main design decisions and unique features that were added as w...

New blog post is out, going into detail on the architecture of a recommender model I developed recently

cprimozic.net/blog/anime-r...

28.12.2025 20:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A diagram created with TikZ which shows the architecture for a denoising autoencoder model.  It shows the inputs at the top which are created by concatenating the presence flags and hybrid-normalized rating values, the encoder and bottleneck, and two decoder heads which predict presence and rating separately.  The diagram is annotated with fan-out param count for each layer and has nodes to indicate when Swish activation and softmax are applied.

A diagram created with TikZ which shows the architecture for a denoising autoencoder model. It shows the inputs at the top which are created by concatenating the presence flags and hybrid-normalized rating values, the encoder and bottleneck, and two decoder heads which predict presence and rating separately. The diagram is annotated with fan-out param count for each layer and has nodes to indicate when Swish activation and softmax are applied.

Improved version

27.12.2025 23:39 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A diagram representing the architecture of a neural network for a recommender model.  It shows an input consisting of concatenated presence flags and hybrid-normalized ratings, an encoder hidden layer, a bottleneck layer of size 512, and then two output decoder heads each of which have two hidden layers.  The decoder heads are labeled "Presence Decoder" and "Ratings Decoder".

A diagram representing the architecture of a neural network for a recommender model. It shows an input consisting of concatenated presence flags and hybrid-normalized ratings, an encoder hidden layer, a bottleneck layer of size 512, and then two output decoder heads each of which have two hidden layers. The decoder heads are labeled "Presence Decoder" and "Ratings Decoder".

Working on some TikZ diagrams for a new blog post

26.12.2025 04:23 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

An alternate style

This one took almost 8 minutes to generate though.

CGAL has some pretty severe performance issues when running in Wasm. It relies on having strict control over FPU rounding mode flags, but those aren't controllable in Wasm, so expensive emulation is needed

26.10.2025 19:27 πŸ‘ 0 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

It's created by sampling points in a sphere and only accepting those in very small ranges of a 3D FBM noise function

The color and roughness shaders are completely procedural, also built using FBM noise. The normal map is not procedural and uses a texture with triplanar mapping

25.10.2025 23:13 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a 3D model created and rendered with Geotoy.  It depicts a multi-layered folded shell enclosed in a spherical area, textured and shaded to look somewhat copper-colored.  The surface appears rather shiny and metallic with colors ranging from orange/brown to pink, peach, and crimson.  It consists of several separate thin layers of material that warp and curl in roughly the same way as each other, yielding an organic look reminiscent of a smooth endoplasmic reticulum.

A screenshot of a 3D model created and rendered with Geotoy. It depicts a multi-layered folded shell enclosed in a spherical area, textured and shaded to look somewhat copper-colored. The surface appears rather shiny and metallic with colors ranging from orange/brown to pink, peach, and crimson. It consists of several separate thin layers of material that warp and curl in roughly the same way as each other, yielding an organic look reminiscent of a smooth endoplasmic reticulum.

My latest creation with Geotoy, built using the alpha wrap function from the CGAL library

I've been getting a ton of value out of this; it's really useful for creating organic-looking structures

You can see it in 3D here: 3d.ameo.design/geotoy/edit/62
(takes ~30 seconds to run)

25.10.2025 23:13 πŸ‘ 1 πŸ” 2 πŸ’¬ 1 πŸ“Œ 1

I've not been writing enough blog posts in recent months, I need to get back on that.

24.10.2025 15:50 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a 3D model of a wall with detailed cutouts.  A stone wall panel with a repeating lattice of decorative cutouts.  The pattern consists of elongated oval shapes arranged horizontally, intersected at their centers by small circular openings.  These patterns repeat in a matrix across the surface, creating a perforated screen. Warm light glows from behind the wall, highlighting the depth of the carved openings and casting shadows through the pattern.  There is some Geoscript code visible on the bottom of the image which was part of that which generated the model in the scene.

A screenshot of a 3D model of a wall with detailed cutouts. A stone wall panel with a repeating lattice of decorative cutouts. The pattern consists of elongated oval shapes arranged horizontally, intersected at their centers by small circular openings. These patterns repeat in a matrix across the surface, creating a perforated screen. Warm light glows from behind the wall, highlighting the depth of the carved openings and casting shadows through the pattern. There is some Geoscript code visible on the bottom of the image which was part of that which generated the model in the scene.

A screenshot from the movie "Only God Forgives" showing the dimly lit profile of a character standing in front of an intricate cutout in a wall.  There is an orange light illuminating from behind that shows off the lattice of the cutouts.  The pattern consists of elongated oval shapes arranged horizontally, intersected at their centers by small circular openings.

A screenshot from the movie "Only God Forgives" showing the dimly lit profile of a character standing in front of an intricate cutout in a wall. There is an orange light illuminating from behind that shows off the lattice of the cutouts. The pattern consists of elongated oval shapes arranged horizontally, intersected at their centers by small circular openings.

A wall from "Only God Forgives"

3d.ameo.design/geotoy/edit/55

16.09.2025 06:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a 3D model of a pedestrian bridge rendered with Geotoy.  It shows a bridge with a green fence along either side and several large windows.  There is a text editor with code at the bottom.

A screenshot of a 3D model of a pedestrian bridge rendered with Geotoy. It shows a bridge with a green fence along either side and several large windows. There is a text editor with code at the bottom.

A screenshot from the Ghost in the Shell live action movie showing a pedestrian bridge.  The bridge is made of metal and painted white with large windows cut into its side and a green railing.  There are large highrise apartment buildings in the background.

A screenshot from the Ghost in the Shell live action movie showing a pedestrian bridge. The bridge is made of metal and painted white with large windows cut into its side and a green railing. There are large highrise apartment buildings in the background.

A pedestrian bridge from the Ghost in the Shell live action movie I built in Geotoy

3d.ameo.design/geotoy/edit/54

15.09.2025 06:44 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Geotoy Showcase + Demo
Geotoy Showcase + Demo YouTube video by CaseyC104

I recorded a little video giving a tour of my Geotoy project

www.youtube.com/watch?v=CtbX...

02.09.2025 18:21 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
The Tech Behind Geotoy

Wrote a little post this weekend about all the tech/tools/techniques that went into my Geotoy project

cprimozic.net/blog/the-tec...

18.08.2025 23:29 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I wrote up a post over the weekend about the whole process I used to get this working for anyone looking to do the same

cprimozic.net/notes/posts/...

04.08.2025 15:22 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a mesh rendered in Geotoy.  It looks like a sphere with some holes drilled in it that has been split in half sideways.

The sphere is textured with a debug texture showing UV coordinates across different parts of its surface

A screenshot of a mesh rendered in Geotoy. It looks like a sphere with some holes drilled in it that has been split in half sideways. The sphere is textured with a debug texture showing UV coordinates across different parts of its surface

After _much_ effort, I've gotten the boundary-first-flattening library compiling to WebAssembly (geometrycollective.github.io/boundary-fir...)

So now I can auto-unwrap UVs for meshes that triplanar mapping works badly for in Geotoy

03.08.2025 17:54 πŸ‘ 0 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1
A screenshot of the docs page for geoscript showing details about the `stitch_contours` function.  At the top of the docs for that function, there is an expanded example that shows some geoscript code on the left using the function and an image on the right representing the output of running that code.

Below the example, there are docs for the function including the function signature, argument names+types+default values, return type, and a description of each argument.

A screenshot of the docs page for geoscript showing details about the `stitch_contours` function. At the top of the docs for that function, there is an expanded example that shows some geoscript code on the left using the function and an image on the right representing the output of running that code. Below the example, there are docs for the function including the function signature, argument names+types+default values, return type, and a description of each argument.

I'm putting real effort into making the docs for geoscript/geotoy as high-quality as possible

I created these little inline examples that show the code and its output directly on the docs page

3d.ameo.design/geoscript/do...

25.07.2025 20:19 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
t+pazolite - Heartache Debug (feat. 血川ねね)
t+pazolite - Heartache Debug (feat. 血川ねね) YouTube video by t+pazolite

Re-discovered this absolute banger of a song today

www.youtube.com/watch?v=ajD9...

It's just so incredibly satisfying to listen to for some reason

25.07.2025 05:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

It's always so hard to call something "finished" but I'm making a lot of cool stuff with this already tbh

3d.ameo.design/geotoy

22.07.2025 23:35 πŸ‘ 2 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

It turns out that ipv6 being broken is so common that most browsers and other HTTP clients will try both ipv6 and ipv4 in parallel (or after a short delay) and just use whichever one works or connects first lol

16.07.2025 19:40 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
RFC 8305: Happy Eyeballs Version 2: Better Connectivity Using Concurrency Many communication protocols operating over the modern Internet use hostnames. These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristi...

TIL my webserver's ipv6 configuration has been broken since it got rebooted several weeks ago

But things have still been working even for ipv6 users thanks to the "Happy Eyeballs" algorithm from RFC 8305: datatracker.ietf.org/doc/html/rfc...

16.07.2025 19:40 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Screenshot of a web app showing a 3D model of what looks something like a bird bath rendered along with a code editor with some code in a functional-looking programming language.  There's a "run" button along with some stats about how long the code took to run, how many faces/vertices are in the mesh, etc.

Screenshot of a web app showing a 3D model of what looks something like a bird bath rendered along with a code editor with some code in a functional-looking programming language. There's a "run" button along with some stats about how long the code took to run, how many faces/vertices are in the mesh, etc.

Sneak peak of a project I've been working on recently

28.06.2025 23:14 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1
A photograph of some graffiti featuring text written in black on a white background. The text says "bro had the texture pack on". There's various other scribbles and illegible text surrounding that writing.

A photograph of some graffiti featuring text written in black on a white background. The text says "bro had the texture pack on". There's various other scribbles and illegible text surrounding that writing.

I think it was around Covid era when I first started seeing Internet culture show up in graffiti

I love it

01.06.2025 03:45 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Building Modular Audio Nodes in Web Audio An overview of the patterns I've developed for building modules for my browser-based DAW and audio synthesis tool. It outlines solutions for keeping state synchronized between threads, handling async...

Finished up a blog post I've been meaning to write for a while:

cprimozic.net/blog/buildin...

#webaudio

19.05.2025 05:20 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
Shadertoy

The authors shared a shadertoy with a working implementation already too shadertoy.com/view/MXyBDW

07.05.2025 20:43 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0