Skip to content

0.7.0

Latest
Compare
Choose a tag to compare
@kadir014 kadir014 released this 04 Jan 21:14
· 45 commits to main since this release

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 and nvEnum 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.

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.
  • 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