- add job cache validation functionality, enabled via cvar (will always submit all jobs for compilation even if they would be cache hits, and compare the results to that of the cache to ensure they are binary identical)
- fix poor cache hit rate due to debug group name being included in input hash (this seems to have always been the case but the hit rate was worsened by the various fixes for debug info collisions)
#preflight 6438134c3f564a05f538559a
#rb Yuriy.ODonnell
[CL 25025653 by dan elksnitis in ue5-main branch]
This changelist is a merge of work done in //UE5/Dev-ParallelRendering to remove tech debt in the SRV/UAV create functions. See individual changelist descriptions in that stream for further details, but a summary of the change is as follows:
- We had multiple overloads of each of the RHICreateShaderResourceView and RHICreateUnorderedAccessView functions. Each function had a different set of supported view types and using them was complicated / ambiguous.
- There's now only 2 create functions, and a common FRHIViewDesc descriptor struct, which is stored on the base view class.
- FRHIView takes a reference on the underlying resource, ensuring that RHI views keep their viewed resource alive. This was not the case on some platforms, since it was previously the platform RHI implementation's responsibility.
- Platform RHI implementations resolve an FRHIViewDesc into a full FViewInfo struct using GetViewInfo. This centralizes the logic for computing num mips / num slices / format etc so it is the same across all platforms.
- Views must never be created with nullptr resources. This used to happen in the mesh streamer, but now all views require a real underlying resource. That resource can be a "BUF_NullResource" buffer, which is what the mesh streamer uses as a placeholder for buffers that have not streamed yet.
- We will eventually replace FRHITextureReference with a "null texture", similar to how BUF_NullResource works for buffers. This is not yet implemented, so there is no "null view" of a texture currently.
#rb kenzo.terelst,jeannoe.morissette,dmitriy.dyomin
#preflight 643534642855180717af410e
#jira none
[CL 24989901 by Luke Thatcher in ue5-main branch]
* Remove MaxPayloadSizeInBytes from FPipelineFileCacheRayTracingDesc
* Always use serialized RayTracingPayloadSize from FRHIRayTracingShader
* Maintain binary compatibility with old serialized data
#jira UE-97607
#preflight 64309caa427eda5626e9d234
#rb aleksander.netzel
[CL 24972364 by Yuriy ODonnell in ue5-main branch]
- A minor QoL improvement for captures.
#rb Rob.Srinivasiah, Erica.Stella
#jira none
#review @Robert.Srinivasiah, @Erica.Stella
#preflight 642f0eb6b306e98c632026f3
[CL 24965490 by Arciel Rekman in ue5-main branch]
It made sens back in UE4 needing to do GVisualizeTexture.SetCheckPoint(), but now being fully transparent in RDG like DumpGPU it just doesn't make sens to not have it by default in test build like we do with DumpGPU
#rb trivial
#preflight 642e021cda7f958370105e26
[CL 24956650 by guillaume abadie in ue5-main branch]
* All buffers are anoted with the VisualizeTexture command to see it;
* Velocity buffer is visualized with the VisualizeMotionBlur to make it obvious motion vector are important and need to be coherent, and VisualizeReprojection to make sure the reprojection lines up perfectly;
* SceneDepth is shown with the same pixel shader as the VisualizeTexture to not confuse the user;
* PostDOF translucency is shown along with it's alpha channel given how benefical it is to minimise ghosting on translucency that don't draw velocity;
* SceneColor and PostDOF translucency is shown in linear color space to make it obvious when pre-exposure arises;
* When r.PostProcessing.PropagateAlpha is enabled, alpha channel of SceneColor and temporal upscaler's output are displayed;
* The luminance used for flickering detection is also displayed for user to identify what is subject to detection of the flickering;
Summary is displayed with:
* Which temporal upscaler is being used and what anti-aliasing scalability group
* Input resolution and pixel format
* Output resolution and pixel format
* Current preexposure of the color pixel format to diagnose pre-exposure problems and also specify if it is overriden with r.EyeAdaptation.PreExposureOverride
#rb jeremy.moore
#jira UE-181976
#preflight 642ed1911d61ecec3be79488
[CL 24947424 by Guillaume Abadie in ue5-main branch]
This was originally added to have parity between Vulkan and D3D12, but it only emitted a debug file and wasn't even feeding the rewritten HLSL back into the D3D compiler.
In an effort to be independent of the DXC rewriter, this is a first step as this rewriter invocation served solely a debugging purpose anyway.
#rb Dan.Elksnitis
#fyi Jason.Nadro, Rolando.Caloca
#jira none
#preflight 642ddad58f078cc7031925d3
[CL 24936708 by Laura Hermanns in ue5-main branch]
This change only makes the editor more robust and prevents the crash. Shaders in the ShaderMap may be null after loading due to external issues.
#rb josie.yang, brandon.dawson
#preflight 642b17f7ce01db47acbd65bf
[CL 24915531 by massimo tristano in ue5-main branch]
* use signed ints for sizes so that we don't have to check every subtraction for underflow
* make sure that we always have at least 2 ints available for reading for each message, to avoid overflow if a message is truncated before the payload size is written
* check that the payload size doesn't exceed the remaining buffer size
#jira UE-172902
#rnx
#preflight https://horde.devtools.epicgames.com/job/642c16e76a37fb35e9201b43
#rb jeannoe.morissette
#lockdown Michal.Valient
[CL 24912863 by mihnea balta in ue5-main branch]
* Default now uses accurate sRGB value encoding.
* Lower platforms using lower shading quality (i.e., r.Substrate.ShadingQuality > 1), will continue to use the cheap sqrt/square encoding/decoding
Using proper sRGB encoding increases occupangy by 8 vgpr on ps4 and a fullscreen quad during the base pass by 0.2ms due to lower occupancy. So keep it disabled on lower platforms.
#rb none
#jira none
#preflight 642ad0058f078cc7031c1ae2
#fyi sebastien.hillaire
[CL 24891794 by Charles deRousiers in ue5-main branch]