Commit Graph

102 Commits

Author SHA1 Message Date
Jian Ru
f16252beb2 Add an option to render distance field shadows using async compute. Also fix a bug where a raytraced DF FProjectedShadowInfo is rendered for all views instead of just its dependent view
#jira UE-114984
#rb ben.woodhouse, tiago.costa

[CL 16683751 by Jian Ru in ue5-main branch]
2021-06-15 22:28:34 -04:00
tiago costa
7503b52da0 Updated most of distance field ambient occlusion codepath to use RDG.
- Resource state transitions handled by RDG.
- FDistanceFieldObjectBufferResource replaced by FDistanceFieldCulledObjectBufferParameters to use RDG.
- FTileIntersectionResources replaced by FTileIntersectionParameters to use RDG.
- FAOScreenGridResources replaced by FAOScreenGridParameters to use RDG.
- Don't store DFAO resources in View.State.
- Split FDeferredShadingSceneRenderer::RenderDistanceFieldAOScreenGrid() into multiple passes.
- Split BuildTileObjectLists() into multiple passes.

#rb daniel.wright

[CL 16660080 by tiago costa in ue5-main branch]
2021-06-14 12:45:34 -04:00
zach bethel
c8cd80f396 Converted SetShaderUniformBufferImmediate to local uniform buffers to move creation off the render thread. Removed uses of RHICommandListImmediate. Moved local uniform buffer functions onto the compute command list.
[CL 16478490 by zach bethel in ue5-main branch]
2021-05-26 20:00:20 -04:00
Andrew Davidson
3ddc3a4da3 Merge up from //UE5/Dev-LargeWorldCoordinates
#rb none

[CL 16211417 by Andrew Davidson in ue5-main branch]
2021-05-05 15:07:25 -04:00
Sebastien Hillaire
a48e812176 Strata on RDG. That has fixed some transition issues.
Next will be to have buffers also be RDG transient buffers (and that should fix the last transition issue).
Tested strata enabled and disabled with rhivalidation.

#rb none
#fyi charles.derousiers

[CL 15858691 by Sebastien Hillaire in ue5-main branch]
2021-03-30 02:33:35 -04:00
Daniel Wright
697b5b9cf6 Sparse, narrow band, streamed Mesh Signed Distance Fields
* SDFs are now generated, allocated from the atlas and uploaded in 8^3 bricks (7^3 unique data, half voxel padding).
 * Tracing must load the brick index from the indirection table, and only bricks near the surface are stored
 * 3 mips are now generated, with the lowest resolution always loaded and the other 2 streamed
 * SDFs are now G8 narrow band.  Lower resolution mips must be traversed when querying distance to nearest surface far away from the surface
 * The Distance Field Brick Atlas is now stored for each FScene and dynamically resized based on needs with a GPU memcopy
 * Brick atlas uses a 1d pooled allocator which has no fragmentation and greatly reduces packing waste over the 3d allocator
 * Added new indirection for Distance Field Asset data, so that only a single entry needs to be updated when a mip is streamed in or out in scenes with millions of instances
 * Compute shaders operating on distance field instances generate streaming requests, which are async read back to CPU, turned into IO requests, which are polled and when complete uploaded to atlases
 * Any mesh instance inside the Global SDF extent (200m) requests mip1, and at 50m requests mip2
 * Now using a batched compute scatter to upload to the distance field atlas instead of RHIUpdateTexture3d, to bypass alignment restrictions and per-upload overhead
 * Distance Field streaming uses an async task to move Memcpy and IO request overhead off of the Rendering Thread
 * Distance Field Visualization now computes a normal from the SDF gradient and does simple lighting to better visualize the scene representation
 * Increased r.DistanceFields.MaxPerMeshResolution from 128 to 512, to better represent large objects
 * Mesh SDF generation now uses an Embree point query to calculate closest unsigned distance, and then a much smaller set of rays to count backfaces for negative region determination, for a 11x speedup
 * Upgraded mesh utilities to Embree 3.12.2 to get point queries
 * Fixed wrong transform used for SDF normals in Lumen, causing non-uniformly scaled meshes to have incorrect Surface Cache interpolation
 * Fixed Static Mesh materials not getting PostLoaded before SDF build, causing their blend modes to be wrong for the build, which corrupts the DDC.  Also included those blend modes in the DDC key.

Original costs on 1080 GTX (full updates on everything and no screen traces)
10.60ms   UpdateGlobalDistanceField
3.62ms   LumenReflectiveTest.DirectionalLight_1 Shadowmap 1
1.73ms   VoxelizeCards Clipmaps=[0,1,2,3]
0.38ms   TraceCards 1 dispatch 1 groups
0.51ms   TraceCards 1 dispatch 1 groups

Sparse SDF costs
12.06ms   UpdateGlobalDistanceField
4.35ms   LumenReflectiveTest.DirectionalLight_1 Shadowmap 1
2.30ms   VoxelizeCards Clipmaps=[0,1,2,3]
0.69ms   TraceCards 1 dispatch 1 groups
0.77ms   TraceCards 1 dispatch 1 groups

Tested: TopazEntry PC, Reverb PC and PS5, EngineTests, QAGame, Rift, Frosty P_Construct_WP, FortGPUTestbed

#rb Krzysztof.Narkowicz

#ROBOMERGE-OWNER: Daniel.Wright
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 15784493 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v783-15756269)
#ROBOMERGE-CONFLICT from-shelf

[CL 15790658 by Daniel Wright in ue5-main branch]
2021-03-23 22:40:05 -04:00
Guillaume Abadie
498f9d02ea Replaces SHADER_PARAMETER_RDG_BUFFER() with RDG_BUFFER_ACCESS() in Lumen
#rb none
#fyi daniel.wright
#robomerge Release-5.0-EarlyAccess

[CL 15718979 by Guillaume Abadie in ue5-main branch]
2021-03-17 06:01:59 -04:00
Charles deRousiers
9abaf9cf75 Remove STRATA shading model from subsurface list.
#rb none
#fyi sebastien.hillaire

[CL 15471654 by Charles deRousiers in ue5-main branch]
2021-02-19 10:42:07 -04:00
Florin Pascu
77051879b6 DistanceField Shadow Mobile(disabled by default for the moment)
#rb Dmitriy.Dyomin,Zach.Bethel, Jack.Porter
#jira UE-103864

[CL 15471024 by Florin Pascu in ue5-main branch]
2021-02-19 07:49:57 -04:00
zach bethel
c6cb1e82be Deprecated and gutted FSceneRenderTargets. Moved all textures over to FSceneTextures. Refactored the renderer to use RDG textures from FSceneTextures instead.
#rb arne.schober, luke.thatcher, christopher.waters, kenzo.terelst

[CL 15040082 by zach bethel in ue5-main branch]
2021-01-11 14:49:16 -04:00
zach bethel
ba31d9b2f5 Added FMinimalSceneTextures and FSceneTextures to deferred shading renderer and marshaled it through the render pipeline.
#rb christopher.waters
#rnx

[CL 14780920 by zach bethel in ue5-main branch]
2020-11-18 15:16:23 -04:00
Rune Stubbe
00e07341c2 Added support for two-pass HZB culling with Nanite multi-view
Two pass occlusion for Non-VSM shadows
Changes shadowmap atlas rendering to render into the border, so we have real data for wide shadowmap filtering kernels. Also improves atlas HZB performance.

#rb ola.olsson
#fyi graham.wihlidal, brian.karis, andrew.lauritzen

[CL 14762582 by Rune Stubbe in ue5-main branch]
2020-11-17 06:16:49 -04:00
Daniel Wright
cd2c29586a Converted DistanceFieldShadows to RDG resources and pass parameters
[CL 14637331 by Daniel Wright in ue5-main branch]
2020-11-02 18:16:17 -04:00
zach bethel
e4f467569d Removed scene render target context snapshot system.
#rb arne.schober

[CL 14615156 by zach bethel in ue5-main branch]
2020-10-29 16:32:16 -04:00
Kenzo Terelst
3f348aa475 RHITransition fixes for incorrect state
#jira none
#rb Mihnea.Balta

[CL 14554472 by Kenzo Terelst in ue5-main branch]
2020-10-23 05:47:05 -04:00
zach bethel
05d33be488 Removal of the deprecated rendering composition graph from the engine.
#rb christopher.waters
#fyi charles.derousiers, steve.smith
#jira none

[CL 14523947 by zach bethel in ue5-main branch]
2020-10-20 11:36:46 -04:00
zach bethel
1be4df8f48 Removed deprecated resource transition API from the engine.
#rb kenzo.terelst, christopher.waters, mihnea.balta
#fyi will.damon, brian.white, rolando.caloca
#jira none

[CL 14495239 by zach bethel in ue5-main branch]
2020-10-14 14:20:26 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
eric mcdaniel
0395fb0d3d Remove some shader compilation workarounds added for previous DXC version
#rb David.Harvey
#jira none
#rnx
#ushell-cherrypick of 12330398 by eric.mcdaniel

#ROBOMERGE-SOURCE: CL 12726815 in //UE4/Release-4.25Plus/... via CL 12781739
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v681-12776863)

[CL 12782553 by eric mcdaniel in Main branch]
2020-04-14 13:40:54 -04:00
rolando caloca
d7fc07f4ea UE4.25 - Deprecate UnbindRenderTargets
#rb none
#lockdown Marcus.Wassmer
#jira UE-91584

#ROBOMERGE-OWNER: rolando.caloca
#ROBOMERGE-AUTHOR: rolando.caloca
#ROBOMERGE-SOURCE: CL 12632871 in //UE4/Release-4.25/... via CL 12632899 via CL 12633229
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12633251 by rolando caloca in Main branch]
2020-04-06 16:28:53 -04:00
Rolando Caloca
5b82f15def Copying //UE4/Dev-RenderPlat-Staging@11388153 to //UE4/Main
#rb none
#rnx

[CL 11388545 by Rolando Caloca in Main branch]
2020-02-12 13:27:19 -05:00
Josh Adams
aa9705149b Copying Private-LoadTimes-4.24 stream to Main. Biggest changes are in Materials/Shader memory freezing.
#rb none

[CL 11282608 by Josh Adams in Main branch]
2020-02-06 13:13:41 -05:00
jian ru
55f7d72702 Fix a bug where the wrong indirect argument buffer is used when culling heightfield objects in to screen tiles
#ROBOMERGE-SOURCE: CL 11136757 via CL 11136783 via CL 11136786
#ROBOMERGE-BOT: (v640-11091645)

[CL 11136789 by jian ru in Main branch]
2020-01-28 16:39:15 -05:00
Rolando Caloca
bbb9564388 Copying //UE4/Dev-RenderPlat-Staging@11110326 to //UE4/Main
#rb none
#rnx

[CL 11110369 by Rolando Caloca in Main branch]
2020-01-24 18:07:01 -05:00