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_readers
atstim::soft_body
destruction
v0.25.2
Released 2023-05-24
Additions:
- added typedefs
scalar_type
andvector_type
toplane
,bounding_box
,bounding_sphere
- added diagnostics to detect dangling
stim::simulations
atstim::
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_emitters
are 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_BOX
STIM_INJECT_MEMBERS_BOUNDING_SPHERE
STIM_INJECT_MEMBERS_DURATION
STIM_INJECT_MEMBERS_MATRIX
STIM_INJECT_MEMBERS_PLANE
STIM_INJECT_MEMBERS_SPAN
STIM_INJECT_MEMBERS_STRING_VIEW
STIM_INJECT_MEMBERS_VECTOR
STIM_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_flags
for 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::n
toplane::normal
- soft bodies now automatically do some triangle subdivision for extremely simple meshes
- soft-body
mesh_readers
will 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_world
matrix
Additions:
- added
simulation_constants::units_per_meter
- added
simulation_constants::defaults()
- added
mesh_reader::operator()
- added vector and span constructors to
mesh_vertices_channel_description
andmesh_indices_description
- added
STIM_UE4_COMPAT
constructors tomesh_vertices_channel_description
andmesh_indices_description
- added vector and span overloads to
mesh_reader::read_XXXX()
- added
STIM_UE4_COMPAT
overloads tomesh_reader::read_XXXX()
- added broadcast constructor to
vector
- added
is_scalar_type<>
- added
all_scalar_types<>
Changes:
- ⚠️ renamed
mesh_index_description
tomesh_indices_description
- ⚠️ renamed
mesh_vertex_description
tomesh_vertices_description
- ⚠️ renamed
mesh_vertex_channel_description
tomesh_vertices_channel_description
- ⚠️ renamed
mesh_vertex_scalar_description
tomesh_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_reader
usage example (docs)
Changes:
- ⚠️ renamed
soft_body_mesh_reader
to 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
normals
vertex channel object_constants
defaults should now be sensible in the general casemesh_reader
and 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
_sv
UDL operator forstring_view
- added
_s
,_ms
,_us
,_ns
UDL operators forduration
- added
max_solve_time
optional 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
duration
backing type tolong long
- reduced binary size of a number of cached assets
- general performance improvements
Deprecations & Removals:
- ⚠️ depecated
_ssv
operator - 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_COMPAT
interop forspan
<=>TArray
,TArrayView
- added array constructor for
span
- added
span
->const_span
implicit 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_type
always assumingfloat
wasfloat32
,double
wasfloat64
, et cetera
Additions:
- added
STIM_UE4_COMPAT
interop formesh_description
and friends - added ability to set mesh scalar data by callback
- added
to_scalar_type<>
for getting thescalar_type
value corresponding to a real C++ type - added
to_real_type<>
for getting the real C++ type corresponding to ascalar_type
value
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_concurrency
constant
v0.8.2
Released 2022-05-05
Fixes:
- fixed
STIM_UE4_COMPAT
causing 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_groups
having the wrong values
Additions:
- added
STIM_UE4_COMPAT
functions forbounding_box
andplane
- added a number of convenience functions to
bounding_box
v0.8.0
Released 2022-04-06
Additions:
- added non-zero check
operator bool()
tovector
,matrix
andbounding_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::mesh
members into pointers (rather than nested structs) - made
vector
andmatrix
single-pointer constructors explicit - rearranged some description struct members for consistency
- renamed
matrix
column 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_order
flag
Changes:
- renamed
mesh_vertices_description
tomesh_vertex_description
- renamed
mesh_indices_description
tomesh_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
error
parameter tocache_interface::read_end()
- added
error
parameter 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
,cache
executor
fromsimulation_description
toenvironment_description
- changed
simulation::description
to a pointer - renamed
debug_draw_flags::workspace
todebug_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_description
tomesh_vertex_channel_description
- renamed
mesh_data_type
toscalar_type
- renamed
STIM_HALF_FLOAT_TYPE
toSTIM_FLOAT16_TYPE
- removed
close_loop
parameter fromdebug_draw_interface::draw_poly_line()
- renamed
transform
members 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_draw
in parallel batches
Changes:
- removed explicit mesh IDs - these are now generated entirely dynamically
- made
mesh_vertices_channel_view::stride
optional - made
mesh_indices_view::stride
optional - 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
-1
fromstim::
to explicitly indicate errorscache_interface:: read_begin() - added lots of UE4 compatibility builtins gated behind
STIM_UE4_COMPAT
- added automatic
stim::mesh_description::id
generation
Changes:
- changed the
stim::
functions to usedebug_draw_interface vec3
andspan<vec3>
- changed
STIM_FLOAT16_TYPE
constraints 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.