Commit Graph

846 Commits

Author SHA1 Message Date
Jurre deBaare
38e431f722 //UE5/Release-5.1 - Build ContentExamples Win64 - Warning: PoseAsset is out-of-date with its source animation
- 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]
2022-11-18 05:35:10 -05:00
Helge Mathee
ea718104dd RigVMN: lazy compute - core side
#rb sara.schvartzman
#jira na
#preflight https://horde.devtools.epicgames.com/job/6374ab540c74adb48bd8bf96

[CL 23151939 by Helge Mathee in ue5-main branch]
2022-11-16 05:05:12 -05:00
jonathan bard
08e482fca9 Added support for landscape material instances (per-component MICs) for Nanite landscape:
* 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]
2022-11-09 21:04:18 -05:00
henrik karlsson
4feb09e0b3 Compile time optimizations Managed to reduce unnamed game's biggest file compiler frontend cost from 113 seconds to 60 seconds. This also impact other things such as pch size and memory footprint when compiling which is great.
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]
2022-11-08 15:59:46 -05:00
jamie dale
065f6a2890 Added version bump to detect external actor packages with a stale localization cache
#jira
#preflight 636194d39160784fc3cd440f
#rb Rex.Hill
#rnx

[CL 22968406 by jamie dale in ue5-main branch]
2022-11-03 18:00:25 -04:00
jordan hoffmann
5845b98142 [BugFix] Inconsistent behavior in root component transform scale values for dynamically-spawned Blueprint actor instances.
#jira UE-62747
#jira UE-67537
#rb phillip.kavan
#rb marc.audy
#preflight 6361a0ac522c8f7ab3fb85c9

[CL 22927305 by jordan hoffmann in ue5-main branch]
2022-11-02 17:26:35 -04:00
jordan hoffmann
e08d98b3b9 [Backout] - CL22894037
#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]
2022-11-01 20:20:15 -04:00
jordan hoffmann
155432a8ef [BugFix] Inconsistent behavior in root component transform scale values for dynamically-spawned Blueprint actor instances.
#jira UE-62747, UE-67537
#preflight 6361a0ac522c8f7ab3fb85c9

[CL 22894037 by jordan hoffmann in ue5-main branch]
2022-11-01 19:01:49 -04:00
henrik karlsson
4a36cfe8ff Moved operator== to be hidden friend instead of put directly in global namespace
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]
2022-11-01 15:50:27 -04:00
Charles deRousiers
a48a2610cb Change groom asset and groom binding asset to use the unified guid system.
#rb marc.audy
#jira none
#preflight 635fb0a21b41d36d481347c4

[CL 22878699 by Charles deRousiers in ue5-main branch]
2022-11-01 05:41:45 -04:00
graeme thornton
e7986ac620 [Backout] - CL22808749
[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]
2022-10-29 02:59:59 -04:00
steve robb
e980405a8f 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!=().

#rb james.hopkin
[FYI] henrik.karlsson
#preflight 635a56c15d49a96f7b31938f

[CL 22810695 by steve robb in ue5-main branch]
2022-10-27 11:20:32 -04:00
patrick enfedaque
6da6a23831 WorldPartition: Streaming Source Changes
-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]
2022-10-26 17:26:38 -04:00
Charles deRousiers
1cba07781c Update HairDescriptionBulkData to use FEditorBulkData.
* 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]
2022-10-21 03:56:12 -04:00
karen jirak
dd9dc72032 Fix for FName Error message and adding logging to SPropertyMenuActorPicker if the user has chosen an Actor with an invalid NamePrivate (FName).
#jira UE-165164
#rb sebastian.nordgren
#preflight 634d6fdb181aa2a00d82e80a

[CL 22572508 by karen jirak in ue5-main branch]
2022-10-17 15:01:35 -04:00
Sebastien Hillaire
9fddd7a2d6 VolumetricCloud material shaders are now compiled optionally for material belonging to the Volumetric Domain.
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]
2022-10-17 10:05:07 -04:00
sebastien lussier
bed226768e WorldPartition - HLOD: Added support for HLOD stats stored as metadata in the HLOD Actor Descriptor
* 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]
2022-10-13 11:31:46 -04:00
Dan Thompson
7255fc6084 Explicitly delete operator bool on object weak pointers to make it clear why one doesn't exist, and clarify that you shouldn't be calling IsValid all the time.
#rb steve.robb
#preflight 634442241d5e6dbf759bc1ea

[CL 22432048 by Dan Thompson in ue5-main branch]
2022-10-10 12:33:54 -04:00
thomas sarkanen
13812111b2 Fix renaming issues with linked anim layers
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]
2022-09-29 20:38:46 -04:00
jeremy moore
9657b87388 Add nanite material override setting to material and material instances.
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]
2022-09-28 22:31:20 -04:00
jeanfrancois dube
7e44891aef World Partition: actor descriptors can now be runtime only, which means that they won't be loaded in the editor. They still can be pinned in the world outliner though for debugging purposes.
Made WorldPartitionHLOD and LandscapeSplineMeshesActor runtime only actors.

#rb sebastien.lussier
#preflight 633432ea7b582f58ab0c76e1
#rnx

[CL 22239251 by jeanfrancois dube in ue5-main branch]
2022-09-28 21:44:55 -04:00
francis hurteau
be29f20c37 Add a softobject path table to the package summary header
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]
2022-09-28 21:41:00 -04:00
yohann dossantos
59b5769eca -Text font size changes in Text Box (Multy-Line) widget applies only after moving the text widget
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]
2022-09-28 17:59:29 -04:00
halfdan ingvarsson
e2210cb024 Support for 16-bit skin weights on the skelmesh.
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]
2022-09-27 19:48:05 -04:00
tiago costa
f38d994913 Store NumClusters in Nanite::FResources.
#preflight 632ca131d747fe52c8625861
[FYI] rune.stubbe, marc.audy
#rb none

[CL 22203046 by tiago costa in ue5-main branch]
2022-09-27 06:55:35 -04:00