0.7.0
Happy late new year! π₯³
Nova Physics is back with a massive optimization update!
Highlights π
- Collision detection optimizations.
- AABB caching.
- Polygon transformed vertices caching.
- SIMD enhancements.
- Nova now uses AVX operations for integrating velocities & positions. Even though this might not have a huge impact on the overall performance, it's a start for vectorizing all simulation components!
- Multi-threading!
- A very experimental module that utilizes OS-threads to schedule tasks. This is only used to parallelize SHG for now.
- This is pretty inconsistent on Linux.
- Huge API changes.
- Now the whole codebase uses
nvStruct
andnvEnum
namings for every struct and enum. - Helper functions for body creation is now gone. You have to create shapes manually and pass them. Although, there is new better shape API.
- Now the whole codebase uses
Fixes
- Fixed the bug where attractive forces behaved differently with substeps.
- Fixed platform error messages in build script.
- All broad-phase warnings are gone.
- Fixed Fedora segfault in exampel demos.
Changelog
- Improved constraints API for expandability.
- New constraint: Hinge joint.
- Added descriptions in
constants.h
(and few new constants). nvBody_reset_velocities
method for clearing body's velocities.nvArray_clear
method.- Tracy profiler support.
- Build with
--enable-tracy
argument to start profiling with Tracy.
- Build with
- Renamed
nvBroadPhaseAlg_...
enum for readability. - New polygon functions:
- Convex hull generation now uses Graham Scan algorithm. Which should be faster than the previous Gift Wrapping implementation.
- Winding order function.
- Build system is rewritten.
- Object file caching for faster compilation times.
- Better dependency management.
- Better CLI and argument parsing.
- Animated progress bar for downloading dependencies.
- Better and more extendible compiler support.
--target=...
argument for targeting a specific compiler.--no-profiler
argument for disabling built-in profiler.--no-simd
argument for disabling usage of SIMD intrinsics.- It is now possible to build & run unit tests.
- Example system reworked.
- Now all examples demos can be viewed from the same window.
- Each example demo has its own settings.
- Code should be easier to read and extend.
- Benchmark base refactored.
Full changelog: 0.6.0...0.7.0