Box3D aplica SIMD a la detección de colisiones con cascos convexos complejos

Fuentes: SIMD for Collision

El motor de física Box3D incorpora optimizaciones SIMD (instrucciones vectoriales) en su algoritmo de detección de colisiones para reducir el coste del test de ejes de separación (SAT) entre cascos convexos en tres dimensiones. El autor parte de una técnica previa de SIMD "ancho" usada en el solver de contactos, que ahora extiende a la fase estrecha de colisiones. Mientras los pares caja-caja apenas se benefician, los cascos con muchos bordes —como el hull de 32 vértices y 89 aristas usado en el benchmark "boulder"— ven mejoras muy marcadas: las combinaciones arista-arista crecen de forma cuadrática (7921 tests en boulder-boulder frente a 144 en box-box).

Para aprovechar SIMD los datos se reorganizan en formato Structure of Arrays (SoA), de modo que una arista del hull A se prueba contra cuatro aristas del hull B en paralelo. Los benchmarks en un AMD 7950x a 4,42 GHz muestran que SSE2 es más del doble de rápido que la versión escalar en toda la simulación: por ejemplo, con 8 hilos el tiempo baja de 5292 ms a 2410 ms. Activar simplemente el flag de arquitectura AVX2 aporta una ganancia adicional (2277 ms con 8 hilos), sin necesidad de reescribir el código con intrínsecos AVX2. La técnica no sustituye al SAT tradicional, sino que acelera su bucle interno de tests cruzados, y resulta especialmente útil en escenarios con destrucción o geometría convexa compleja.