1- The FExportMaterialProxy didn't give the proper static parameters for the materials instance. It always used those from the parent/master material.
2- The mesh description extracted from the static mesh component was sometimes invalid. This occurred when the mesh had an empty section as it first section. This resulted in a mesh with all its polygons being part of the first section when rendered for the proxy mesh.
Also renamed a variable in the create proxy mesh function since its previous name didn't make sense with what it is.
#jira UE-90322
#rb Sebastien.Lussier
#ROBOMERGE-SOURCE: CL 12234869 in //UE4/Release-4.25/... via CL 12234887
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v664-12234175)
[CL 12237471 by julien stjean in Main branch]
#rb none
#ROBOMERGE-OWNER: matt.kuhlenschmidt
#ROBOMERGE-AUTHOR: matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11382968 via CL 11382988 via CL 11382990
#ROBOMERGE-BOT: (v654-11333218)
[CL 11383722 by matt kuhlenschmidt in Main branch]
CL 10373564 by danny.couture
Optimize Material Baking (Phase 1)
- Introduce a mecanism to override the vertex/index buffer allocator used for dynamic meshes
- Avoid GDynamicMesh non-ticked pools build-up by using our own vertex/index buffer pool during baking
- Reduce reallocation and incurred soft page faults by reusing a single set of vertex/index buffers big enough for the biggest mesh
- Preemptively detect if smearing would result in monochrome texture to avoid useless work
- Shrink smeared monochrome textures during the baking process for huge memory savings
- Move UV smearing in worker threads to avoid blocking the game thread
- Required shaders are now built asynchronously
- Add progress bar for material baking
- 28m23 [at] 150 GB RAM -> 2m14s [at] 45 GB RAM for 6 channels [at] 512x512 when baking materials on ProxyLOD for DATASET-0008a with DDC empty
#rb Jurre.deBaare, Sebastien.Lussier
CL 10516258 by danny.couture
Optimize Material Baking (Phase 2)
- Implement pipelining with staging buffers to avoid GPU stalls when reading from render targets
- Reuse the same prepared FMeshBatch instead of rebuilding it for each draw pass
- Prepare the RenderItem in advance on other threads to reduce work on the game thread
- Move the staging surface copy out of the render thread
- Small vertex and index buffers are not reused to avoid dependency locks when mapping them
- Fix bug in Canvas Flush_RenderThread found while running HLOD rebuild commandlet on Fortnite
- Delete old and unused MaterialBakingModule.h from public files
- 4m44s -> 59s for baking 6 channel [at] 1024x1024 when baking materials on ProxyLOD for DATASET-0008a with shaders already compiled
- Time spent in Material Baking when rebuilding all HLOD on Apollo_POI_Large_HLOD (Phase 1 + 2 combined)
- 10m18s -> 2m36s for a first rebuild all in editor with no shaders in DDC (cold)
- 1m23s -> 20s for a second rebuild all in editor (warm)
#rb Jeremy.Moore, Sebastien.Lussier
CL 11135986 by sebastien.lussier
Optimized mesh merging
* Added DeletePolygons() & DeleteTriangles methods to FMeshDescription which rely on TSets<> instead of performing costly TArray::AddUnique() calls()
* Parallelized UV generation and avoided duplicate processing of the same mesh+lod pairs
* Optimized FMeshDescriptionOperations::GenerateUniqueUVsForStaticMesh()
* Goes from 100s to 10s in my test case
#rb danny.couture, jeanfrancois.dube, richard.talbotwatkin
#ROBOMERGE-OWNER: sebastien.lussier
#ROBOMERGE-AUTHOR: sebastien.lussier
#ROBOMERGE-SOURCE: CL 11206337 via CL 11206341 via CL 11206346
#ROBOMERGE-BOT: (v643-11205221)
[CL 11206493 by sebastien lussier in Main branch]
#rnx
#rb ben.ingram, zousar.shaker
#ROBOMERGE-SOURCE: CL 10996668 via CL 10996669 via CL 10996670
#ROBOMERGE-BOT: (v633-10983880)
[CL 10996671 by mickael gilabert in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870584 by ryan durand in Main branch]
Swap vertices in material baking when mesh is mirrored
#rb none
#ROBOMERGE-OWNER: sebastien.lussier
#ROBOMERGE-AUTHOR: sebastien.lussier
#ROBOMERGE-SOURCE: CL 10285512 via CL 10285513 via CL 10285514
#ROBOMERGE-BOT: (v591-10236483)
[CL 10285554 by sebastien lussier in Main branch]
Certain texture maps generated by merge actors would be red instead of greyscale
#rb rolando.caloca, uriel.doyon
#rnx
#ROBOMERGE-SOURCE: CL 10073049 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v574-10069753)
[CL 10073051 by sebastien lussier in Main branch]
Provided a path for building MeshDescriptions for static meshes at runtime, and supporting API.
Clarified use of attributes for static meshes; now some attributes may be considered optional.
Added FStaticMeshAttributes, used for fetching and registering all the attributes required by a static mesh.
Added Blueprint interface for building meshes.
Deprecated a number of existing APIs:
- FMeshDescription methods which referred explicitly to static mesh specific attributes
- StaticMesh attribute registration has been moved to FStaticMeshAttributes
#rb none
[CL 9123037 by Richard TalbotWatkin in Dev-Editor branch]
Stubbed out material instance implementation for now
Use the new interface in RVT parameter material expressions
#ROBOMERGE-SOURCE: CL 8556897 via CL 8562562
#ROBOMERGE-BOT: (v406-8472469)
[CL 8562734 by jeremy moore in Main branch]
#rb jeanfrancois.dube
#ROBOMERGE-SOURCE: CL 8362258 via CL 8364673 via CL 8368019
#ROBOMERGE-BOT: (v402-8361577)
[CL 8368177 by sebastien lussier in Main branch]
* Fixed stale materials in MaterialProxyPool
* Fixed memory leak
#jira UE-78913
[REVIEW] jeanfrancois.dube
[FYI] bryce.lumpkin
#ROBOMERGE-SOURCE: CL 8126046 via CL 8126053 via CL 8131826
#ROBOMERGE-BOT: (v401-8057353)
[CL 8156535 by sebastien lussier in Main branch]
[FYI] bryce.lumpkin
#ROBOMERGE-SOURCE: CL 7629383 via CL 7629384 via CL 7637104
#ROBOMERGE-BOT: (v372-7473910)
[CL 7637265 by sebastien lussier in Main branch]