If bAllowPerInstanceRemoval was set, an instance would be removed if the transform scale is 0 and readded when transform scale is valid. The process of removing it erases its custom instance data and there is no way to restore it when the instance is readded.
This CL makes a shadow copy of the custom instance data if bAllowPerInstanceRemoval is set which allows the process of readding the instance to also restore its custom instance data.
#changelist validated
#virtualized
[CL 31237346 by trapper mcferron in 5.4 branch]
This allows the actor containing the ISM components to have full control over the root transforms of each ISM for faster or customised processing.
#rb Cedric.Caillaud, Jeremy.Moore
[CL 29419013 by benn gallagher in ue5-main branch]
The behavior is controlled by r.ISMPool.ComponentKeepAlive.
The old free list behavior is still supported and is now controlled by r.ISMPool.ComponentRecycle.
Both cvars can be safely enabled/disabled at runtime for testing.
Note that keep alive will effectively override recycling if both are enabled, since no components are released to the recycling free list.
#rb Cedric.Cauillaud
[CL 28966562 by jeremy moore in ue5-main branch]
[FYI] bob.tellez
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL28695832
[FYI] Jeremy.Moore
Original CL Desc
-----------------------------------------------------------------
ISMPool changed to use the new ISM InstanceId permanant handles.
ISMPool can remove/re-add instances from the ISM depending on whether they are being updated with a zero transform.
This can help keep ISM GPUScene cost down in the case where we are hiding (now removing) many instances.
[CL 28699352 by jeremy moore in ue5-main branch]
[FYI] Jeremy.Moore
Original CL Desc
-----------------------------------------------------------------
ISMPool changed to use the new ISM InstanceId permanant handles.
ISMPool can remove/re-add instances from the ISM depending on whether they are being updated with a zero transform.
This can help keep ISM GPUScene cost down in the case where we are hiding (now removing) many instances.
[CL 28697470 by bob tellez in ue5-main branch]
ISMPool can remove/re-add instances from the ISM depending on whether they are being updated with a zero transform.
This can help keep ISM GPUScene cost down in the case where we are hiding (now removing) many instances.
[CL 28695869 by jeremy moore in ue5-main branch]
Enable ISM pooling by default so that spatially placed ISMs can be recycled easily when moving through a streaming world.
[CL 27044402 by jeremy moore in ue5-main branch]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds
[CL 26082269 by henrik karlsson in ue5-main branch]
ISMPool uses serialized version of the default primitive custom data to allow us to copy paste ISMPools for debugging.
ISMPool uses fast version of hash combine.
Expose ISMPool actors getter from ISMPool subsystem.
[CL 25886022 by jeremy moore in ue5-main branch]
- Optimize the ISM Pool to use the instance static mesh array API for passing transform , avoiding local array allocation
- avoid sorting the removal indices twice by using the new instance static mesh view
#rb jeremy.moore, benn.gallagher
#preflight 646eccdc4422ba05f44bb942
[CL 25633600 by cedric caillaud in ue5-main branch]