For large scenes, it may take multiple seconds (if not longer) for a geometry collection to show up in the external acceleration structure causing it to be ignored by movement sweep checks (and others). This is because the geometry collection relies on the internal -> external acceleration structure copy which may take awhile to complete. The single particle physics proxy (i.e. static meshes) will add itself manually to the external acceleration structure in FInitBodiesHelperBase::InitBodies via FChaosScene::AddActorsToScene_AssumesLocked.
#preflight 63bdbdadc45a2c81e01b5813
#rb vincent.robert
[CL 23634458 by michael bao in ue5-main branch]
- Reverted back set simulate physics to not remove all anchors and instead updated higher level code to do so at the cost of a conditional cast
#rb michael.bao
#jira UE-172346
#preflight 639a3a1bc16855964d257ac6
[CL 23520692 by cedric caillaud in ue5-main branch]
- avoid calling it over and over when components using the same asset are registered
- make creation of physics state faster
- make duplication of components faster
#rb brice.criswell
#preflight 63940c5fcf0e31f727516720
[CL 23499843 by cedric caillaud in ue5-main branch]
- Improved InitializeMaterials to be able to handle material list only made of external materials
- Added CollectionInstancedMeshFacade and update code using the attribute directly to use the facade instead
- Added new input / output to Geometry Collection Terminal node ( InstancedMeshes )
- Simplified FindOrAddAutoInstanceMesh methods
[FYI] jimmy.andrews
#rb none
#preflight 6389699c0e4613faeded4210
[CL 23370012 by cedric caillaud in ue5-main branch]
On local testing, average performance of the function went from 27ms to 11ms
- Changed UVs data layout in FGeometryCollectionConstantData to be an array of UVChannels instead of an array of vertices containing each multiple channels, this reduces allocations quite a lot
- Avoid memcpy by passing array by reference to BuildMeshSections
- Use batched parallelFor for copying bone colors and UVChannels
- Rewrite indices remap to be O(N + M) instead of O(N * M)
Most of the remaining cost is in copying the arrays now
Future work could include making a copy per thread ( but may have to keep allocation on the calling thread )
#rb jimmy.andrews, brice.criswell, Bryan Sefcik
#preflight 6387971f3377450900d27163
[CL 23340834 by cedric caillaud in ue5-main branch]
- Update code accessing the directa ttribute to use the facade
- Updated RemoveOnBreak dataflow node to use it too
#rb none
#preflight 637be8dae30d4388493b0d02
[CL 23229812 by cedric caillaud in ue5-main branch]
- Optimize managed array collection NumElement to only fetch once from the group map
- Make sure to skip IncrementSleepTimer and ImcrementBreakTimer method is GC is not broken yet
- Early out in RefreshEmbeddedGeometry if no examplar is present
- Optimize BuildGeometry to reduce cache missed when running too small batch across large number of threads ( 2.5 time perf boost )
#rb benn.gallagher
#preflight 637531c6953c19d43519551b
[CL 23166264 by cedric caillaud in ue5-main branch]
- Add a set clustered by transformed box
- Fix the set clustered functions to properly update the kinematic state of the parents
- Imporved the debug draw of connection graph to better see the node state when close
#rb none
#preflight 636dd14e953c19d435279592
[CL 23102242 by cedric caillaud in ue5-main branch]
* GeometryCollectionComponent.h - Most files are related to the removal of includes in this file. Removed 7 headers
- Moved GeometryCollectionDamagePropagationData in to its own file
- Changed COPY_ON_WRITE_ATTRIBUTE to be set in a way so implementations can be placed in cpp file.
- Moved some function implementations to cpp file
* Removed include in FieldSystemActor.h
* Removed include in FieldSystem.h
* Removed include in CommonUISettings.h
#preflight 636b325c376a9cd6a8818aae
#rb cedric.caillaud (for the actual changes, not additional includes and a couple include removals outside GeometryCollection)
[CL 23069399 by henrik karlsson in ue5-main branch]
- GetLocalBoudns
- GetDebugInfo : to get detailed info about the various collection and their arrays ( including estimated memory usage )
- SetAnchoredByIndex / SetAnchoredBybox now has a bAnchored boolean
#rb brice.criswell
#preflight
[CL 22958587 by cedric caillaud in ue5-main branch]
- Added a Proximity tool to Fracture Mode to visualize and change generation settings for GeometryCollection bone proximity.
- Added more user controls for how proximity is generated, including a "Convex Hull distance" method for deciding contact, which should help include connections that were missed by the default proximity detection method.
- Made proximity settings live on the GeometryCollection as (non-cooked) attributes, so proximity re-generates with the desired method after further fracturing/clustering.
- Added an option to automatically convert the proximity graph to a pre-computed connection graph used by simulation.
- Reduce redundant proximity calculations: Be more consistent in relying on FGeometryCollectionEdit to update proximity as needed, and call 'RequireProximity' instead of 'UpdateProximity' in cases where we expect a valid proximity may already be present.
#rb cedric.caillaud
#preflight 6356d21b0313c24974eea2f8
[CL 22735429 by Jimmy Andrews in ue5-main branch]
Limitations : Currently this requires the GC to be reset to recompute the list of instanciable meshes and their corresponding indices
Mitigation : this can be turned off using the following cvar : p.Chaos.GC.UseISMPool
#rb brice.criswell, Krzysztof.Narkowicz
#preflight 63519a8af92c325024c32137
[CL 22705192 by cedric caillaud in ue5-main branch]
- Make sure CLustersToRep is reset when the physics state is destroyed
- Initialize the Physics proxy ReplicationMode when we create the proxy instead of during InitializeComponent ( because Destroy/Create physics state can be called after it )
#rb brice.criswell, michael.forot
#preflight 6350d4f82337adbf42b08788
[CL 22670734 by cedric caillaud in ue5-main branch]