Morten Vassvik
banner
vassvik.bsky.social
Morten Vassvik
@vassvik.bsky.social
Simulation and rendering nerd. Co-founder and CTO @JangaFX

Working on EmberGen and more.

Discord: vassvik @[email protected]
Pinned
Never to late for an introduction post, eh

Hi I'm Morten. I work at JangaFX, where I primarily work on EmberGen, but I occasionally work on our other tools as well.

I hope to eventually start posting more fluid sim and graphics content, hopefully even blogposts and some code too.
A colleague sent me this: www.youtube.com/watch?v=8jVo...

No further comments needed, it's **very** good.

I've seen some of his videos in the past, but I missed this one. Glad I saw it.
Pushing Simulation to the Limit to Find Order in Chaos
YouTube video by Drew's Campfire
www.youtube.com
February 3, 2026 at 1:39 PM
Working on documenting frustum grids, rebuilding it piece by piece with Claude based on an earlier version that unfortunately got mangled by overly aggressive self-review: gist.github.com/vassvik/1ed6...

Still quite a bit missing, but getting there
February 1, 2026 at 12:41 AM
Reposted by Morten Vassvik
One example that I explored today: Spherically distorted Frustum Grids gist.github.com/vassvik/6a14...

In the end it requires a bit of effort to get the documents sufficiently fully fleshed, but you can ask it to review itself, to various degrees of thoroughness, which works quite nicely.
January 30, 2026 at 9:30 PM
Spent about a week with Claude Code (Opus 4.5) now. Still sort of skeptical of any tangible benefits to its coding capabilities for any of the production work I do, but I have found some things that seem to work really nicely: Exploration, testing and analysis.
January 30, 2026 at 9:30 PM
Short conclusion of this Weekend project using Claude Code:

It currently feels like it's going to be more like this for the majority of people for at least the nearest future, butchering the lovely graphic from @mjwhansen.com:
January 26, 2026 at 9:21 AM
Played around a bit more with it today. Most of yesterday's wow factor is gone, and it's been almost a uniquely frustrating experience. Almost everything I tell it gets done wrong, and it keeps fumbling, and the lack of visual debugging is really frustrating
Spent some time today finally trying Claude Code (Opus 4.5). Tried to task it to make a simple 2D Stable Fluids implementation from scratch, which it truly fumbled no matter what suggestions I made to improve it. There should be lots of examples in its training data, so that was a but disappointing
January 24, 2026 at 4:02 PM
Spent some time today finally trying Claude Code (Opus 4.5). Tried to task it to make a simple 2D Stable Fluids implementation from scratch, which it truly fumbled no matter what suggestions I made to improve it. There should be lots of examples in its training data, so that was a but disappointing
January 23, 2026 at 10:09 PM
Current progress on my Bitonic sort obsession, compared against GPUSorting's OneSweep implementation (github.com/b0nes164/GPU...) as a reference

32-bit keys only. Tried to pick the best tuning parameters for the OneSweep reference to steelman the comparison

On my Blackwell Pro 5000 Mobile laptop
January 17, 2026 at 1:31 PM
Reposted by Morten Vassvik
I just released my video about the engine (and game) I've been working on.

The engine is based on dynamic SDFs, and the video describes how it works and what it makes possible.

Link in the reply!

This is my first YouTube video and it took forever - please repost!
January 6, 2026 at 7:53 PM
Reposted by Morten Vassvik
Introduction.
Since 2014 I've been using Excel to create math art. Post-processing in Krita.
December 5, 2024 at 1:42 PM
Found an interesting paper with an unexpected twist

www.semanticscholar.org/paper/On-the...
January 1, 2026 at 12:27 PM
"Welcome to the CUDA Core Compute Libraries (CCCL) where our mission is to make CUDA more delightful."

I've never been more upset than trying (and failing) to get one of the CUB examples to build

Massive failure of a trillion dollar company simply where it's a pain and a chore to use their thing
December 30, 2025 at 9:06 AM
Have recently been obsessed with (again) optimizing my "low-mid size" bitonic GPU sorter even more than it was.

The current state summerized in the images below for a 7900 XTX for the red team and a 4090 for the green team.

For once the former handedly beats the latter across the board!
December 23, 2025 at 9:41 PM
Nobody:
Me: I'm very proud of this 1µs optimization, it was definitely worth it to spend a day on it.
December 22, 2025 at 2:04 PM
Reposted by Morten Vassvik
-- JOB SEARCH POST/RT APPRECIATED --
Hello everyone!

I am available for work (full time position/internship) anywhere in the world with priority going to the EU, starting June 2026. 🧵
December 20, 2025 at 1:54 PM
Ever seen one of these, and wondered *why* they work? 🧵

This is a so-called Bitonic sorting network, and the illustrations show the two common ways to implement them. From an implementation point of view the two methods are effectively the same, so which one you pick just comes down to preference.
December 20, 2025 at 12:26 AM
Manually writing simple svg files for making illustrations turns out to be surprisingly simple and neat.

Getting motivated to do a full deep dive into Bitonic sorting networks and how to use them well on the GPU now. Maybe it'll happen over the christmas holidays.
December 19, 2025 at 1:53 PM
test
December 19, 2025 at 8:52 AM
It's roughly 4 years since I started to work on the 3D sparse fluid solver for what will ultimately become EmberGen 2.0.

A quick look at the current performance state of the solver.

A previous retrospective thread from a couple years ago on that other place: x.com/vassvik/stat...
x.com
December 10, 2025 at 1:37 PM
Reposted by Morten Vassvik
After nine years of development, meshoptimizer has reached its first major version, 1.0!

This release focuses on improvements in clusterization and simplification as well as stabilization. Here's a release announcement with more details on past, present and future; please RT!

meshoptimizer.org/v1
🐇 meshoptimizer v1.0
Mesh optimization library that makes meshes smaller and faster to render
meshoptimizer.org
December 8, 2025 at 4:56 PM
Final version for the 2D Morton decode functions. Fairly happy with the structure in general.

A 64-bit version should be easy enough to produce, by just using the 32-bit version twice and combining the results.
December 8, 2025 at 8:01 PM
I can't really recall the last time I actually read a paper/article for the sake of learning something, or for staying up to date, and I can barely muster the motivatation to skim new research papers even on topics I genuinely like.

Anything that isn't explicitly "mine" is really hard to focus on
December 5, 2025 at 11:37 PM
Reposted by Morten Vassvik
I've settled on using a simple utility that wraps D3D's SetStablePowerState to stabilize GPU clock rate when profiling using in-app timers.

This simple program does the trick:
github.com/milkru/gpu_c...

This should even work when profiling, e.g., WebGPU apps in browser!

[cont]
GitHub - milkru/gpu_clock_stabilizer: Simple GPU clock stabilizer for consistent profiling
Simple GPU clock stabilizer for consistent profiling - milkru/gpu_clock_stabilizer
github.com
December 4, 2025 at 5:52 PM
Some random Morton Code tricks:

If you've worked with Morton codes you've probably seen something like the this GLSL code to decode a Morton code, which end up at roughly 27 integer operations to generate the equivalent 2D position.

Code transcribed from fgiesen.wordpress.com/2009/12/13/d...
December 5, 2025 at 2:07 PM
New laptop arrived.

Curse of awful laptops broken?
November 7, 2025 at 2:26 PM