Mykhailo Moroz's Avatar

Mykhailo Moroz

@michael-moroz.bsky.social

Love physics simulations and rendering algorithms. Currently work at ZibraAI as Lead 3D Research Engineer. Discord: misha.m. michaelmoroz.github.io/about/

360 Followers  |  222 Following  |  62 Posts  |  Joined: 30.11.2024
Posts Following

Posts by Mykhailo Moroz (@michael-moroz.bsky.social)

Video thumbnail

Figured out a proper Gaussian Splat -> #VRChat workflow using free software and @michael-moroz.bsky.social's implementation. I'm really happy with the result!

I made a tutorial on my blog if anyone wants to scan the world and create VRChat maps from it!

blog.monsy.monster/gaussian-spl...

18.02.2026 20:50 โ€” ๐Ÿ‘ 8    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Nanite Tessellation Nanite Tessellation, aka Nanite Dynamic Tessellation, aka Nanite Dynamic Displacement was the next major feature I worked on after Nanite it...

I'm finally writing up how Nanite Tessellation works. The first few blogs posts are up. More will be coming.
graphicrants.blogspot.com/2026/02/nani...

02.02.2026 02:40 โ€” ๐Ÿ‘ 160    ๐Ÿ” 51    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Post image

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!

06.01.2026 19:53 โ€” ๐Ÿ‘ 265    ๐Ÿ” 51    ๐Ÿ’ฌ 13    ๐Ÿ“Œ 2
Post image

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.

20.12.2025 00:24 โ€” ๐Ÿ‘ 39    ๐Ÿ” 10    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

I might make a new blog post on this, but that will take time ๐Ÿ˜ช

03.12.2025 04:19 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Of course, it has a drawback since its much noisier than RT (but is it a drawback really?), and is much less suited for a gas simulation due to using whole integer particle masses, so they cant fill all space properly.

03.12.2025 04:19 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

An additional bonus is that since the masses are uints, as long as it doesn't overflow the counter the mass / particle count is preserved exactly. While in reintegration tracking it would have been lost with time due to float imprecision.

03.12.2025 04:19 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Reintegration tracking In this blog post Iโ€™ll explain this advection algorithm and how to use it to make advanced fluid simulations like the ones I made, including Paint streams and Everflow. Before starting, I should give ...

I like this approach significantly more compared to michaelmoroz.github.io/Reintegratio... since without much velocity averaging this can actually preserve angular momentum significantly better. Not to mention the you get subpixel details without aliasing due to the grid.

03.12.2025 04:19 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

As long as the particle density is lower than 1.0 particle per cell, you are guaranteed that no resampling happens, which means it will behave exactly like a normal SPH (or anything else) particle sim.

03.12.2025 04:19 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

You could also call this particle resampling cellular automaton, i.e. it tries to resample the actual particle count to keep it lower than the max 2 per grid cell (so that a grid only simulation is possible)

03.12.2025 04:19 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

Decided to go back to making Shadertoy fluid sims for for a bit.
This time I improved my particle clustering cellular automaton SPH fluid sim to support multiple species particle merging and splitting. Also some fine tuning of the physics.
shadertoy.com/view/tfyyWD

03.12.2025 04:19 โ€” ๐Ÿ‘ 37    ๐Ÿ” 7    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

I am making clouds for @skipsy.ca's new VRChat world. The clouds render faster than the mountains lol

#VRChat

08.11.2025 20:49 โ€” ๐Ÿ‘ 44    ๐Ÿ” 11    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Visualizing General Relativity When thinking about renders of things like warp drives and black holes we usually just expect to see a simple approximation or an artist rendition, assuming the math required to pull off something acc...

Gonna add my own 2 coins
michaelmoroz.github.io/TracingGeode...
www.shadertoy.com/view/ftBGWm
rantonels.github.io/starless/

11.09.2025 20:02 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Yeah I was aware of iResolution, I just never used the z component, but I guess I should still add it for compatibility.
Mouse zw has no equivalent in Compute toys, so that needs to be added in the first place.
Texture mipmaps for the pass-in/out buffers are not computed unfortunately

20.05.2025 13:51 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Of course there are still some minor differences:
* matrix multiplications are not a*b but mul(a,b)
* no GLSL texture types like sample2D / etc
* there are no "Shadertoy" channels, you need to resetup them to use absolute indices of the pass_in/out buffer

11.05.2025 14:37 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

Slang can be made extremely close to GLSL/Shadertoy style of shaders by using a set of defines and typealiases, I've made a template in compute.toyts just for that compute.toys/view/1947
I also ported my most popular shadertoy using it:
compute.toys/view/1948

11.05.2025 14:37 โ€” ๐Ÿ‘ 24    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

Compute.toys finally got the Slang compiler integrated, which means its finally time to ditch WGSL ๐ŸŽ‰๐ŸŽ‰
I've ported my FFT to it, coding in it is much nicer. compute.toys/view/1922
Should try something with its autodiff next.

05.05.2025 14:24 โ€” ๐Ÿ‘ 20    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Faster Mixed Radix FFT Forked from https://compute.toys/view/1914 Faster version

Made a mixed radix FFT implementation in compute.toys/view/1915
It is neat, but I still wonder how do you properly handle large prime factor size FFT's?

03.05.2025 14:37 โ€” ๐Ÿ‘ 17    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I mean its just SPH, its not *that* difficult

24.04.2025 10:55 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

No, its written by me, that's why I can not answer your question easily.

24.04.2025 10:50 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

uhhhm, shadertoy?

24.04.2025 10:42 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The answer to this will require a whole new blog post I'm afraid...

24.04.2025 10:38 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Shadertoy

I've also tested out using it for nontrilinear stuff as well as volumetric integration
shadertoy.com/view/w3sXzf
shadertoy.com/view/t3sXzX
shadertoy.com/view/t3lSzf

23.04.2025 15:44 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

I've ported my vrchat isosurface ray tracer to shadertoy and added it to my fluid simulation there.
Its probably the fastest multibounce ray tracing for liquids I've made thus far.
shadertoy.com/view/w3sXzs

23.04.2025 15:44 โ€” ๐Ÿ‘ 19    ๐Ÿ” 2    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
Shadertoy

I posted my own implementation of the trilinear isosurface intersection on shadertoy
2 methods, one is the one from jcgt.org/published/00... and the other one is my own idea of using 4 trilinear samples (can use HW samplers here) to reconstruct the cubic.

www.shadertoy.com/view/WXS3Rm

06.04.2025 17:55 โ€” ๐Ÿ‘ 9    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Managed to get Nvidia Flow (PhysX) to compile and run, after initially failing the other week. Was curious for a quick peek now that it's been open sourced (github.com/NVIDIA-Omniv...)

Flow itself isn't CUDA based, but instead uses compute shaders

Some higher level observations in the replies 1/?

06.04.2025 12:40 โ€” ๐Ÿ‘ 34    ๐Ÿ” 7    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I've also finally implemented sorting of the simulation particles, gave quite a nice performance boost (around
3-4x)

04.04.2025 19:32 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

till surprising to me just how fast this turned out to work, my older attempts at ray tracing density isosurfaces were horrifyingly slow, and on top of that less accurate too, as it was just constant step ray marching.

04.04.2025 19:32 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The paper was about tracing SDFs but you can apply it to any isosurface of an interpolated 3D volume, like the liquid density.

04.04.2025 19:32 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The Nvidia paper from above also shows how to optimize those intersections quite significantly, giving a fast way to get the coefficients of the cubic as well as how to solve it quickly (would be great if it wasn't patented by Nvidia tho heh...)

04.04.2025 19:32 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0