Dimforge Q3 2026 technical report: Nexus multiphysics, Rapier soft-bodies, performances, and C + python bindings
Dimforge 2026년 3분기 기술 보고서: Nexus 다중물리, Rapier 소프트 바디, 성능 개선과 C·Python 바인딩
Dimforge가 3분기 동안 Rust 물리 엔진 Nexus와 Rapier에 적용한 성능 개선, MPM·소프트 바디, 언어 바인딩을 정리했습니다. RTX 5080에서 Nexus는 강체 50만 5천 개를 약 14ms에 처리했고, Rapier는 병렬화 개편으로 기존보다 최대 4배 빨라졌다고 보고합니다.
- 주제
에디터 노트
Nexus의 수치상 성능 향상은 구체적이지만 적용 범위도 함께 제시합니다. 강체 50만 5천 개와 프레임당 약 14ms는 RTX 5080에서 sleeping islands 없이 얻은 결과이며, CUDA와 WebGPU의 10% 차이도 Linux와 해당 GPU에 한정됩니다. Physmark는 장면별 비교를 제공하지만, 일부 엔진의 시간 초과 측정값을 제외하고 Rapier 비교 그래프는 8월 초 버전을 사용했습니다. 따라서 보고서만으로 모든 작업에서 Nexus나 Rapier가 우세하다고 볼 수는 없습니다. 댓글은 유지관리자에게 감사를 전하고 nalgebra를 포함한 여러 crate의 관리 방식을 묻지만 성능 측정에 대한 검증이나 반박은 제시하지 않습니다. 이 보고서의 실용적 가치는 성능 주장뿐 아니라 solver, 지원 기능, 테스트 조건을 함께 공개한 데 있습니다.
AI 요약
Dimforge의 2026년 3분기 기술 보고서는 Rust로 개발한 GPU 물리 엔진 Nexus와 CPU 기반 물리 엔진 Rapier의 성능 개선 및 기능 추가를 다룹니다. 일부 작업은 3분기보다 먼저 시작했지만 해당 분기에 공개했습니다.
Nexus 성능과 물리 기능
Nexus v0.7.0은 수십만 개 강체를 처리할 때 성능 확장을 막던 병목을 없애고, solver의 메모리 배치와 접근 방식을 AoSoA(Array of Struct of Array) 구조에 맞게 개선했습니다. Rapier의 Twist-friction에 해당하는 접촉 마찰 모델도 적용해 일반적인 Coulomb 마찰보다 계산할 마찰 제약 수를 줄였습니다. Dimforge는 RTX 5080에서 강체 50만 5천 개로 쌓은 피라미드를 프레임당 약 14ms에 시뮬레이션했다고 보고합니다. 이 측정에는 아직 지원하지 않는 sleeping islands 최적화가 적용되지 않았습니다. 현재 solver는 Rapier와 같은 Soft-TGS이며 AVBD solver 지원을 계획하고 있습니다.
Nexus에는 비강체 재료를 위한 MPM(Material Point Method)도 추가했습니다. 입자와 계산 격자를 함께 쓰는 방식으로 2D·3D를 지원하며, MPM-MLS 기반 explicit solver와 탄성체, 모래, 눈, 액체, CPIC 사용 시 절단 모델을 구현했습니다. 현재 강체가 MPM 입자에 힘을 가하는 단방향 결합을 지원하고, 입자가 강체를 밀어내는 양방향 결합은 연말까지 추가할 계획입니다. 희소 격자를 사용해 큰 장면에서 메모리를 절약하며 실행 중 입자와 강체를 추가하거나 제거할 수 있습니다.
Nexus의 GPU shader는 Rust로 작성하고 rust-gpu, rust-cuda 또는 cuda-oxide로 컴파일합니다. Khal은 CUDA에서 지원하지 않는 간접 kernel dispatch를 shader 내부 반복문으로 변환해 처리합니다. Linux의 RTX 5080에서 CUDA backend는 WebGPU보다 약 10% 빨랐습니다. 같은 장면을 같은 기기에서 실행하면 같은 결과를 내는 결정성도 추가했지만, 서로 다른 기기나 GPU API 사이의 결과 일치까지 보장하지 않습니다. 결정성은 큰 강체 장면에서 성능을 약 10% 낮출 수 있습니다. 디버그 렌더링은 경계 상자, BVH, 접촉점, MPM 격자와 속도장을 보여주지만 성능에 큰 영향을 줄 수 있습니다.
Rapier 병렬화와 언어 바인딩
Rapier는 독립된 island를 병렬 처리하던 기존 방식에서 나아가 island 내부 병렬화, 지속형 graph coloring, 병렬 broad-phase를 적용했습니다. Dimforge가 M4 Max MacBook Pro의 worker thread 8개로 측정한 결과, 단일 스레드는 이전보다 최대 2배, 멀티스레드는 최대 4배 빨라졌습니다. 비교 그래프에 사용한 다른 물리 엔진의 버전은 2026년 8월 초 기준이므로 이후 성능 변경은 반영되지 않았다고 밝혔습니다.
Rapier는 탄성, 영구 변형을 뜻하는 plasticity, 찢어짐을 지원하는 변형체 기능도 추가했습니다. 변형체끼리 얽히는 등 퇴화 상태에 빠질 위험을 낮추는 방법도 마련했습니다. C 바인딩은 게임 엔진과 Rust·JavaScript 이외의 프로그램에서 Rapier를 연결하기 위한 것으로, C 예제와 테스트베드를 포함합니다. 3D Rapier의 Python 바인딩은 로보틱스 생태계를 겨냥하며 PyPI에서 배포합니다.
GPU 물리 벤치마크 Physmark
Physmark는 대규모 강체 시뮬레이션, 다수 환경을 병렬 처리하는 소규모 강체 시뮬레이션, MPM을 비교합니다. Nexus, Genesis, Newton, MJX, Isaac Sim의 GPU backend와 Rapier, MuJoCo의 CPU 실행을 다루며, 시뮬레이션 결과 영상도 보고서에서 재생해 동작을 확인할 수 있습니다. Dimforge는 일부 엔진에서 강체 수가 수백 개를 넘으면 합리적인 시간 안에 실행을 마치지 못해 해당 측정값을 제외했다고 설명합니다. Nexus의 성능은 비교 대상보다 빠르기도 느리기도 하므로 사용 사례에 맞춰 결과를 살펴보라고 덧붙였습니다.
Reddit 반응
- @sebcrozet — Rapier와 Nexus 및 nalgebra, kiss3d, parry 같은 Dimforge crate의 주요 유지관리자입니다. 무엇이든 물어보세요.
- @shonks1 — Rust 로보틱스 생태계를 위해 해주신 모든 작업에 정말 감사드립니다. 업무와 개인 프로젝트에서 crate를 늘 사용합니다. 예전에는 시간이 있을 때 개인 프로젝트에도 썼습니다.
- @StarryBubbly — 요즘 부수 프로젝트에서 nalgebra를 만지고 있습니다. 이 많은 crate를 어떻게 관리하시는지 궁금합니다.
원문: Dimforge 기술 보고서 / 번역·요약: Trawling