- Added instance data validation
- Added general load balancer for instance processing on GPU (will move to own files later)
- Added initial GPU-side write access API for GPU scene.
- Addded specialized kernel to update primitive IDs in instances when that is the only change.
#rb graham.wihlidal
#jira UE-116671
#preflight 60c25d7b1264df0001aab80b
#ROBOMERGE-SOURCE: CL 16628528
#ROBOMERGE-BOT: (v831-16623017)
[CL 16628539 by ola olsson in ue5-main branch]
This is another small step towards enabling path tracing specific shader permutations.
This requires re-caching the raytracing mesh commands when we flip to and from path traced rendering.
Cleanup some flag handling by removing the redundant ERayTracingRenderMode enum since it is already capture by show flags.
Avoid checking the path tracing flag per view since it is always common to all views
Re-introduce the deduplication over views for the non-path tracing case since ray tracing effects can be enabled in a view dependent fashion.
Rename CanOverlayRayTracingOutput to HasRayTracedOverlay which I think is a bit clearer. Note that the meaning has flipped - it now returns true when path tracing or ray tracing debug modes are enabled.
Remove leftovers of GAveragePathTracedMRays (which wasn't hooked up to anything anymore)
Refactor static variables used to store path tracing state into a pimpl object off of the ViewState
#rb Patrick.Kelly, Yuriy.ODonnell, Juan.Canada
[CL 16249998 by chris kulla in ue5-main branch]
Now, proxiess can register for needing an on added/removed from level call. If this is requested, they are added to a map, which maintains a list of primitives that need the add/remove call, per level.
The only component that currently utilizes this is the Landscape component. To facilitate it's needs, the generic flags used to determine if it should be visible have been removed from FPrimitiveSceneProxy, bRequiresVisibleLevelToRender bIsComponentLevelVisible, and replaced with bForceHidden. The landscape component will now set that flag under the same circumstances as before.
[REVIEW] [at]sebastien.lussier [at]Nick.Whiting [at]patrick.enfedaque
#jira UE-UE-114943
#lockdown nick.whiting
#ROBOMERGE-SOURCE: CL 16207473 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v796-16191650)
[CL 16207501 by brandon dawson in ue5-main branch]
A small first step towards customizing the RayTracingPipeline for path tracing. As a first step, I am building the pipeline with just the path tracing related raygen shaders in it (and removing the path tracing raygen shader from the regular RT pipeline). I removed the miss shader for lighting from the path tracer's pipeline since its not used there.
Other minor refactors include consolidating the ray tracing related cached command logic and simplifying the RT command storage to avoid a verbose indirection.
#rb Yuriy.ODonnell
[CL 16160139 by chris kulla in ue5-main branch]
Use ReadWrite locks instead of critical sections to protect the Graphics Minimal Pipline State ID's persistent table.
Use remove locking around the pipeline id table size, and use atomic operators instead.
Disable the pipeline id table size completely in test or shipping builds
[REVIEW] [at]Graham.Wihlidal [at]Nick.Whiting
#lockdown nick.whiting
#ROBOMERGE-SOURCE: CL 16136028 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v789-15992632)
[CL 16136043 by brandon dawson in ue5-main branch]
Added ERayTracingInstanceFlags, which covers all equivalent DXR functionality. Explicitly specified that FRayTracingGeometryInstance.NumTransforms is what defines how many elements will be read from CPU or GPU transform buffers (which may themselves be larger). Added FRayTracingGeometryInstance.CommonUserData that's used if UserData array view is empty. Otherwise UserData must have at least as many elements as NumTransforms.
Also fix System.Renderer.RayTracing.BasicRayTracing failure, as a side-effect.
#rb Juan.Canada
[CL 16072216 by Yuriy ODonnell in ue5-main branch]