This CL split the resources shared between views (non-buffer/tiled data) and resources unique to view (e.g., tile data). This is to ease overall setup, but we might re-regroup them later.
#rb none
#jira none
#preflight 62488f4d927e60e3418751db
#fyi sebastien.hillaire
[CL 19601993 by Charles deRousiers in ue5-main branch]
* Distance Field streaming GPU mask scope clean up, to avoid startup crash. Added single high level FRHIGPUMask::All() scope in PrepareDistanceFieldScene, to avoid the need to set the mask in multiple lower level functions, and hopefully cover future modifications to the distance field scene code. View dependent subset of the code is then masked to the view. Validation asserts added in case code gets moved around in the future.
* Fixed bug when generating SRVs for structured buffers -- wasn't pointing the SRV to the correct GPU buffer. Caused GPU hangs and all sorts of corrupted rendering.
* Fixed bug that RHICopyToResolveTarget wasn't using the correct GPU index. Main symptom was DumpGPU being non-functional on the second GPU, but could cause other artifacts as well.
#jira none
#rnx
#rb christopher.waters chris.kulla
#preflight 624716e2b6084b9832597015
[CL 19591778 by jason hoerner in ue5-main branch]
- Addresses static analysis warning: warning V610: Undefined behavior. Check the shift operator '<<'. The right operand is negative ('....' = [-1..254])
- Texture Resolution will be 1.
#rb Jeremy.Moore
#jira UE-147669
#preflight none
[CL 19587584 by Jason Nadro in ue5-main branch]
* Lumen Sceen Direct Lighting: Light Tiles choose which view to light with based on distance to view, with a dispatch per light per view. These overlap so there's very little added GPU cost (0.63ms -> 0.69ms)
* Lumen Radiosity: Tiles choose which view's structures to trace against based on distance to view, with overlapping dispatches per view (0.45ms -> 0.53ms)
* Voxel Lighting and Translucency Volume are done twice as they are view dependent structures, which don't scale with resolution, so their cost is doubled (0.09ms + 0.32ms -> .22ms + 0.62ms)
* LumenScreenProbeGather and Lumen Reflections are done independently for each view, and they scale with resolution, but there's still a lot of overhead from barriers: (1.15ms -> 1.67ms), (1.16ms -> 1.64ms). These need to be refactored to operate on all the views in the same resource to get rid of the barrier and memory cost.
* Hardware Ray Tracing doesn't support splitscreen yet, so Lumen falls back to SW tracing
Misc
* Lumen Reflection temporal filter no longer checks tile validity when gathering the neighborhood min/max. The ReflectionResolveCS shader which runs right before it is now responsible for clearing tile neighbor texels instead, which is much cheaper.
* Added new uint ViewRectMinAndSize member to View, which avoids repeated type conversion from the float View.ViewRectMin when doing addressing in integers
#preflight 6244bc4cb33098a72dc0aee1
#rb Krzysztof.Narkowicz
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 19582572 via CL 19582648 via CL 19582763
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)
[CL 19584235 by daniel wright in ue5-main branch]
* Removed Opacity surface cache atlas layer (saves 8mb with compression and 16mb without). Also doesn�t need to be ever sampled in shaders
* Unified invalid texel handling. Instead of using depth and opacity, a single bit encoded in depth is used to decide whether a pixel is masked or not
* Unified surface cache encoding and decoding through FLumenSurfaceCacheData so that they are done in a single function and it�s easy to change surface cache encoding
* Moved surface cache shaders to a SurfaceCache folder
* Fixed surface cache reversed depth
[FYI] Daniel.Wright
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 19574357 via CL 19574422 via CL 19574457
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)
[CL 19575982 by krzysztof narkowicz in ue5-main branch]
This change also remaps the original bEvaluateWorldPositionOffset on SMC into bEvaluateWorldPositionOffsetInRayTracing, because this var was only ever driven by ray tracing specific methods. The original bEvaluateWorldPositionOffset is now used by this more generic API.
Lastly, a new cvar (r.OptimizedWPO) has been added that indicates if the hint should be respected or not (default is false, which means WPO is always active, regardless of hint)
#rb rune.stubbe, marc.audy, derek.ehrman
[FYI] brian.karis, jamie.hayes, ola.olsson, andrew.lauritzen, jian.ru
#preflight 6244a8dcdc6183e3f5f8de98
#ROBOMERGE-AUTHOR: graham.wihlidal
#ROBOMERGE-SOURCE: CL 19564957 via CL 19564973 via CL 19564978
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)
[CL 19566743 by graham wihlidal in ue5-main branch]
* Add Lumen RayTraceDispatch pass helpers.
* Changed base shader from RGS to ShaderBase from which both RGS/CS can be created.
* Final RGS/CS shaders are implemented using macros.
* IndirectArgsCS passes now take output size as shader param instead of using permutation for inline.
#rb krzysztof.narkowicz
#preflight 62443a9173665f7d5e3ed115
#ROBOMERGE-AUTHOR: aleksander.netzel
#ROBOMERGE-SOURCE: CL 19556681 via CL 19556685 via CL 19556688
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)
[CL 19561521 by aleksander netzel in ue5-main branch]
Refactored FetchNaniteMaterialPixelParameters with an overload to be able to pre-calculate some factors per triangle and pass it through.
Fixed an issue where previous screen position was not being calculated with previous frame's WPO.
#rb rune.stubbe
[FYI] graham.wihlidal, brian.karis
#preflight 62433a4fc51908059a9aa481
#ROBOMERGE-AUTHOR: jamie.hayes
#ROBOMERGE-SOURCE: CL 19556551 via CL 19556574 via CL 19556622
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)
[CL 19561515 by jamie hayes in ue5-main branch]
Converted a few additional RHICreateTexture2D calls to RHICreateTexture.
Adding a few more FRHITextureCreateDesc::CreateXXX variants to quickly specify extents and formats.
Merging FTextureRWBuffer2D and FTextureRWBuffer3D into a single class FTextureRWBuffer and deprecated the old ones.
#jira none
#rb luke.thatcher
#preflight 62448deb927e60e3415508e5
[CL 19560161 by christopher waters in ue5-main branch]
-Instead of deriving barycentrics from pixel coordinates, they are reconstructed using intrinsics (where available).
-Intrinsic path exports just vertexID and uses that to reconstruct the barycentrics in the correct order
-The intrinsic path uses the exported vertexIDs as triangle indices instead of redundantly decoding them from memory again
-When the intrinsics are not available, SV_Barycentrics are used instead
-When they are not available either, 2 barycentrics are exported and the 3. is reconstructed in the PS.
-Changed IS_NANITE_PROGRAMMABLE from define to permutation, so default material can support both without compromising perf for non-programmable materials
-All other materials only have the programmable path.
Added platform intrinsic GetViVjPerspectiveCenter for getting perspective correct barycentrics.
Renamed LoadParameterCachePN to GetAttributeAtVertexN to be more in line with the naming in SM6.1.
Support for GetViVjPerspectiveCenter and GetAttributeAtVertexN is determined by COMPILER_SUPPORTS_BARYCENTRIC_INTRINSICS.
#rb graham.wihlidal
#fyi brian.karis, jamie.hayes
#preflight 6242c0849f4042341438de59
[CL 19539774 by Rune Stubbe in ue5-main branch]
[Engine] Enable color Calibration Material Visualization for shipping
-Enabled the calibration flags
-Removed the no-shipping guards around associated logic
#rb [at]philip.buuck [at]christina.tempelaarl
[FYI] arturo.oppen, alex.gonzalez
#ushell-cherrypick of 19536400 by antonio.delascarrer
#ROBOMERGE-AUTHOR: antonio.delascarrer
#ROBOMERGE-SOURCE: CL 19536397 via CL 19536663 via CL 19536680
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)
[CL 19537137 by marc audy in ue5-main branch]
- backing out change due to cook failures
#preflight 6242640f637925b5d3a06f1c
[FYI] Guillaume.Abadie
Original CL Desc
-----------------------------------------------------------------
Uses the first HLSL template
#rb none
#preflight 6241edc8f4217035fa5ce91c
#ROBOMERGE-OWNER: eric.mcdaniel
#ROBOMERGE-AUTHOR: eric.mcdaniel
#ROBOMERGE-COMMAND: _robomerge[bot4] UE5-MAIN
#ROBOMERGE-SOURCE: CL 19536431 via CL 19536436 via CL 19536443
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)
[CL 19536451 by eric mcdaniel in ue5-main branch]