← Back to ProjectsSoftware2026 – Present

[ Crush ]

GPU-autonomous physics engine for solid matter lifecycle simulation

Crush builds on the MPM–FEM coupling introduced by Li et al. (SIGGRAPH 2024), replacing their scheduler-arbitrated approach with a fully deterministic, sequential pipeline. Where the Dynamic Duo has MPM and FEM contending for time through a scheduler, Crush orders them as fixed stages in a single GPU-owned loop improving determinism, integrating physics-based materials, raising internal parametric fidelity, and refining collision detection.

Architecture

The CPU dispatches all object data once at initialization. From that point, the GPU owns the physics. The GPU receives objects into the world and idles until an event triggers the loop. SDF collision detect runs first, sampling signed distance fields via trilinear lookup in body-local space to identify collisions or movement; this is one of the exactly two stages that can issue a CPU interrupt. When contact is found, MPM inertial frames are notified, establishing reference frames for affected objects and handling inter-body momentum transfer, friction, and contact using fixed-point i32 atomics for P2G scatter. FE stress is then computed from PBM64, a 64-property material vector (256 bytes per body, GPU-resident) where every physics domain reads what it needs and writes what it computes in-place, no CPU round-trips. Heating steel past its Curie temperature kills its magnetization; corroding iron increases porosity and weakens tensile strength until fracture toughness is exceeded. The material evolves under physical law.

Next, NURBS topology distortion is evaluated: each FE node is a trivariate NURBS control point, resolving intra-body stress with C² continuity under a Stable Neo-Hookean constitutive model deriving Lamé parameters from PBM64. If the metric tensor degenerates (det(G)/det(G_rest) collapses toward zero), mesh singularity is reached: fracture tears the mesh via Boehm knot insertion and control point splitting, a crack native to the NURBS basis with no remeshing. Fragments become new objects with their own MPM frames, post-mortem state writes to a shared buffer, and a CPU interrupt registers the new bodies. Small debris demotes to bare MPM particles: no FEM interior, just mass and momentum.

The SDF is then recalculated for the updated collision geometry. Metadata is written to buffer, persisting object state. Finally, if the deformation rate Δ falls below 1% for long enough, the body enters sleep; indirect dispatch counts go to zero, costing nothing, with near-infinite structural life. Otherwise, the loop continues from GPU receive & idle.

Currently at ~16μs/iteration with 2 bodies. MPM pipeline, fracture detection/execution, event-driven idle, chemistry/thermal pass, and timeline semaphore async output are not yet implemented.

Demonstrating pure GPU-resident SDF operations, including collision. The red dot indicates a high-performance Vulkan timeline semaphore interrupting the CPU.

Technologies

RustVulkanGPU ComputeMPMIsogeometric AnalysisNURBS-FEM