Changelog
v0.28.0
Released 2023-06-06
Additions:
- added
soft_body_flags::immobile_particles
Changes:
- improvement internal memory management performance
v0.27.1
Released 2023-06-02
Fixes:
- fixed triangle collision constraints not being generated correctly when a scene had multiple soft bodies
- fixed some log message typos
Changes:
- increased internal default buffer size for
stim::environment - downgraded id-related log messages from 'warning' to 'verbose'
v0.27.0
Released 2023-06-01
Fixes:
- fixed spurious assert when no position constraints are generated for a soft body
Removals:
- removed unnecessary UE4_COMPAT overloads in
mesh_reader
v0.26.1
Released 2023-05-29
Fixes:
- fixed regression when regenerating new cache binaries
v0.26.0
Released 2023-05-29
Fixes:
- fixed cache reader race condition
Changes:
- made all
stim::conversion operatorsresult explicit
v0.25.3
Released 2023-05-26
Additions:
- added diagnostics to detect dangling
stim::mesh_readersatstim::soft_bodydestruction
v0.25.2
Released 2023-05-24
Additions:
- added typedefs
scalar_typeandvector_typetoplane,bounding_box,bounding_sphere - added diagnostics to detect dangling
stim::simulationsatstim::destructionenvironment
v0.25.1
Released 2023-05-18
Fixes:
- fixed memory alignment bug in solver
Additions:
v0.25.0
Released 2023-05-10
Fixes:
- minor
simulation::update()performance fixes
Additions:
- enabled simple deletion-based cutting (experimental)
Changes:
- increased internal mesh triangle limit to 75000 (up from 25000)
v0.24.0
Released 2023-05-03
Fixes:
- fixed race condition in
stim::force_feedback_emitter - fixed incorrect behaviour when multiple
force_feedback_emittersare associated with a rigid body
Removals:
- removed
stim::setterrigid_body_handle:: flags()
v0.23.0
Released 2023-04-03
Additions:
v0.22.0
Released 2023-03-22
Additions:
- added
STIM_INJECT_MEMBERS_MESH_READER
Fixes:
- fixed spurious 'non-uniform scaling' errors for
set_transform()andset_substep_transform() - fixed collision test performance regression
v0.21.0
Released 2023-01-19
Fixes:
- fixed soft-bodies becoming pitted and misshapen around mesh edges
- fixed soft-body recovery from rigid-body collision being sloppy
Additions:
- added
debug_draw_groups::defaults - added
debug_ui_groups::defaults - added configuration switches for injecting member functions into some public API types:
STIM_INJECT_MEMBERS_BOUNDING_BOXSTIM_INJECT_MEMBERS_BOUNDING_SPHERESTIM_INJECT_MEMBERS_DURATIONSTIM_INJECT_MEMBERS_MATRIXSTIM_INJECT_MEMBERS_PLANESTIM_INJECT_MEMBERS_SPANSTIM_INJECT_MEMBERS_STRING_VIEWSTIM_INJECT_MEMBERS_VECTORSTIM_INJECT_MEMBERS_MESH_DESCRIPTION
v0.20.1
Released 2023-01-09
Fixes:
- fixed collision regression introduced in v0.20.0
v0.20.0
Released 2023-01-09
Additions:
- added
mesh_reader::max_index_count() - added
mesh_reader::max_vertex_count()
v0.19.1
Released 2022-12-15
Additions:
- added additional diagnostics to
add_object(force_feedback_emitter)
v0.19.0
Released 2022-12-13
Fixes:
- force-feedback emitter fixes
- fixed excessive sticking of soft bodies to rigid bodies in some circumstances
Additions:
- added
soft_body_flags::pin_in_place
v0.18.0
Released 2022-12-05
Fixes:
- fixed spurious assert
pt.z <= box_.tester.max.z
Additions:
- added
force_feedback_emitter_handle - added
force_feedback_emitter_description - added
force_feedback_emitter_flags - added
workspace_description - added
simulation_description::workspace - added
debug_draw_flags::bounding_spheres
Changes:
- ⚠️ re-ordered the members of
debug_draw_flagsfor future-proofing purposes
Removals:
- removed
rigid_body::force_feedback() - removed
simulation_description::workspaces
v0.17.0
Released 2022-10-19
Fixes:
- a bunch of minor bugfixes
Additions:
- added
object_constants::contact_distance - added
rigid_body_handle::flags()setter - added
stim::result::operator!
Changes:
- ⚠️ prohibited non-uniform scaling in transforms
- changed API of
rigid_body_handle::force_feedback()
v0.16.1
Released 2022-08-25
Fixes:
- fixed spurious assert in signed distance field
- fixed minor rigid-body collision edge-cases
- fixed debug ui race condition in memory pool
v0.16.0
Released 2022-08-24
Fixes:
- fixed potential crash during mesh optimization
- fixed potential deadlock during cached asset loading
- fixed multiple issues with scenes having more than one soft-bodies
Changes:
- improved rigid-soft collision contacts
- slightly increased vertex welding distance threshold
- minor performance improvements
v0.15.0
Released 2022-08-15
Fixes:
- fixed bend constraint debug draw indicators rendering inverted or at weird angles
- fixed errors and assertions when intersecting a rigid body with multiple soft-bodies
Additions:
- added
operator!forscalar_type - added internal support for UVs outside the range
[0, 1]
Changes:
- ⚠️ renamed
plane::ntoplane::normal - soft bodies now automatically do some triangle subdivision for extremely simple meshes
- soft-body
mesh_readerswill now have the same triangle winding order as their original source mesh - increased internal mesh complexity automatic simplification threshold to 25000 tris
v0.14.0
Released 2022-08-02
Fixes:
- fixed assert related to memory alignment in
memory_pool.cpp - fixed incorrect behaviour when zero-initializing an
object_to_worldmatrix
Additions:
- added
simulation_constants::units_per_meter - added
simulation_constants::defaults() - added
mesh_reader::operator() - added vector and span constructors to
mesh_vertices_channel_descriptionandmesh_indices_description - added
STIM_UE4_COMPATconstructors tomesh_vertices_channel_descriptionandmesh_indices_description - added vector and span overloads to
mesh_reader::read_XXXX() - added
STIM_UE4_COMPAToverloads tomesh_reader::read_XXXX() - added broadcast constructor to
vector - added
is_scalar_type<> - added
all_scalar_types<>
Changes:
- ⚠️ renamed
mesh_index_descriptiontomesh_indices_description - ⚠️ renamed
mesh_vertex_descriptiontomesh_vertices_description - ⚠️ renamed
mesh_vertex_channel_descriptiontomesh_vertices_channel_description - ⚠️ renamed
mesh_vertex_scalar_descriptiontomesh_vertices_scalar_description
v0.13.0
Released 2022-07-25
Fixes:
- fixed signed distance field generation issues for completely planar meshes
- fixed some spurious rigid-body collisions
Additions:
- added
object_constants::defaults()(docs) - added
mesh_reader::empty()(docs) - added
mesh_reader::has_uvs()(docs) - added a
mesh_readerusage example (docs)
Changes:
- ⚠️ renamed
soft_body_mesh_readerto simplymesh_reader - ⚠️
leftover_mesh_reader()no longer returns a null reader when the mesh is empty (callmesh_reader::empty()instead) leftover_mesh_reader()no longer requires the input mesh to remain alive after callingadd_object()- meshes are no longer required to have a
normalsvertex channel object_constantsdefaults should now be sensible in the general casemesh_readerand rigid body collision optimizations- binary size improvements
v0.12.0
Released 2022-07-13
Fixes
- fixed
leftover_mesh_reader()causing simulation start failures in some circumstances - fixed
leftover_mesh_reader()causing crashes when reading UVs in some circumstances - fixed spurious
assert(cached->asset.has_value())triggering in some circumstances - fixed various issues calculating bounding boxes for completely-planar meshes
- fixed rare double-load situation when reading from the asset cache
Additions:
- added
debug_draw_groups::axes - added additional
result<>constructors - added
simulation::debug_dump_profiler() - added
_svUDL operator forstring_view - added
_s,_ms,_us,_nsUDL operators forduration - added
max_solve_timeoptional parameter tosimulation::update - added log warning when simulation 'explodes'
- added global mesh simplification pass for all meshes with more than 12000 triangles (with a log warning)
Changes:
- ⚠️ greatly simplified
executor_interface - general improvements to
result<>API - changed
durationbacking type tolong long - reduced binary size of a number of cached assets
- general performance improvements
Deprecations & Removals:
- ⚠️ depecated
_ssvoperator - it will be removed in the next release! - removed internal max timestep limit
- removed
stim::andstim::api::type name prefixes from log messages
v0.11.0
Released 2022-06-27
Fixes:
- fixed spurious assertion during cutter initialization when no AABB was specified
Additions:
- added debug assertions to various public API functions
- added
string_view(const char*)constructor - added additional deduction guides for
result - added
rigid_body_flags::force_feedback - added
rigid_body_handle::flags() - added
rigid_body_handle::force_feedback() - added
soft_body_handle::flags() - added
volumetric_body_handle::flags()
Changes:
- improved rigid body collision performance
- made
result(bool)constructorexplicit - internal refactors to reduce binary size
v0.10.0
Released 2022-06-09
Fixes:
- lots of minor documentation fixes
Additions:
- added
STIM_UE4_COMPATinterop forspan<=>TArray,TArrayView - added array constructor for
span - added
span->const_spanimplicit conversion - added
front()andback()to non-voidspans
Changes:
- switched to new solver
Removals:
- removed
environment_description::id
v0.9.0
Released 2022-05-24
Fixes:
- fixed missing
#include <cstring>forstd::memcpy() - fixed
scalar_typealways assumingfloatwasfloat32,doublewasfloat64, et cetera
Additions:
- added
STIM_UE4_COMPATinterop formesh_descriptionand friends - added ability to set mesh scalar data by callback
- added
to_scalar_type<>for getting thescalar_typevalue corresponding to a real C++ type - added
to_real_type<>for getting the real C++ type corresponding to ascalar_typevalue
Changes:
- made instantiating
stim::mandatory (previously one would optionally be instantiated for you internally)environment
v0.8.3
Released 2022-05-13
Fixes:
- fixed environment/simulation creation failure not producing an error message
- fixed issues with Visual Studio Native Visualizer file
stim.natvis - minor documentation fixes
Additions:
- added
executor_interface::max_concurrencyconstant
v0.8.2
Released 2022-05-05
Fixes:
- fixed
STIM_UE4_COMPATcausing some constructors to be deleted
Removals:
- removed
debug_draw_groups::oriented_bounding_boxes(merged withdebug_draw_groups::bounding_boxes)
v0.8.1
Released 2022-04-08
Fixes:
- fixed compiler errors in
stim::when usingvector STIM_UE4_COMPAT - fixed compiler errors in UE4 caused by use of
__builtin_launder - fixed some members of
debug_ui_groupshaving the wrong values
Additions:
- added
STIM_UE4_COMPATfunctions forbounding_boxandplane - added a number of convenience functions to
bounding_box
v0.8.0
Released 2022-04-06
Additions:
- added non-zero check
operator bool()tovector,matrixandbounding_box - added
plane - added
cutter_description - added
rigid_body_description::cutter - added
debug_draw_groups::cutters - added basic arithmetic ops to
vector
Changes:
- made
XXXXX_description::meshmembers into pointers (rather than nested structs) - made
vectorandmatrixsingle-pointer constructors explicit - rearranged some description struct members for consistency
- renamed
matrixcolumn getter functions - workspaces that are completely contained by other workspaces will be ignored
Removals:
- removed
rigid_body_flags::cutter
v0.7.0
Released 2022-03-07
Fixes:
- fixed winding order not being among the set of changes reported by
soft_body_mesh_reader::changes() - fixed immobile rigid bodies and soft bodies being allowed outside of the workspace (now treated as an error)
- minor documentation fixes
Additions:
- added
duration - added
simulation::update()overload accepting aduration - added
mesh_vertex_scalar_description - added
soft_body_mesh_reader::winding_order() - added
soft_body_handle::leftover_mesh_reader() - added
mesh_traits::winding_orderflag
Changes:
- renamed
mesh_vertices_descriptiontomesh_vertex_description - renamed
mesh_indices_descriptiontomesh_index_description - mesh vertex inputs are now per-scalar (rather than per-channel) to better support SoA contexts
- soft bodies now discard mesh triangles that do not intersect the workspace
- lifted restriction preventing
soft_body_handle::leftover_mesh_reader()being called beforesimulation::start()
Removals:
- removed raw int/float
simulation::update()overloads - removed
soft_body_mesh_reader::read_differential_positions()
v0.6.0
Released 2022-02-07
Fixes:
- fixed soft-body mesh edges sometimes slowly floating over time
Additions:
- added
environment,environment_description,create_environment() - added
debug_interface::slider() - added
errorparameter tocache_interface::read_end() - added
errorparameter tocache_interface::write_end() - added
mesh_description::indexed() - added
mesh_description::triangle_count() - added
object_constants - added
rigid_body_description::constants - added
rigid_body_flags::immobile - added
simulation_description::workspaces(multi-workspace span instead of singlebounding_box) - added
soft_body_description::constants - added
soft_body_flags::mesh_simplification_(low|medium|high|disabled) - added
volumetric_body_description::constants - added ABI checks for enums
- added additional ABI checks for virtual interfaces
Changes:
- improved rigid-body <=> soft-body collision
- moved
buffer,log,cacheexecutorfromsimulation_descriptiontoenvironment_description - changed
simulation::descriptionto a pointer - renamed
debug_draw_flags::workspacetodebug_draw_flags::workspaces(plural)
Removals:
- removed
simulation_description::workspace
v0.5.0
Released 2021-12-11
Fixes:
- fixed more ABI stability corner-cases
- fixed some thread-safety issues
Additions:
- added new (significantly faster) solver
- added basic rigid-body collision
- added
simulation::create() - added
rigid_body_flags::high_resolution_sdf - added
STIM_STD_CHRONO_COMPAT - added ABI checks for virtual interfaces
- added ABI check for float endianness
- added
debug_ui_interface::colour_begin() - added
debug_ui_interface::colour_end() - added
debug_ui_interface::button() - added
debug_draw_groups::position_constraints - added
debug_draw_groups::stretch_constraints - added
debug_draw_groups::bend_constraints - added
debug_draw_groups::collision_constraints - added
debug_ui_groups::objects - added
debug_ui_groups::solver - added
operator==andoperator!=forSTIM_STD_STRING_(VIEW_)COMPAT - added
lib::check_abi()
Changes:
- renamed
executor_interface::enqueue()overloads toenqueue_one()andenqueue_many() - renamed
mesh_vertices_channel_descriptiontomesh_vertex_channel_description - renamed
mesh_data_typetoscalar_type - renamed
STIM_HALF_FLOAT_TYPEtoSTIM_FLOAT16_TYPE - removed
close_loopparameter fromdebug_draw_interface::draw_poly_line() - renamed
transformmembers to the more descriptiveobject_to_world
v0.4.0
Released 2021-17-08
Fixes:
- fixed some incomplete C++ compiler feature checks in
stim.h - fixed many ABI stability corner-cases using C ABI functions
Additions:
- added
stim::lib:: header_checksum() - added
stim::lib:: logging_categories() - added
stim::enum (empty for now)simulation_flags - added
stim::simulation_description:: flags - added
[[nodiscard]]to UE4 compat constructors - added
stim::debug_ui_interface:: canvas_draw_text() - added
stim::debug_ui_interface:: measure_text() - added
stim::debug_ui_interface:: value() - added
stim::example to docsdebug_ui_interface - added boolean constructor to
stim::result - added better support for aggregates in
stim::result - added version info to DLL builds
- added
STIM_VERSION_STRING
Changes:
- made
stim::movableresult<void> - renamed
stim::lib::has_logging()tostim::lib:: logging_enabled()
v0.3.0
Released 2021-21-05
Fixes:
- fixed lots of small documentation issues
Additions:
- added
soft_body_mesh_reader - added
debug_draw_interface::can_draw() - added mesh update code to example app
- added ability to call
debug_drawin parallel batches
Changes:
- removed explicit mesh IDs - these are now generated entirely dynamically
- made
mesh_vertices_channel_view::strideoptional - made
mesh_indices_view::strideoptional - split example application code into smaller files
- greatly improved debug build performance
v0.2.0
Released 2021-19-04
Fixes:
- fixed
stim::not being null-terminated in MSVClib:: compiler() - fixed
stim::being incorrectlib:: debug_build() - fixed
stim::maybe::error()erroneous assert
Additions:
- added
stim::mesh_winding_order - added
stim::lib:: git_branch() - added
stim::lib:: version() - added
stim::andsoft_body_flags stim::rigid_body_flags - added integrity validation to cache data reader and writer
- added additional library version and ABI checks
- added configurable macro
STIM_ASSERT - added support for integral mesh vertex channels
- added ability to return
-1fromstim::to explicitly indicate errorscache_interface:: read_begin() - added lots of UE4 compatibility builtins gated behind
STIM_UE4_COMPAT - added automatic
stim::mesh_description::idgeneration
Changes:
- changed the
stim::functions to usedebug_draw_interface vec3andspan<vec3> - changed
STIM_FLOAT16_TYPEconstraints to be less strict - renamed
stim::cache_interface::read()toread_chunk() - renamed
stim::cache_interface::write()towrite_chunk()
v0.1.0
Released 2021-31-03
- First internal release.