Dissolve any mesh into a swarm of something else. A front sweeps across your object, its
surface peels off as real textured fragments, and each fragment turns into a creature that flies
away — bats, butterflies, birds, moths, flies, ash, embers, cards, petals, leaves, feathers or
cubes. One component, any mesh, any pipeline.
The swarm wears your object's colours. Every fragment samples the albedo at the exact spot it
was cut from, and the creature born there keeps it. A bat that peels off an orange panel is an
orange bat; a petal from a blue tile is a blue petal. That single detail is what makes the effect
read as *your object dissolving* rather than a particle system playing nearby.
Real mesh fragments, not a shader trick. The surface is cut into up to 5000 pieces of roughly
equal area, each keeping your original UVs, normals and tangents. At rest the fragment mesh *is*
your object — the swap when the effect starts is invisible. The pieces then fly as rigid bodies
with lift, push, spin, spread and gravity, casting and receiving shadows like any other geometry.
Nothing in your project changes. No shader is replaced, no material is touched, no render
feature is installed. The fragments are drawn with your object's own materials; the swarm and the
bursts are drawn with each pipeline's own standard shaders. There is no Shader Graph, no custom
lighting shader, no compute shader and no VFX Graph in the package — which is also why nothing can
be stripped out of your player build.
Six fronts. Bottom-up, top-down, sideways, a radial wave from any world point (click the
object and it dissolves from where you clicked), fully random, or two octaves of noise that make
blotches let go at once — the closest thing to burning without a texture. Jitter roughens the
edge; the front's crossing time is one dial.
Three conversions. *Swap* scales the piece away as the creature grows in. *Flash* adds a
camera-facing additive burst at the moment of the change. *Flip* turns the piece edge-on about its
own axis and the creature finishes the turn. Flat kinds squash the piece onto its own plane first,
so a chunk of mesh never simply shrinks into a petal.
Twelve kinds, each with its own laws. Bats cruise in a rising swirl and retarget every tenth
of a second, wings beating on two hinges. Cards spin about their normal, fall broadside-slow,
glide toward the lower edge, bounce once and settle flat. Ash rides hot air and cools from ember
to grey. Cubes bounce and settle onto the face nearest the ground. Petals breathe their cup in a
vortex. Butterflies arc, birds climb away, flies boil, embers streak and cool, leaves and feathers
rock down. Nothing is a re-skin: every kind is a separate set of birth, move, deform and tint laws.
Add your own kind without touching the core. A kind is two assets — a SwarmBehaviour you
subclass and a SwarmKind that carries the shape, the material and the flags. Or drop in your own
low-poly mesh as the silhouette and keep the laws. The whole kind system is open by design.
Size-independent presets. Every tuned constant is written in U = source radius / 70, so the
same recipe looks the same on a coffee cup and on a cathedral. Fragment size, creature size and
every speed scale with the object automatically.
Deterministic and Timeline-friendly. One seed always produces the same cut and the same
flight, so a recorded shot can be re-recorded frame for frame. SetProgress(0..1) scrubs the whole
run, Step(dt) advances it by hand, and FragmentConverted and Completed events hook up sounds,
decals and gameplay.
Reassemble and teleport. Point the swarm at another object and it flies across, lands on that
object's surface points and rebuilds it — the whole effect run backwards. The destination is
genuinely absent until the swarm arrives. One of the four sample scenes does exactly that.
Built for real frame budgets. The simulation is CPU-side and the whole effect is baked into
three ordinary meshes per frame. Cost is proportional to the pieces actually in flight — resting
and finished pieces cost nothing — rigid kinds skip the per-vertex deform entirely, and there is
no per-frame allocation after the first run.
In the box
• The Disintegrator component, the DissolveRecipe and SwarmKind assets, and the setup wizard
• 12 swarm kinds with 12 behaviour assets and 14 tuned recipes
• ClickToDissolve, TransformRelay and an orbit camera for the samples
• Four sample scenes: a lit studio, a night studio, a dressed courtyard with click-to-dissolve, and an object-to-object transform
• A manual, a changelog, third-party notices and package preflight checks
Requirements and notes
• Unity 6000.3.21f1 or newer; Built-in, URP 17.3 and HDRP 17.3
• Source meshes must have Read/Write enabled in their import settings
• Run Window > Disintegrator > Setup once per project, and again after switching pipeline
• The source is snapshotted when the effect starts; a mesh that keeps animating is not followed
• Creatures do not collide with each other or with scene geometry; landing kinds settle on one
ground plane