* Adding forward declarations
* Adding "inline" in front of const/constexpr variables in headers
* Adding includes
* A few moves of ctor/dtor to cpp file
#preflight 6372b3ac0c74adb48b49f313
#rb none
[CL 23130896 by henrik karlsson in ue5-main branch]
* Add FRayTracingGeometry::EGeometryStateFlags for tracking the state instead of several bools:
- Add new state for tracking if the geometry was streamed in - its primary use is for dynamic ray tracing.
- When ray tracing is toggled on at runtime we only recreate geometries that were marked as streamed in.
* Streamed geometries have to be created in a different way than regular geometries:
- Creating geometry with StreamingDestination type will not allocate any memory for BLAS buffers.
- Those can only be initialized by InitRHIForStreaming from temporary geometry with a StreamingSource type
- Added FRayTracingGeometry::InitRHIForDynamicRayTracing() to handle both StreamingDestination and Rendering
- For StreamingDestination it will do similar steps as normal mesh streaming does.
* Add missing RayTracingGeometry initialization when dynamic ray tracing was enabled but ray tracing was disabled.
#rb tiago.costa, yuriy.odonnell
#preflight 6372245ebf76990b71f5d021
[CL 23116977 by aleksander netzel in ue5-main branch]
Added CVar grass.GrassCreationPrioritizedMultipler defaulted to 4 that affects grass.MaxCreatePerFrame and grass.MaxAsyncTasks when PrioritizeGrassCreation is true.
#rb patrick.enfedaque
#preflight 636d4e7a1a66e7f73186bd91
[CL 23091009 by richard malo in ue5-main branch]
Add a per platform CVar to completely disable high quality per pixel heightmap sampling if we want minimal cost.
[CL 23075430 by jeremy moore 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]
This fixes the mismatch between rendering landscape to RVT with a single quad and with a high LOD mesh.
[CL 23069485 by jeremy moore in ue5-main branch]
Removal of includes to reduce transitive includes in high traffic headers to reduce compile times
Highlights
* Skeleton and BonePose not leaked out of commonly used animation headers
* AudioComponent leaking out less
* Brush not leaking Level.h (Brush is included indirectly a lot)
* VertexStreamComponent moved to its own file so Components.h can include that instead of VertexFactory (which would leak out all of RHI and others)
#preflight 6365dd15c53af2f47f8d8c40
#rb none
[CL 23003402 by henrik karlsson in ue5-main branch]
When we do this we only need a single quad to render each landscape component subsection.
This reduces vertex shader cost which can sometimes dominate RVT rendering.
And it can remove the need to set difficult to understand landscape RVT LOD settings.
One downside is that bilinear texture map interpolation is different to triangle barycentric interpolation, so there is a subtle difference in extreme cases, but nothing visually bad. The difference will matter for VHM rendering though.
[CL 22968373 by jeremy moore in ue5-main branch]
Tested compiling fortnite, unrealeditor, lyra, qagame with non-unity/pch
#preflight 63635997876630122adeab9f
#rb none
[CL 22958990 by henrik karlsson in ue5-main branch]
* Guard against slate from being called when not initialized.
* Show message box if HLOD build commandlet process fails.
#rb jonathan.bard
#rb richard.malo
#preflight 6362c5c1522c8f7ab3504854
[CL 22937962 by don boogert in ue5-main branch]
This is only the landscape setting. The code that applies the change will be submitted in a second pass to allow for shader recompilation warmup.
[CL 22890958 by jeremy moore 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]