rubble

GPU rigid-body physics with destruction. One Slang solver (AVBD) is compiled to WGSL and runs here in your browser on WebGPU; the same source runs natively on Metal, wgpu and CUDA. Boxes, spheres, capsules, convex hulls, D6 joints, vehicles and fracture, with island sleeping.

Checking WebGPU…

Demos

ScenesBrick rings, walls, piles and columns up to 506k bodies; joints and ragdolls VehiclesDrive cars, tanks and motorcycles; break parts off (WASD, Space, B) Meteor gauntletA game: drive a street under a meteor shower; directed debris lands the wreckage around you, not on you (G toggles it) vibe-land garageAll seven of vibe-land's vehicles: buggy, trophy truck, rally car, monster truck, derby sedan, sprint car and a semi with its trailer Dune buggiesvibe-land's sand rail: lamps, seats, bumpers and wheels tear off when their mounts are overloaded Soft-body vehiclesNode–beam cars that crumple and tear (Rigs of Rods .truck import); wall, pole, side and head-on crash tests Fracture labShardwright houses and arches: shoot them, break bonds CCD gallery250 m/s balls vs thin walls, CCD off and on CharacterGPU capsule controller: stairs, slopes, platforms (WASD, Space) BulletsProjectiles piercing five walls TerrainHeightfield collider: thousands of bodies on editable hills, craters (C) Meteor impactDeformable terrain: GPU MPM sand digs a 300 m crater live at 1×; cross-section of the strata, a tracked ejecta parcel, then a truck in the baked crater Meteor runThird person behind a dune buggy at 120 Hz: meteors land beside and ahead of it, and it drives over the rims and blankets while the sand still moves (the ground is rebuilt from the sand each frame; only what is thrown flies as debris) Meteor run: surviveYou drive (keys, or touch on a phone); meteors land around you, beside, ahead and on your line, faster the longer you last, and you can drop your own anywhere you click or tap. Endless: craters you leave behind bake into the ground Meteor run: behind the scenesSlow motion, side by side: the engine's sand particles, parcels, region box and a cut, and the game view of the same moment BroadsideA Shardwright oak and pine galleon stern, every member split along its grain, shot apart by 24-pounder broadsides while the captain walks down the quarterdeck stairs (threshold fracture in the world API, stepped in Rust on WebGPU; offline film: record-broadside.mjs)

Legacy rubble scenes, on the new engine

The twelve 3D scenes of the original rubble web demo, rebuilt body for body (same sizes, masses, velocities and per-body friction), so the two engines can be compared on the same scenarios.

Pyramid136 boxes Stack10 dropped cubes Stack RatioCubes 1–8 m, equal mass Dynamic FrictionSliding boxes, μ 5 → 0 Static FrictionBoxes on a 30° ramp, μ 0.25 → 0.5 Scatter3k spheres, boxes and capsules Scatter Boxes4k random boxes Grid Boxes1.5k jittered cubes Slanted Grid3.2k cubes in leaning columns 10k Grid10,000 cubes 100k GridThe 10k grid ×10: 100,000 cubes (not in legacy) GroundOne box dropped EmptyNothing; the fixed per-step cost

Showcase scenes

Brick ring 110k110,441 bricks hit by a ball Wall smash2k bricks Box pile 32kRandom drop, settles to sleep Box columns 100kTall stacks Brick gables 506kHalf a million bodies (needs a fast GPU) JointsHinges, chains, motors, ragdolls Ragdoll pile 10k11k bodies, 10k D6 joints Traffic49 vehicles