- Use SmartName display name rather than UID when generating data model GUID
- Defer PoseAsset out-of-date warning until next resave
#jira UE-163780
#rb Thomas.Sarkanen
#preflight 6377575533774509005eacd6
[CL 23191972 by Jurre deBaare in ue5-main branch]
* Refactored ExportToRawMesh function to allow exporting one mesh section per component
* Implemented support for UV mappings usually provided by the landscape vertex factory in the non-Nanite case (as per the LandscapeLayerCoords material expression + others)
* For Nanite landscape materials, the relevant UV channels are :
** Texcoords0-2 : TerrainCoordMapping_XY, TerrainCoordMapping_XZ, TerrainCoordMapping_YZ (note : TerrainCoordMapping_XZ doesn't work ATM because texcoords1 seems to be a special case...)
** Texcoords3 : WeightmapUV
** Texcoords4 : LightmapUV (not implemented by ExportToRawMesh yet and not supported by Nanite meshes ATM : max 4 UV channels)
** Texcoords5 : HeightmapUV (implemented by ExportToRawMesh but not supported by Nanite meshes ATM : max 4 UV channels)
* Nanite landscape meshes now have 1 polygroup per component, with the proper landscape material instance being assigned to it
* Since Nanite meshes are capped at 64 meshes per section, Nanite landscape mesh will now fail to build on proxies sporting more than this amount of components. This is a first implementation and can be fixed later by adding as many Nanite landscape components as needed
* Implemented some missing virtual overrides on FLandscapeMaterialResource leading to landscape material instances potentially being used for non-landscape usages (hair, etc.)
* Fixed LandscapeNaniteComponent not being attached to the root component (and the mesh being exported in world space coordinates), leading to it not following when moving the actor
* Added NaniteLODIndex property in ALandscape to be able to tweak the LOD level used when generating the Nanite meshes. It's mostly a debug feature to test the LODLevel > 0 landscape mesh export and to accelerate the Nanite landscape mesh generation since you usually want Nanite to be the most defined mesh possible
* All Nanite landscape meshes will be auto-invalidated by this change
#rb roey.borsteinas, graham.wihlidal
#preflight 6365e2a2882365b8590525ac
#lockdown marc.audy
[CL 23069843 by jonathan bard in ue5-main branch]
Takeaways. Try to use "friend" on functions/operators that are frequently overloaded EXCEPT if they are in a templated type that is frequently instantiated. So do not put friends in TMap, TSet, TObjectPtr etc, this will slow down compile times. There is a break-even somewhere and hard to tell where it is but taking a class that is templatized on character type probably don't matter either way and then it is nicer to use a friend since that simplies error messages when compiler can't resolve functions/operators.
If it is possible to use member functions instead of friend that is the best option in terms of compile time performance. With c++20 you only have to write operator==(Foo, Bar) and the compiler will automatically provide operator==(Bar, Foo), operator!=(Foo, Bar) and operator!=(Bar, Foo).
Changes in this changelist involes
* Making operator<< friends in non-template types and not friends in template types
* Making operator==/!= members where possible and if not possible moved out if type is a frequently instantiated templated type.
#preflight 636970f5376a9cd6a80da54a
#rb steve.robb
[CL 23038965 by henrik karlsson in ue5-main branch]
#fyi jordan.hoffmann
Original CL Desc
-----------------------------------------------------------------
[BugFix] Inconsistent behavior in root component transform scale values for dynamically-spawned Blueprint actor instances.
#jira UE-62747, UE-67537
#preflight 6361a0ac522c8f7ab3fb85c9
[CL 22895970 by jordan hoffmann in ue5-main branch]
Moved GetTypeHash function to be hidden friend instead of put directly in global namespace.
Note that the function/operator needs to be fully inlined in the type or placed in the cpp. If the function is added as friend but then implemented outside the type then hidden friend optimization won't work.
This should improve compile time somewhat according to msvc devs.
#rb Steve.Robb
#preflight 6360b7052b5338aceb26471b
[CL 22889837 by henrik karlsson in ue5-main branch]
[FYI] Steve.Robb
Original CL Desc
-----------------------------------------------------------------
TMap and TSet can now be declared as members with forward-declared key and value parameters.
KeyFuncs::KeyInitType and KeyFuncs::ElementInitType typedefs are no longer used and user-defined KeyFuncs do not need to provide them. Deprecated placeholders for these typedefs exist though they may not be defined exactly as they were before. A new KeyType typedef needs to be provided by custom KeyFuncs which don't already inherit from BaseKeyFuncs or TDefaultMapKeyFuncs.
KeyConstPointerType, KeyInitType, ValueInitType and ElementInitType typedefs have been deprecated across TMap, TSet and TSortedMap. Regular C++ parameter-passing semantics should be used instead (const T& Ref or T Value, depending on T).
Added missing FSetElementId::operator!=().
[FYI] steve.robb
#rb james.hopkin
[FYI] henrik.karlsson
#preflight 635a56c15d49a96f7b31938f
[CL 22850782 by graeme thornton in ue5-main branch]
KeyFuncs::KeyInitType and KeyFuncs::ElementInitType typedefs are no longer used and user-defined KeyFuncs do not need to provide them. Deprecated placeholders for these typedefs exist though they may not be defined exactly as they were before. A new KeyType typedef needs to be provided by custom KeyFuncs which don't already inherit from BaseKeyFuncs or TDefaultMapKeyFuncs.
KeyConstPointerType, KeyInitType, ValueInitType and ElementInitType typedefs have been deprecated across TMap, TSet and TSortedMap. Regular C++ parameter-passing semantics should be used instead (const T& Ref or T Value, depending on T).
Added missing FSetElementId::operator!=().
#rb james.hopkin
[FYI] henrik.karlsson
#preflight 635a56c15d49a96f7b31938f
[CL 22810695 by steve robb in ue5-main branch]
-IStreamingSourceProvider can return more than one StreamingSource.
-Deprecate TargetGrid/TargetHLODLayer in favor of TargetGrids/TargetHLODLayers
-Add TargetBehavior so a StreamingSource can be applied on its Targets or on all Targets excluding its targets.
#rb richard.malo, jeanfrancois.dube
#preflight 6357d36c9e14ee3c79993db1
[CL 22792829 by patrick enfedaque in ue5-main branch]
* Avoiding to load descriptor data when loading groom asset
* Allow groom asset to be virtualized
#rb matt.peters
#jira none
#preflight 63524b593d41a4455a7d632d
[CL 22685796 by Charles deRousiers in ue5-main branch]
This is now opt in.
If a material with bUseWithVolumetricCloud=0 is used on volumetric cloud component, the screen will display a error message to the user.
Conversion: volumetric domain material have bUseWithVolumetricCloud automatically set to true when any ofthe cloud node is used.
With that, volumetric fog shader won't compile for clouds by default but it is still possible to do so for volumetric fog to cloud transitions.
#rb Patrick.Kelly, Jason.Nadro
#preflight https://horde.devtools.epicgames.com/job/634d5e2c9c29024c982c2d0e
[CL 22564120 by Sebastien Hillaire in ue5-main branch]
* Added HLOD Actor stats methods
* Added wp.Editor.HLOD.DumpStats console command to write a CSV containing the stats to /Saved/WorldPartition/
* Removed RuntimeSpatialHash related code in HLOD actor/actordesc/builder (x,y,z grid indices)
This will serve as the basis for showing the stats in-editor through the HLOD Outliner
#rb jeanfrancois.dube
#preflight 6346edbc663dafe41631f410
[CL 22505393 by sebastien lussier in ue5-main branch]
Move linked layers and graphs to use FMemberReference to reference the stub function used to generate node pins
#jira UE-132472
#rb Jurre.deBaare
#preflight 63358f5ee410691606b6c915
[CL 22260921 by thomas sarkanen in ue5-main branch]
If this is set, and we are rendering a nanite mesh then we use the override material.
Removed nanite override materials from mesh components.
Material override serialization is specialized so that we don't cook out override materials on non-nanite platforms.
#rb jason.nadro, matt.peters, francis.hurteau
#preflight 6334554b665f6b8f7f770a9b
[CL 22240746 by jeremy moore in ue5-main branch]
Made WorldPartitionHLOD and LandscapeSplineMeshesActor runtime only actors.
#rb sebastien.lussier
#preflight 633432ea7b582f58ab0c76e1
#rnx
[CL 22239251 by jeanfrancois dube in ue5-main branch]
This is to faliciate validation by inspecting the header as well as allow asset patching using solely the header without export loading.
Deprecate FolderName in UPackage and replace it in PackageSummary with the PackageName
Use to replaced PackageName to generate relative path loading when detecting a package has been relocated which allows some support for asset manipulation through normal file operation
#jira UE-157843, FORT-516887
#rb Matt.Peters
#lockdown Marc.Audy
#preflight 6331bb81665f6b8f7fed4f98
[CL 22239099 by francis hurteau in ue5-main branch]
It was the initial bug, but while looking at it, I noticed that the MultilineEditableTextBox was containing both a Font via FEditableTextBoxStyle, and another one via FTextBlockStyle, thus being error prone / inconsistent.
In order to fix the underlying issue (in addition to fix the initial bug), I removed the Font from FEditableTextBoxStyle, and moved the FTextBlockStyle from MultilineEditableTextBox to FEditableTextBoxStyle.
It solves the duplication issue and so make it clear where the Font should be set/read from.
However, as the text block style is now embedded in the editable text box style, it cannot be initialized the exact same way, and I had to do some changes to ensure there was no regression, by configuring various FEditableTextBoxStyle in some style files. I also change the default value for TextBlockStyle to better match our default theme.
-Default font is not set for text widgets.
EditableWidget: ensure to have a default font, and to set the style when calling SynchronizeProperties to ensure it reacts directly without having to force a refresh (by moving the widget for instance)
Bonus:
-Move to cpp some private methods that where 'forced' inline (and we were using function pointer on them). It will avoid some noise in public interface and speed up iteration / compile time when playing with them.
#jira UE-96464
#jira UE-137126
[RN] MultilineEditableTextBox was containing both a Font via FEditableTextBoxStyle, and another one via FTextBlockStyle, thus being error prone / inconsistent.The Font from FEditableTextBoxStyle has been removed, and the FTextBlockStyle moved from MultilineEditableTextBox to FEditableTextBoxStyle. It solves the duplication issue and so make it clear where the Font should be set/read from.
However, as the FTextBlockStyle is now embedded in the FEditableTextBoxStyle, it cannot be initialized the exact same way, and you can now configure the FTextBlockStyle of FEditableTextBoxStyle when creating one from scratch, by calling SetTextStyle on it.
Test
- created a Widget blueprint with different editable types combination: multiline or single line, box or no box.
-Validated that everything was reacting live as expected now.
-Created a blue print to set the text style and validated it was working.
-Create data with old version, then open it with updated version to validate that the visual was still the same and deprecation of style working as expected.
-checked different places in the editor using variation of editable text to ensure they were behaving as before (detail view, console command entry, comment on blueprint node).
#preflight 63344b9f110bb3721ef8aa77
[CL 22232366 by yohann dossantos in ue5-main branch]
The main change is that FSoftSkinVertex, used by FSkeletalMeshLODModel, in now stores weights as 16-bit after conversion from the import data. This increases the size of each FSoftSkinVertex from 144 bytes to 160 bytes (about 10% increase). By default render meshes still use 8-bit skin weights, with weights downshifted from the 16-bit modeling data, so no change in GPU memory consumption there. However, the vertex buffer will automatically return a 16-bit skin weights when requested from the GPU side (e.g. for CPU skinning and viewing tangents).
This change in the model data and vertex buffer CPU-side query, resulted in many changes throughout the codebase and will have an effect on licensees who are actively reading from and writing to these two storage locations.
The GPU skin cache shader has had one more permutation added when not using unlimited skin weights. The vertex factory is not affected.
#jira UE-164386
#rb alexis.matte, josie.yang
#preflight 632c0c5ab4515b7e22b4804d
[CL 22215219 by halfdan ingvarsson in ue5-main branch]