Add insights profiling tags to RemeshMeshOp and FRemesher. Small optimizations to FRemesher::ProcessEdge(), which has surprising overhead for no-ops (ie edge is not modified).
Add FUniqueIndexSet, alternative to a TSet for constructing list of unique indices (eg when finding set of one-ring tris of a list of vertices). Generally more efficient, particularly for large sets.
Improve FSubRegionRemesher. Make VertexROI private, provide accessors and update usage sites. Optimize InitializeFromVertexROI(), which is an expensive part of dynamic mesh sculpting. Make FullSmoothPass_Buffer() compute in parallel.
ModelingTools:
Major refactor of DynamicMeshSculptTool to improve performance (2-4x improvement on large brush sizes on 1m triangle mesh). A single FSubRegionRemesher is now created and maintained for entire brush stroke, rather than recreating every stamp. This avoids the high cost of initialzing full-mesh constraint set, and allows re-use of various allocated memory buffers. Reorganize major sub-steps computed in a single brush-stamp tick to allow Async computation where possible. Replace some ROI TSets with FUniqueIndexSet. Instrument for Insights, remove old cycle counting.
#rb none
#rnx
#jira none
[CL 15215321 by Ryan Schmidt in ue5-main branch]
#rb none
#rnx
#ROBOMERGE-SOURCE: CL 12908995 via CL 12908996 via CL 12909001
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12909003 by ryan schmidt in Main branch]
Problem is that during remesh passes the affected triangle set can expand (due to splits/collapses on ROI boundary) and our tracking of it is not perfect. Remesher now tells ChangeTracker before it modifies an edge, rather than Sculpt tool trying to predict set of modified triangles up front.
In theory this allows for smaller changes, because often only a subset of triangles are modified. However ChangeTracker currently only emits modified vertices as part of modified triangles. So we still need to save the full triangle ROI. Made several MeshChangeTracker functions protected for now, because they cannot be used externally due to this limitation. Updated call sites to those functions (which were likely also buggy).
#rb jimmy.andrews
#rnx
#jira none
#ROBOMERGE-SOURCE: CL 12459928 in //UE4/Release-4.25/... via CL 12459930 via CL 12459991
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)
[CL 12460009 by ryan schmidt in Main branch]
#rb none
#rnx
#jira UE-83312
#ROBOMERGE-SOURCE: CL 10072043 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v574-10069753)
[CL 10072051 by ryan schmidt in Main branch]
ModelingTools: Fix Pinch and Flatten brushes. These brushes were being applied much too quickly and produced unstable/undesirable results.
#rb none
#jira UE-81676
#rnx
#ROBOMERGE-SOURCE: CL 9692306 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v538-9681622)
[CL 9692308 by ryan schmidt in Main branch]