INSTANCED_STEREO is currently used for both ISR and mobile multi view fallback but the two cases require different handling. INSTANCED_STEREO && MOBILE_MULTI_VIEW marks the mobile multi view fallback path used in editor d3d.
Also making EyeIndex consistently use VIEW_ID semantic instead of using TEXCOORD.
#rb Dmitriy.Dyomin
[CL 33421853 by erica stella in ue5-main branch]
- Create an intermediate image as the BackBuffer and render normally, then copy the image to the actual BackBuffer in the low level.
- Remove the QCom pre-rotation implementation.
#jira none
#rb Dmitriy.Dyomin, florian.penzkofer, jeannoe.morissette
[CL 32014454 by Wei Liu in ue5-main branch]
* Visualize texture system starts out in an inactive state until a command is issued, avoiding overhead of tracking views and scene textures, saving 1.4% on the render thread.
* Visualization overhead eliminated for views besides the one currently being visualized.
* Support for visualization of textures from scene captures, via "view=N" option (specifying the unique ID of the view), with "view=?" displaying a list of views for reference.
* Improved visualization for cube maps. PIP uses 2:1 aspect for the longitudinal render to match resource viewer display, and pixel perfect option shows tiled flat cube map faces (actual pixels) rather than running a projection.
* Padding for scene or screen pass textures is removed in the visualization -- the padding otherwise shows up as garbage or blank space.
To remove scene texture padding, it's necessary to add a field to RDG textures to provide an option to track the viewport sizes that were rendered for a given texture. If not set, the assumption is the whole texture was rendered. The field is set for FSceneTextures and FScreenPassTexture, covering the vast majority of cases, plus the denoiser was spot fixed -- worst case if any other cases are missed, you still see the padding. You can tell padding was present when visualizing by contrasting the texture size with the viewport size.
Padding was always a potential issue for the visualizer, but is exacerbated by scene captures, as the padded scene textures are set to a size that's a union of the main view and any scene captures. Padding is also exacerbated by dynamic resolution scaling, as the buffers will be padded to the maximum resolution. For example, a cube map rendering at 512x512 will have 93% of the pixel area as padding if the front buffer is at 1440p, or the default dynamic resolution setup will have 70% of the pixels as padding at minimum res.
#rb Jason.Nadro
[CL 31160232 by jason hoerner in ue5-main branch]
This notably implements new r.Test.Alpha.* cvars to more easily generate and debug an alpha channel in any project
#jira UE-179496
[FYI] eric.renaudhoude
[CL 28613389 by guillaume abadie in ue5-main branch]
*** This change will incur a full shader invalidation across all platforms ***
Issues:
- Some platforms require async compute dispatch indirect arguments to not cross specific memory boundaries
- This places restrictions on the valid sizes for a dispatch indirect argument set. We were not conforming to these restrictions which could result in GPU crashes on these async passes
Fixes:
- FRHIDispatchIndirectParameters is padded out to meet per-platform memory boundary restrictions
- This is driven via new per-platform preprocessor define PLATFORM_DISPATCH_INDIRECT_ARGUMENT_BOUNDARY_SIZE
- Some platforms require FRHIDispatchIndirectParameters to align with their internal structure hence we cannot universally size to meet all platform's requirements
- Introduce new FRHIDispatchIndirectParametersNoPadding for uses when we explicitly do not want the padding and otherwise avoid the memory boundary restrictions
- Revise and expand indirect argument validation code to catch further such issues in the future
- Update shaders which write to dispatch indirect argument buffers to account for optional per-platform padding
- New utility function WriteDispatchIndirectArgs introduced to faciliate this
- platforms which require other than the default nonpadded dispatch indirect arguments must define DISPATCH_INDIRECT_UINT_COUNT and their own WriteDispatchIndirectArgs in their CommonPlatform.ush
- move creation of DispatchIndirectGraphicsCommandSignature command signature to be per-platform
- DispatchIndirectGraphicsCommandSignature and DispatchIndirectComputeCommandSignature stride changed to account for additional padding on impacted platforms
Testing:
- ran Lyra with and without async compute Lumen on impacted platforms as well as Win64
- ran FN replay on impacted platforms
#rb Krzysztof.Narkowicz, Ben.Woodhouse, Benjamin.Rouveyrol
#jira UE-167950
#preflight 6359563b2e6690262a11bc06
[CL 22862498 by eric mcdaniel in ue5-main branch]
Dumps improvements:
1) Bring up for consoles
2) Better out of memory resiliency during the dumping process
3) Dumps console variables in CSV
4) Dumps process' log after completion
5) Dumps mip chains through FDumpTextureCS compute shader
6) Dumps depth & stencil texture formats through the FDumpTextureCS compute shader
7) Dumps at draw granularity with FRDGBuilder::DumpDraw(); (experimental)
8) Dumps final png screenshot to the dump directory
9) Adds & Dumps the FRDGBufferDesc::Metadata for viewer to decode buffer binary automatically
10) Dumps the PassParameters with structure metadata to decode shader parameters automatically
11) Adds CTRL+SHIFT+/ shortcut
Viewer improvements:
1) Tips display onload to spread some knowledge to the user
2) Supports for opening any pass/resources in new web browser tab
3) Emulates 16 and 32 bits UINT texture visualization with multiple webgl 8bit UINT textures
4) Fixes the webpage's tab going out of memory after visualizing many large resources.
5) Fixes the webpage's tab going out of memory after loading large buffer.
6) Adds support for more texture format with RGB channel reswizzling
7) Implements UI color-sheme based on UE5's editor theme
8) Implements texel color picker capabable of decoding every pixel format.
9) Implements texture viewer zooming with the mouse wheel
10) Implements a r.DumpGPU.Viewer.Visualize to open a specific RDG output resource when opening the viewer
#rb juan.canada
#preflight 619bb638fa0b360c406c42c5
[FYI] juan.canada, zach.bethel
#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 18260079 via CL 18372399 via CL 18372914
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18373039 by guillaume abadie in ue5-release-engine-test branch]
- preparational step to enable HZB culling of invalidations in an uniform way.
- also add FComputeShaderUtils helper to set up an indirect dispatch.
#rb andrew.lauritzen
#preflight 6130818017a8610001b0cfc7
#ROBOMERGE-SOURCE: CL 17400532 via CL 17400838
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17400862 by ola olsson in ue5-release-engine-test branch]
This hack is motivated because the render target pool and render graph requires to much work for 4.22 to supporting arbitrary SRV creation for a FRDGTexture properly.
#rb none
[FYI] daniel.wright
#jira UE-69715
#ROBOMERGE-SOURCE: CL 4979860 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 4979862 by guillaume abadie in Main branch]