This fixes asserts that have been seen in the wild.
NOTE: This is a resubmission, with an additional fix to an assert the original change inadvertently caused.
#rb brian.karis
#jira UE-193405
[CL 28391367 by jamie hayes in ue5-main branch]
[FYI] jamie.hayes
Original CL Desc
-----------------------------------------------------------------
Add a check to the mesh simplifier to avoid collapsing an edge if it is shared by all triangles, thus causing all triangles in the cluster to be degenerate.
This fixes asserts that have been seen in the wild.
#rb brian.karis
#jira UE-193405
[CL 28359965 by jamie hayes in ue5-main branch]
Enabled by default. When disabled UVs are not lerped in the simplifier. This is useful when data stored in UVs isn't valid to interpolate, for example indexes.
Fixed long standing bug where locked boundary verts still would get attributes recalculated when taking part in an edge collapse. This results in them not matching when later merged with their neighbor, causing attribute discontinuities where they previously weren't. That will degrade further simplification, bloat vertex work, bloat vertex storage, and generally look worse.
Can reduce rendered vertex count by 14% and disk size by 3%.
#rb rune.stubbe, graham.wihlidal
#lockdown marc.audy
[CL 27715715 by Brian Karis in ue5-main branch]
Change consist of only forward declaration and additional includes
#preflight 63789c1de30d438849c48188
#rb none
[CL 23218412 by henrik karlsson in ue5-main branch]
-Linux doesn't compile because fopen_s is not a standard function
-Missing include for Math/RandomStream.h
#preflight skip
[FYI] juan.canada, brian.karis, graham.wihlidal
[CL 22260785 by rune stubbe in ue5-main branch]
This aims to preserve the surface area during simplification. If area is lost, open boundary edges of the mesh are dilated to compensate. This is useful for foliage that tends to thin out in the distance if not enabled.
Also include misc fixes:
Collapses that completely remove disjoint triangles have an error of the area of what was removed.
Would not alias 0 and -0 verts due to binary comparison.
#rb graham.wihlidal
#preflight 63349e32141f314ed601978d
#ushell-cherrypick of 22229630 by Brian.Karis
#preflight 6334c401f418a1071a35b4a4
[CL 22260505 by graham wihlidal in ue5-main branch]
Removed redundant private include paths from build.cs files.
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.
#jira
#preflight 631e281694758d0bf2ea1399
[CL 21960082 by bryan sefcik in ue5-main branch]
#rb brian.karis
#tests a/b tested on multiple platforms to make sure no perf or memory regression; sanity checked several static meshes to make sure auto calculated screensizes stayed similar
#ROBOMERGE-AUTHOR: jian.ru
#ROBOMERGE-SOURCE: CL 21045756 via CL 21045905 via CL 21045943
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21075377 by jian ru in ue5-main branch]
Change mesh simplifier settings to match closer to what they used to be to prevent large changes in LOD distances from ue4 to ue5.
#rb michal.valient
#jira UE-144622
#preflight 622bf219902b7ca699eb7c53
#ROBOMERGE-AUTHOR: brian.karis
#ROBOMERGE-SOURCE: CL 19378057 in //UE5/Release-5.0/... via CL 19379381
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19379859 by brian karis in ue5-main branch]
#jira UE-122078
#rb Andrew.Davidson, Colin.McGinley
#preflight standard build
#ROBOMERGE-AUTHOR: fred.kimberley
#ROBOMERGE-SOURCE: CL 18817999 in //UE5/Release-5.0/... via CL 18818012 via CL 18822871
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18824721 by fred kimberley in ue5-main branch]