It's been 6 months since the last Alpha release of Simulant and it's now time for another! In fact this 6 monthly cycle has become an unintentional habit that I may as well continue!
So what's new since last time?
Well first let's look at the stats:
382 files changed, 12986 insertions(+), 7013 deletions(-)
That's a fair amount of code churn! Lots of deletions, lots more insertions, so what to do they add up to?
- Memory management for manual objects has moved to an improved pool system to reduce allocations and improve performance
- Brand new hierarchical material property system
- More consistent object management APIs
- Added a gprof compatible sampling profiler to the Dreamcast build
- Made Octree depth configurable in the Geom culler
- Reduced memory usage of Geoms
- Added a loose Quadree Geom culler
- Improved render queue performance
- Improved render queue ordering sequence
- Made "nameable" objects consistently use std::string for names, rather than unicode for reduced memory usage
- Added iterator classes for better and faster iteration of Simulant containers
- Moved to a new default vertex structure for better Dreamcast performance
- Update to latest GLdc on the Dreamcast
- UI widget rendering has been refactored for performance
- Added support for loading .wav audio files
- Implemented 3D positional audio
- Allow setting pitch, gain and reference distance for sound sources
- Conditionally generate mipmaps on the Dreamcast when possible
- Improved the performance of MD2 animations
- Renamed "ask_owner_for_destruction" to "destroy"
- Standardised on "clean_up" rather than "cleanup" across the API
- Fixed bugs with shininess in .obj model loading
- Started moving to a transactional API for asset manipulation
- Allow linking Pipelines to Scenes
- Fix wrong RAM usage being displayed in Windows
- Add a RAM usage graph to the stats panel
- Huge refactor of particle systems
- Allow specifying multiple materials for a mesh and selecting them per-Actor (multiple skins)
- Various controller mapping fixes
- Roll back to an earlier glibc on the automated builds for more portability
- Added support for integer packed normals
- Added support for unsigned byte vertex colours
- Added more utility functions (e.g. smoothstep)
- Allow controlling blending when loading meshes from file
- Improved the speed of font loading
- Improved the built-in font files
- Improved the performance of applying staged writes to the partitioner
- Switched to the frustum partitioner by default (spatial hash is still experimental)
- Build a debug release of Simulant for the Dreamcast on CI
- Fixed issues with Camera::unproject
- Many many other bug fixes and performance enhancements!
Massive massive thanks to @freakdave for his great contributions to this release. And also a shout out to @HaydenKow for generally being a great mentor, and everyone else on the Simulant Discord for generally being awesome!