Fixed crash due to bCachedRaytracingDataDirty not being initialized.
- the flag used to only affect a code path used by nanite coarse meshes in which it didn't cause a crash.
- however now it's used more generally resulting in a crash.
Note: Swarm is down, committing on behalf of Tiago Costa
#author Tiago.Costa
#rb Elizabeth.Bunner
[CL 23217237 by elizabeth bunner in ue5-main branch]
* Fixes FCachedMeshDrawCommandInfo::MeshPass bitfield when EMeshPass::Num is exactly 1<<EMeshPass::NumBits and current compiler uses signed default enum storage
* Improved error message in FPrimitiveSceneInfo::CacheMeshDrawCommands that checks FCachedMeshDrawCommandInfo::MeshPass field
#rb zach.bethel
#preflight 633b4e372a5690003a2e96fe
[CL 22314844 by Yuriy ODonnell in ue5-main branch]
- Currently disabled by default (controlled using r.RayTracing.Nanite.Mode)
- Nanite triangle data is streamed out to temporary buffers and used to build BLASes.
- For hit shaders, instead of having to keep uncompressed vertex/index buffers, nanite data is referenced using an auxiliary buffer to identify page/cluster indices.
- BLAS build:
- Whenever a new Nanite page is installed/uninstalled, a rebuild of the associated mesh BLAS is requested.
- Compute shader is dispatched to stream out mesh data to temporary buffer as well as auxiliary data used by hit shaders.
- CPU then does a readback of part of the data to determine size of the BLAS etc and kicks off a BLAS rebuild.
- Added raytracing support to Nanite Vertex Factory.
#rb rune.stubbe, yuriy.odonnell
#preflight 6331cec7b20e73a0983d9326
[CL 22203852 by tiago costa in ue5-main branch]
- Also add the ability for clusters to be able to be sorted into up to two bins so that WPO-disabled clusters will render with the most optimal shaders possible.
#rb rune.stubbe
#preflight skip
[CL 22193070 by jamie hayes in ue5-main branch]
Supply a mesh LOD index into MDC batching CS so it can fetch a correct lighting information for each instance
#rb ola.olsson
#jira UE-164402
#preflight 632d8688671a1a24b564bd0c
[CL 22163633 by dmitriy dyomin in ue5-main branch]
- Static Meshes were caching mesh commands without having CacheMeshCommands set.
- Dynamic and Excluded primitives were also getting commands unecessarily cached.
- Unified some code.
#preflight 632ad29dfc7f1efbdf87840a
#rb chris.kulla
[CL 22109383 by tiago costa in ue5-main branch]
- Restructure code and share more code with BasePassProcessor for LightmapPolicyType selection
#jira UE-139584
#rb Graham.Wihlidal
[CL 22089976 by kenzo terelst in ue5-main branch]
(refactor internal pass processor code to share as much code as possible between building of mesh draw commands and setting up the PSOs which are used)
#jira UE-139584
#rb Jason.Nadro
#preflight 63235e28214d9e96980f588d
[CL 22032850 by kenzo terelst in ue5-main branch]
- Don't create FRayTracingMeshProcessor when IsRayTracingEnabled is false
- Only Add RayTracingGeometries when IsRayTracingEnabled returns true
They are added to the FRayTracingMeshProcessor and will try to compile SF_RayHitGroup shaders
#rb Dmitriy.Dyomin, Carl.Lloyd
#jira UE-160278
#preflight 63208193e93a80888c3ea4d9
[CL 21988506 by florin pascu in ue5-main branch]
- MeshPassProcessor create function takes feature level as create parameter
- MeshPassProcessor base stores the processor enum type (handy for reference and stat tracking per pass type)
When pass enum value is not available then EMeshPassType::Num is used for now
#jira UE-139584
#rb Jason.Nadro, Mihnea.Balta, Zach.Bethel, Arciel.Rekman
#preflight 631b30f1304480f8f89fca35
[CL 21987972 by kenzo terelst in ue5-main branch]
Change visualization colors to make it less likely to be misinterpreted based on performance assumptions
#rb jamie.hayes
#preflight 630d3455a416f6df25c11484
#jira UE-133723
[CL 21696510 by andrew lauritzen in ue5-main branch]
- Store cache flag in primitive scene proxy, default based on mobility initially
- When CPU invalidations of primitives that are cached as static happen, invalidate the entire primitive (all instances) and flip the flag to dynamic
- When GPU invalidations of primitives that are cached as static happen, mark a bit in a buffer that is read back to the CPU. In future frames, use the bits to find the associated primitive (if it still exists), swap it to dynamic and invalidate all of its instances
- Dynamic primitives are always cached as dynamic/movable
- Moved instance invalidation buffer ownership to cache manager (we don't need two copies at once)
#rb ola.olsson
#preflight 630d0d88660db81edb749282
#jira UE-133723
[CL 21696465 by andrew lauritzen in ue5-main branch]
Per-GPU Lumen scene data is automatically allocated if a View is running on a different GPU, and no per-view data is available, to handle cases where multi-GPU is in use outside of Display Cluster.
#jira UE-157691
#rnx
#rb Krzysztof.Narkowicz Daniel.Wright
#preflight 62d065d4a6141b6adffe82f3
[CL 21100710 by jason hoerner in ue5-main branch]
- Removed scene render mem-mark among others. MemStack usage is now restricted to local scopes with known marks.
- Render resources with destructors are allocated using the FSceneRenderingBulkObjectAllocator on FSceneRenderer, which is deleted when the scene render is.
#preflight 62b266e20d4d6228de97babe
#rb mihnea.balta, yuriy.odonnell
[CL 20907647 by zach bethel in ue5-main branch]
This change makes HQ and LQ lightmaps to have unified lighting content and now they differ only in encoding.
#jira UE-154008, UE-151380
#rb Dmitriy.Dyomin, Yujiang.Wang
#preflight 62b5270d0a3bb5ca13d79900
[CL 20806454 by Wei Liu in ue5-main branch]