- Uses the InstanceCullingLoadBalancer to pre-distribute the work on the CPU to ensure even load.
- Make instance culling use the instance data offset in MDC instead of translating primitive IDs.
- Track single-instance draws separately from instanced to optimize handling (disable culling for single-instance primitives).
#rb Graham.wihlidal,andrew.lauritzen
#fyi dmitriy.dyomin
#preflight 60d0eafa2ab2180001269160
[CL 16733827 by Ola Olsson in ue5-main branch]
Better labeling for some GPU profiling regions.
Fix to frustum vertex buffer usage flag.
#rb ola.olsson
#ROBOMERGE-SOURCE: CL 16675237
#ROBOMERGE-BOT: (v835-16672529)
[CL 16675244 by andrew lauritzen in ue5-main branch]
- Enables overlapping batched and non-batched instance culling (needed for batching work).
- Removes some explicit transitions & minor cleanup.
- Added tracking the required number of instances (fixes non-nanite VSM for large ISMs)
#rb graham.wihlidal,jian.ru,yujiang.wang,zach.bethel
#preflight 60b73f38107dc600017d931b
[CL 16544217 by Ola Olsson in ue5-main branch]
- Instead, create a reference depth range with a guard band that we reuse frame to frame until we get too close to the edge, at which point we invalidate that clipmap level's cached pages (if any)
- Does not significantly affect invalidations, even when moving quickly near surfaces, since those cases would already get invalidated when those pixels moved to a different clipmap level
- Sets up for not re-copying cached VSM pages every frame
#rb ola.olsson
[FYI] brian.karis
#ROBOMERGE-SOURCE: CL 16492432 in //UE5/Private-Frosty/...
#ROBOMERGE-BOT: STARSHIP (Private-Frosty -> Main) (v823-16466674)
[CL 16492445 by andrew lauritzen in ue5-main branch]
Use actor label for light identification/selection in editor; fall back on component name (UUID) temporarily until this data is made available outside the editor as well
Collect debug data in RayState for SMRT and return the last valid sample data
- Alternative is to always generate debug data based on just a single VSM sample even when SMRT is enabled, but it's useful to have a debug output path for the true SMRT data, even if a bit more complex
Move some common visualization utilities to /Visualization.ush
Implement but disable backface culling for shadow evaluation pending change that handles various SHADINGMODEL's properly
#rb graham.wihlidal, ola.olsson
#ROBOMERGE-SOURCE: CL 16407102 in //UE5/Private-Frosty/...
#ROBOMERGE-BOT: STARSHIP (Private-Frosty -> Main) (v804-16311228)
[CL 16412421 by andrew lauritzen in ue5-main branch]
- Require 64bit atomic support for Nanite by default now (r.Nanite.RequireAtomic64Support=1)
- Cleaned up a bunch of cvar component reattach callbacks to use lambdas instead of redundant global functions
- Added UStaticMesh::HasValidNaniteData() as a helper to check if an asset has valid Nanite data
- Improved Nanite unsupported on screen error message so that we don't asks the user to update GPU drivers on a console :)
#rb nick.whiting
#jira UETOP-1646
[FYI] brian.karis, michal.valient
#ROBOMERGE-OWNER: graham.wihlidal
#ROBOMERGE-AUTHOR: graham.wihlidal
#ROBOMERGE-SOURCE: CL 16363554 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v804-16311228)
#ROBOMERGE-CONFLICT from-shelf
[CL 16363648 by graham wihlidal in ue5-main branch]
PS already has a permutation (bAtomicWrites) so this primarily affects offline compilation
Leaving the function of NonNaniteVSM the same for now to minimize the surface area of the change, but the shader and other logic can be simplified in the future
NonNaniteVSM can become a dynamic debug cvar in the future once we are happy this is working
#jira UETOP-1088
#lockdown graham.wihlidal
#rb ola.olsson, krzysztof.narkowicz
[FYI] nick.whiting
#ROBOMERGE-SOURCE: CL 16057407 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v789-15992632)
[CL 16061153 by andrew lauritzen in ue5-main branch]
Add virtual clipmap levels near the camera to cover extreme close-ups
Add Nanite view compation debug output
Make VSM resolution lod bias consistent for directional and local lights
Remove some unnecessary code from ProjectionCommon.ush which gets included in material shaders
#jira UETOP-1088
#rb graham.wihlidal, ola.olsson
[FYI] brian.karis
#lockdown graham.wihlidal
#ROBOMERGE-SOURCE: CL 15994600 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v789-15992632)
[CL 15994621 by andrew lauritzen in ue5-main branch]
Nanite now automatically splits depth-only rendering into multiple passes when there are more than MAX_VIEWS_PER_CULL_RASTERIZE_PASS views.
Changed MarkPhysicalPagesRendered to 2d dispatch to get around GRHIMaxDispatchThreadGroupsPerDimension limits.
#jira UE-108354
#rb andrew.lauritzen
#lockdown michal.valient
#ROBOMERGE-SOURCE: CL 15944494 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v787-15839533)
[CL 15948916 by rune stubbe in ue5-main branch]
Clean up VSM HZB by moving to previous frame data and removing redundantly exported previous frame page table.
For view contexts with VSM caching "show flag" disabled, also disable HZB so we aren't leaking HZB references out of these graphs either.
#rb graham.wihlidal
[FYI] brian.karis
#ROBOMERGE-OWNER: andrew.lauritzen
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 15826082 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v785-15821902)
#ROBOMERGE-CONFLICT from-shelf
[CL 15833868 by andrew lauritzen in ue5-main branch]
Refactoring to clean up some cross-frame resource references and enable more explicit allocations if needed
Allow nanite to take an external depth buffer to write to instead of creating one internally.
#rb ola.olsson
#ROBOMERGE-OWNER: andrew.lauritzen
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 15781280 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v783-15756269)
#ROBOMERGE-CONFLICT from-shelf
[CL 15789787 by andrew lauritzen in ue5-main branch]
- Adaptive ray counts for SMRT now work even with pass per light
- Removes a few divergences between the logic in the two paths
Remove debug projection stuff for now; will reimplement with a separate UAV write later
Remove temporal filtering for denoiser (it was broken and would need to be implemented slightly differently with the new path anyways)
Split cvar to allow separate denoiser toggle for directional (default on) and local (default off) lights
Enable SMRT for local lights and VSM caching by default
#rb brian.karis
#ROBOMERGE-OWNER: andrew.lauritzen
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 15707229 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v781-15675533)
#ROBOMERGE-CONFLICT from-shelf
[CL 15708180 by andrew lauritzen in ue5-main branch]