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]
Reverse culling is expected to be set when all instances have mirrored transforms.
Putting the mirror in the component transform will correctly set the primitve flags for use by shaders.
[CL 26952481 by jeremy moore in ue5-main branch]
The value is used to modify ScreenSize stored in MeshElement/MeshRelevance.
Note that we keep the convention from it's use in HISM that smaller values drive higher LODs.
That's the same convention as with foliage.LODDistanceScale but the inverse of r.StaticMeshLODDistanceScale.
[CL 26484027 by jeremy moore 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]
This is a quick fix for a perf hot spot, but we can still improve the underlying ISM code here to avoid multiple transform inverts when updating multiple instances.
#preflight 646278c4aa3c584c0b07ea96
[CL 25479015 by jeremy moore in ue5-main branch]
Assume RemoveAtSwap in group removal so that we can do local remapping logic and remove the more expensive delegate callbacks.
#preflight 64397c6a211b661dc418651a
[CL 25050206 by jeremy moore in ue5-main branch]
This costs some memory but makes the cost of instance removal much cheaper. We no longer need to loop and scan multiple arrays to find our instance to rename.
Added a bit more commenting around the code.
#preflight 6438851d9566b61450a1c45e
[CL 25039201 by jeremy moore in ue5-main branch]
Add free list for ISMPool ISM component slots so that we can recycle them when the number of instances for a component becomes zero.
#preflight 642f0942427eda562650ef0b
[CL 24957562 by jeremy moore in ue5-main branch]
- Re-enable HISM by default for GeometryCollection proxy and leaf rendering
#rnx
#rb Cedric.Caillaud
#preflight 6419ff1e42618c85c40b6975
[CL 24740869 by kenzo terelst in ue5-main branch]
Also add a per component custom data which, if present, is added to all ISM pool instances that the component generates.
#preflight 6409444bcf5fe1e28c0e065c
[CL 24571716 by jeremy moore in ue5-main branch]
This gives a single HISM rebuild event instead of one for each instance added.
#preflight 6405fb733206d45d200c007a
[CL 24528554 by jeremy moore in ue5-main branch]