#vector #gamedev-physics #collision #gamedev #physics

thimni

efficient SDF collision without discretizatio, neural nets, or interval arithmetic

6 releases

Uses new Rust 2024

0.3.2 Sep 13, 2025
0.3.1 Jul 19, 2025
0.2.4 Jul 2, 2025
0.2.3 Jun 28, 2025

#137 in Simulation

Custom license

26KB
650 lines

thimni

crates.io Docs

a library for SDF collision

the core (and most likely novel) algorithm provides efficient SDF collision, whose memory usage does not scale with complexity of SDFs, by exploiting isotropy of hyperspheres

performance

benchmarked on i7-7700HQ

benchmark average speed
1000 random spheres colliding 5 milliseconds
100 random menger sponges colliding 100 milliseconds

features

  • can use any vector type implementing the Vector trait, with implementations for glam::Vec2 and glam::Vec3 provided
  • SDFs treated as black boxes (i.e. anything that takes a position, returns a number, and can be bounded by an AABB, can implement the SDF trait)
  • arbitrarily combined SDFs
  • binary collision between arbitrary SDFs of the same dimension
  • monte carlo penertration depth approximation
  • raycasting

the core algorithm

this devlog contains details on how the core algorithm works

DEMO

this devlog contains a link to a demo i made for this algorithm, consisting of a destructable fractal and a capsule representing the player.

Dependencies

~7MB
~202K SLoC