
Rust 게임 엔진 Bevy용 2D·3D 물리 엔진 Avian 0.8이 출시됐다. Bevy 0.20을 지원하며, 빠르게 움직이는 물체의 충돌 감지와 대규모 장면의 생성 성능을 개선했다.
Avian 0.8에서는 빠른 동적 물체에 대한 스윕 기반 연속 충돌 감지(CCD)가 기본 활성화된다. 기존의 무제한 추측 충돌 방식에서 발생하던 유령 충돌을 줄이도록 알고리즘을 바꿨으며, 이 방식은 SpeculativeCcd 구성 요소를 추가해 선택적으로 사용할 수 있다. 제작자는 두 빠른 물체 사이의 CCD나 시간 손실 문제를 줄이는 데 추측 충돌이 도움이 될 수 있지만, 유령 충돌 같은 기존 문제도 있다고 설명했다.
접촉 재활용 기능은 물체 간 상대 움직임이 충분히 작을 때 접촉점과 법선을 다음 시뮬레이션 단계에서도 재사용한다. 제작자에 따르면 충돌이 많은 장면의 성능과 쌓인 물체의 안정성을 높인다. 또 f64 기능은 물체 위치 등 월드 좌표에만 배정밀도를 사용하도록 바뀌었다. 그 밖의 API와 내부 계산은 단정밀도를 사용하며, 기존 f32 기능은 제거됐다.
제작자가 PR #1049에서 측정한 물체 생성 시간은 다음과 같다. 이후 더 개선됐을 가능성이 있다고 밝혔으므로 측정 시점의 결과로 봐야 한다.
| 물체 수 | Avian 0.7 | Avian 0.8 | 성능 향상 |
|---|---|---|---|
| 50k | 1.39 s | 0.149 s | 9.4x |
| 100k | 5.09 s | 0.306 s | 16.6x |
| 200k | 19.48 s | 0.634 s | 30.7x |
| 1M | - | 3.7 s | - |
SpatialQuery의 광선·형상 질의 결과를 디버그 렌더링으로 확인하는 기능도 추가됐다. 자세한 변경 사항과 마이그레이션 안내는 Avian 0.8 릴리스 노트에서 확인할 수 있다. 저장소와 Bevy 0.20 안내도 참고할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요