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 static mesh code does PSO precaching which calls Nanite::AuditMaterialsImp() which expects to find the correct override materials.
[CL 29198348 by jeremy moore in ue5-main branch]
This will not iterate over all instances to recalculate the bounds on every instance add/remove/transform update. But instead will maintain a conservative bounds that can only grow.
This is an optimization for the case where we might have very high instance counts causing the bounds calculation to become very expensive.
It's off by default, and controlled by SetUseConservativeBounds().
Even when the option is turned on for an ISM, we keep the existing behavior whenever the number of instances is below r.InstancedStaticMeshes.ConservativeBounds.Threshold
#rb Ola.Olsson,Kenzo.terelst
[CL 29034857 by jeremy moore 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]
The reason it can happen is due to a change in geometry collection build behavior that will be fixed.
This fix is to prevent crashes while that is worked on.
[CL 28649220 by jeremy moore in ue5-main branch]
- Also make sure the ISM Pool sub components are properly attached to the root component
#rb michael.bao, jeremy.moore, benn.gallagher
[CL 28483114 by cedric caillaud in ue5-main branch]