The rendering of the 4 landscape components is needed for passes (like RVT) where Nanite is not supported or implemented, and we only want the Nanite landscape component to render in the base pass and virtual shadow maps. (mutually exclusive).
I've now implemented a new mutually exclusive render state that each proxy propagates down to the landscape components to override the calculated view relevance without destructively changing properties like bRenderInMainPass (since we don't want to break non-Nanite rendering when Nanite is not supported by the runtime or platform).
[FYI] jonathan.bard, ola.olsson, brian.karis, jeremy.moore
#preflight skip
#ROBOMERGE-AUTHOR: graham.wihlidal
#ROBOMERGE-SOURCE: CL 20532817 via CL 20532818 via CL 20532819
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v954-20466795)
[CL 20533257 by graham wihlidal in ue5-main branch]
Use Landscape LOD1 for water texture capture. Inline bottom 5 LOD for landscape mesh, similar to texture based landscape which always has 64x64 mip available
#ROBOMERGE-AUTHOR: dmitriy.dyomin
#ROBOMERGE-SOURCE: CL 20339695 via CL 20339785 via CL 20339815 via CL 20340013 via CL 20340045
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v948-20297126)
[CL 20341634 by dmitriy dyomin in ue5-main branch]
This allows it to write velocity when editor moving or when r.Velocity.ForceOutput is set.
#preflight 628668fc2b53e2be4cafd7b4
[CL 20282648 by Jeremy Moore in ue5-main branch]
This means that GlobalDistanceField will not support landscape visibility.
#rb tiago.costa
#jira UE-151879
#preflight 627ea947ca3b90fc14f3c97a
[CL 20186403 by jonathan bard in ue5-main branch]
- determine which layer contains visibility mask using UMaterialExpressionLandscapeVisibilityMask::ParameterName.
#jira UE-117168
#rb jeremy.moore
#preflight 627cbcf4ef598237b26c63d8
[CL 20161876 by tiago costa in ue5-main branch]
Also restores follow-up CLs 19973746, 19973782
FStaticParameterSet::MaterialLayers can't be deprecated, since a property with the same name is included via FStaticParameterSetRuntimeData
So instead, FMaterialLayersFunctionsRuntimeData is updated with SerializeFromMismatchedTag, to allow serializing a full FMaterialLayersFunction.
When this happens, the EditorOnly portion is stored in a separate heap allocation, and then transferred to FStaticParameterSet::EditorOnly::MaterialLayers
#preflight 626c3405e31dbb512cef1e98
[Backout] - CL19973745
#fyi bob.tellez
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL19964485
#fyi Ben.Ingram
Original CL Desc
-----------------------------------------------------------------
Add 'Optional' EditorOnly data for UMaterialInterface and UMaterialFunctionInterface
These are separate UObject hierarchies that store editor-only UPROPERTIES, but can be included with cooked content, which allows full editor support.
In principle, all editor-only properties could be moved over. So far, this has been limited to UMaterialExpressions, and data related to material parameters.
FStaticParameterSet, FMaterialLayersParameters, and FMaterialCachedExpressionData have all been split into separate editor-only/non-editor-only classes,
which allows the editor-only portion to be stored on the optional editor-only UObject.
#preflight 626ab21dad56c0cbbea32dc4
#rb jason.nadro, francis.hurteau
#jira FORT-463329
[CL 20043286 by Jason Nadro in ue5-main branch]
#fyi Ben.Ingram
Original CL Desc
-----------------------------------------------------------------
Add 'Optional' EditorOnly data for UMaterialInterface and UMaterialFunctionInterface
These are separate UObject hierarchies that store editor-only UPROPERTIES, but can be included with cooked content, which allows full editor support.
In principle, all editor-only properties could be moved over. So far, this has been limited to UMaterialExpressions, and data related to material parameters.
FStaticParameterSet, FMaterialLayersParameters, and FMaterialCachedExpressionData have all been split into separate editor-only/non-editor-only classes,
which allows the editor-only portion to be stored on the optional editor-only UObject.
#preflight 626ab21dad56c0cbbea32dc4
#rb jason.nadro, francis.hurteau
#jira FORT-463329
[CL 19973745 by bob tellez in ue5-main branch]
These are separate UObject hierarchies that store editor-only UPROPERTIES, but can be included with cooked content, which allows full editor support.
In principle, all editor-only properties could be moved over. So far, this has been limited to UMaterialExpressions, and data related to material parameters.
FStaticParameterSet, FMaterialLayersParameters, and FMaterialCachedExpressionData have all been split into separate editor-only/non-editor-only classes,
which allows the editor-only portion to be stored on the optional editor-only UObject.
#preflight 626ab21dad56c0cbbea32dc4
#rb jason.nadro, francis.hurteau
#jira FORT-463329
[CL 19964485 by Ben Ingram in ue5-main branch]
* HeightmapTexture / XYOffsetmapTexture, which are only used on the non-mobile path, were artificially increasing the ref counts on platforms where mobile and non-mobile paths are enabled (in mobile mode)
* Weightmap[0], which contains the normal map in mobile mode, was not accounted for by the material instance's GetUsedTextures call, since it uses inlined hlsl code to sample it, rather than a texture sample material expression
#rb luc.eygasier
#preflight 624b3cd93a5a4c1622fbce4d
#ROBOMERGE-AUTHOR: jonathan.bard
#ROBOMERGE-SOURCE: CL 19622232 via CL 19622252 via CL 19622255
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)
[CL 19622575 by jonathan bard in ue5-main branch]
Furthermore, there's no per-view async task anymore so there was no point in kicking off that async task in BeginRenderViewFamily_RenderThread (which was the right thing to do, since at this point, FTextureResource pointers couldn't be modified by render commands happening between BeginFrame_RenderThread and BeginRenderViewFamily_RenderThread) and waiting after in that same function since no other parallel work was to be executed anyway. The job was less than 0.1ms on console anyway so the necessity to have this running asynchronously was questionable in the first place.
#rb sebastien.lussier
#preflight 62332ddbf41c515c37258422
#ROBOMERGE-AUTHOR: jonathan.bard
#ROBOMERGE-SOURCE: CL 19420534 via CL 19429013 via CL 19429156
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v930-19419903)
[CL 19432567 by jonathan bard in ue5-main branch]
[FYI] Sebastien.Lussier,Jeremy.Moore
#ROBOMERGE-AUTHOR: bob.tellez
#ROBOMERGE-SOURCE: CL 19387136 via CL 19389475 via CL 19398546 via CL 19398611
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19403768 by bob tellez in ue5-main branch]