This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
Primary goal is to reduce amount of code duplicated across different parameter types, and reduce amount of boilerplate required to add new parameters
The main part are new types FMaterialParameterValue, and FMaterialParameterMetadata (both in MaterialTypes.h). FMaterialParameterValue is a tagged union/variant type, that can represent any material parameter value. FMaterialParameterMetadata contains a value, along with various editor-only fields that describe how that value is used.
Using this new type, many places that previously included separate APIs for each parameter type collapse to a single API that operates on a FMaterialParameterValue/FMaterialParameterMetadata. Code that previously had a block copy/pasted for each parameter type can be replaced with a loop that iterates over all parameter types.
Also includes some API cleanup that should improve (editor) performance. Previously we had APIs GetAllScalarParameters, GetAllVectorParameters, etc, which would return a list of FMaterialParameterInfos for each parameter of the given type. Code would often query all parameters, then loop over the results and lookup each parameter value. Now there's a new API, GetAllParametersOfType, which returns a list of all FMaterialParameterMetadata of a given type. It's easy to just collect the values at the time we're building the list of parameters, so this saves the work of looking up each value individually.
#jira none
#rb lauren.barnes
[FYI] zousar.shaker
#ROBOMERGE-SOURCE: CL 17360722 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17360730 by ben ingram in ue5-release-engine-test branch]
* Fixes a crash accessing some of the attributes later on
#rb luc.eygasier
#ROBOMERGE-SOURCE: CL 16699479 via CL 16699480
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)
[CL 16699484 by sebastien lussier in ue5-release-engine-test branch]
Providing a new flatten material with the correct texture samplers.
Retrieve texture properties from the default textures in the material (linear vs srgb, compression, vt enabled, lod group...)
Previously generated material instances are unchanged.
All MergeActor engine tests pass successfully.
#rb patrick.enfedaque
#ROBOMERGE-SOURCE: CL 16484038 in //UE5/Private-Frosty/...
#ROBOMERGE-BOT: STARSHIP (Private-Frosty -> Main) (v823-16466674)
[CL 16484318 by sebastien lussier in ue5-main branch]
Fixed test failure - ActorMerging_SingleLODMaterialBaking
Corrected bad conversion from EMaterialProperty to EFlattenMaterialProperties using array indexing... now using a map.
Fixed slight delta in ground truth images as the floor pattern moved a bit (irrelevant to the actor merging test)
#rb patrick.enfedaque
[CL 16184268 by Sebastien Lussier in ue5-main branch]
The scheme solves issues where meshes would no longer align properly after converting them to Nanite. It also solves the precision issues in clusters with triangles of non-uniform size.
By default the precision is heuristically selected by Nanite, but the user also has the ability to override with an explicit precision to solve issues or optimize for disk size.
Clusters store the coordinate components using the minimal number of bits required to span the range of values in the cluster.
Apart from fixing issues, the default quality seems no worse than before and is typically ~5-10% smaller than before.
Added Position Precision to the top left of Mesh viewer along with the other mesh stats.
Added Position Precision dropdown to Nanite import settings.
Added debug mode "r.nanite.visualize PositionBits" that shows the vertex position bit sizes for clusters.
New quantization code now updates float positions and cluster bounds to reflect the quantized coordinates.
#rb brian.karis, graham.wihlidal
#JIRA UE-102722
#preflight 607d56774df3b60001ef477c
[CL 16049335 by Rune Stubbe in ue5-main branch]
- Preserve guid during save if static mesh bulkdata content hasn't changed to avoid triggering unnecessary rebuilds
- Make sure the next HLOD generation is going to use the HashAsGuid feature to avoid recompiling staticmesh that are generated if they are exactly the same as before
- 31m10s to 14m15s to cook P_Construct_WP with a warmed-up DDC
#rb Matt.Peters, Sebastien.Lussier, Yuriy.ODonnell, Danny.Couture
#ushell-cherrypick of 15755322 by danny.couture
#lockdown simon.tourangeau
#ROBOMERGE-SOURCE: CL 15965125 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v787-15839533)
[CL 15981275 by sebastien lussier in ue5-main branch]
* Specifying a flatten material that use VT samplers will automatically create textures of the correct type
* Moved default flatten material to config
* Default is now to use VT for HLOD
#rb jeremy.moore
#jira none
#lockdown simon.tourangeau
#ROBOMERGE-SOURCE: CL 15947766 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v787-15839533)
[CL 15950281 by sebastien lussier in ue5-main branch]
- Preserve guid during save if static mesh bulkdata content hasn't changed to avoid triggering unnecessary rebuilds
- Make sure the next HLOD generation is going to use the HashAsGuid feature to avoid recompiling staticmesh that are generated if they are exactly the same as before
- 31m10s to 14m15s to cook P_Construct_WP with a warmed-up DDC
#fyi Richard.TalbotWatkin
#rb Matt.Peters, Sebastien.Lussier, Yuriy.ODonnell
[CL 15755322 by danny couture in ue5-main branch]