Commit Graph

627 Commits

Author SHA1 Message Date
aurel cordonnier
d17d20ca36 Merge from Release-Engine-Test @ 16758890 to UE5/Main
This represents UE4/Main @ 16738161 and Dev-PerfTest @ 16737719 (and Release-17.00 @ 16658211)

[CL 16763350 by aurel cordonnier in ue5-main branch]
2021-06-23 17:51:32 -04:00
guillaume abadie
c1819a0532 Implements r.AntiAliasingMethod
#rb none
#preflight 60d33c8cd9586b000132acac


#ROBOMERGE-SOURCE: CL 16758022
#ROBOMERGE-BOT: (v835-16672529)

[CL 16758023 by guillaume abadie in ue5-main branch]
2021-06-23 11:38:33 -04:00
graham wihlidal
3702c00d25 Added InstancePayloadDataOffset and InstancePayloadDataStride to primitive scene info and primitive uniform shader parameters. The range allocator has also been implemented, but no GPU resource allocations are performed at this time.
#rb ola.olsson
[FYI] brian.karis


#ROBOMERGE-SOURCE: CL 16745716
#ROBOMERGE-BOT: (v835-16672529)

[CL 16745792 by graham wihlidal in ue5-main branch]
2021-06-22 13:49:59 -04:00
Ola Olsson
a7127725ee Add simple functionality to wrap 1D dispatches into 2D or 3D as needed with minimal overhead, and add utility shader function to retrieve the linear index.
- Makes the assumption (checked) that dimensions are at least 128 in both X and Y.

#rb Krzysztof.Narkowicz,Sebastien.Hillaire,Rune.Stubbe
#preflight 60d059002ab2180001122cef

[CL 16725805 by Ola Olsson in ue5-main branch]
2021-06-21 06:07:27 -04:00
Ryan Vance
96bac36aa9 VKRT:
Add ray tracing shader types
Add initial ray tracing pipeline creation
Add acceleration structure descriptor type
Add basic ray tracing pipeline, occlusion support initially
Strip reflection from ray tracing shader spirv to deal with validation warnings
Don't use an array of vk descriptor types directly, this breaks with non-contiguous enum values which are common in extensions. Using a TMap from descriptor type to values instead.
Don't store vk types in the serialized shader header, translate to and from our own internal enum types to avoid similar non-contiguous value issues.
Re-enabled ray tracing compilation on windows desktop, explicitly disable runtime support using GRHISupportsRayTracing

Todo:
We need to deal with the lack of a 1:1 mapping between shader stages and frequencies for ray tracing hit groups. This is a one to many mapping which doesn't work with how most of the Vulkan RHI is authored. For now I'm assuming a hitgroup maps to a CHS.
Ray tracing shader descriptor allocation and pending state support. While we are serializing the descriptors for ray tracing shaders, we're not allocating or updating them yet which is the last large chunk needed to trace rays.
Fix spirv binary version mismatch validation error. This basically needs a local dxc modification which explicitly sets the spirv binary version to work around incorrect assuptions in dxc which is causing validation failures.
Add another local dxc modification to allow for arbirary struct size support using VK_EXT_scalar_block_layout for ray tracing shaders.

#rb jeannoe.morissette, lukas.hermanns

[CL 16711940 by Ryan Vance in ue5-main branch]
2021-06-17 17:15:16 -04:00
chris kulla
8946c56eb6 Material Instance changes should cause path tracer to restart accumulation
FMaterialRenderProxy doesn't appear to know which FScene it belongs to, so I had to go through the global render module and flag all scenes instead

#rb Ben.Ingram, Jason.Nadro

[CL 16704202 by chris kulla in ue5-main branch]
2021-06-17 10:01:01 -04:00
dmytro vovk
95e2e5b221 Fixed compiling QAGame with LWC on
#jira UE-117930
#rb none
#fyi Andy.Davidson

[CL 16652707 by dmytro vovk in ue5-main branch]
2021-06-12 19:14:42 -04:00
christopher waters
66680d06e3 Moving shader symbol exporting into a shared type.
Adding shader symbol export path override cvar. This cvar supports specifying the shader platform name via "{Platform}".
Adding Luke's change for having build machine specific shader configs.

#jira none
#rb rolando.caloca, david.harvey, lukas.hermanns
#preflight 60c243181264df0001a2c283

[CL 16631848 by christopher waters in ue5-main branch]
2021-06-10 18:11:47 -04:00
krzysztof narkowicz
249140a8d6 Lumen - switched FPrimitiveGroup::WorldSpaceBoundingBox from FBox to FRenderBounds in order to not store a bValid flag per every group
#ROBOMERGE-SOURCE: CL 16625122
#ROBOMERGE-BOT: (v831-16623017)

[CL 16625132 by krzysztof narkowicz in ue5-main branch]
2021-06-10 13:04:00 -04:00
CarlMagnus Nordin
f21e594dd0 Added support for storing shaders in iostore.
Opt-In with core setting AllowShadersInIoStore
#review-16450322

[CL 16622428 by CarlMagnus Nordin in ue5-main branch]
2021-06-10 09:29:05 -04:00
graham wihlidal
4ec3fc585b Removed LocalToWorld and PrevLocalToWorld from FPrimitiveInstance (instead the concatenating of instance and primitive transforms happens during SoA construction right before GPU Scene upload). In the future we'll also have a custom GPU Scene upload kernel that can do things like the concatentation (among other derivations) right on the GPU, but not affect the hot path of stuff like GetInstanceData(). This change also renames (Prev)InstanceToLocal to (Prev)LocalToPrimitive to make a lot more sense than the previous naming.
#rb ola.olsson, krzysztof.narkowicz, rune.stubbe
[FYI] brian.karis, jason.nadro


#ROBOMERGE-SOURCE: CL 16614552
#ROBOMERGE-BOT: (v828-16531559)

[CL 16614986 by graham wihlidal in ue5-main branch]
2021-06-09 19:08:26 -04:00
christopher waters
17e4707703 Adding CreateUploadBuffer helpers.
Adding FRDGUploadData to create upload data directly from the GraphBuilder persistent memory.

#jira none
#rb Zach.Bethel
#preflight 60c0de551264df00015e307a

[CL 16613071 by christopher waters in ue5-main branch]
2021-06-09 17:17:23 -04:00
graham wihlidal
5b31085baa Instance data optimizations - removed NonUniformScale and InvNonUniformScale from CPU, since they are already derived on the GPU from LocalToWorld as of CL 15961534
#rb ola.olsson
[FYI] brian.karis, rune.stubbe, krzysztof.narkowicz


#ROBOMERGE-SOURCE: CL 16590891
#ROBOMERGE-BOT: (v828-16531559)

[CL 16590932 by graham wihlidal in ue5-main branch]
2021-06-08 15:21:52 -04:00
Wei Liu
de5a48902e 1. Fix a bug of missing velocity due to wrong LoadAction for parallel rendering.
2. Add a project setting option to avoid generating velocity and TAA shader unexpectly for mobile platform.

#jira none

#rb Dmitriy.Dyomin, Guillaume.Abadie

[CL 16584354 by Wei Liu in ue5-main branch]
2021-06-08 06:01:07 -04:00
graham wihlidal
c3dcd43b0a Implemented a new 32bit bounding box type called FRenderBounds, which complements FRenderTransform. This implementation does not require a boolean to keep track of initial invalid state, the bounds merging is vectorized (safe for unaligned float3 data), and it also doesn't store the sphere radius (keep memory down for heavy instanced content). Future optimizations and work around tighter encoding (reduced extent precision with a conservative roundup?) and also LWC can change the underlying implementation of these types without changing every callsite; should also switch to center+extent later.
#rb krzysztof.narkowicz, rune.stubbe
[FYI] brian.karis, ola.olsson, jason.nadro, zak.middleton


#ROBOMERGE-SOURCE: CL 16577543
#ROBOMERGE-BOT: (v828-16531559)

[CL 16577575 by graham wihlidal in ue5-main branch]
2021-06-07 16:55:33 -04:00
Jian Ru
13d2d6e79e Batch BuildRenderingCommands from major mesh passes inside the main render function
#jira UE-117281
#rb ola.olsson, zach.bethel

[CL 16572282 by Jian Ru in ue5-main branch]
2021-06-07 12:19:06 -04:00
graham wihlidal
c3bda99324 Fix LWC issues with FRenderTransform
#fyi rune.stubbe, zak.middleton

[CL 16561641 by graham wihlidal in ue5-main branch]
2021-06-04 15:39:10 -04:00
graham wihlidal
c850a02c69 Implemented a new WIP type called FRenderTransform that (for now) represents instance transforms as a float 4x3 matrix - in the future we expect a much tighter per-instance encoding (for example: 12bytes for position, 4bytes for rotation, 6bytes for scale), so this type can be optimized in that direction. Other than saving hundreds of MB in *heavy* instance scenes, faster updates/uploads, etc.. this type could be used to represent a transform that stays 32bit w/ a rebase offset. Passing around ambiguous FVector and FMatrix data is bound to get us into trouble, whereas a concrete type we can reason about for transforms in render-only code makes a good deal of sense.
This change is another basis for more instance data and GPUScene improvements coming down the pipe.

#rb jason.nadro, krzysztof.narkowicz, zach.bethel, zak.middleton, rune.stubbe, ben.woodhouse
[FYI] brian.karis, ola.olsson
#preflight 60b9608d0249c300016598de


#ROBOMERGE-OWNER: graham.wihlidal
#ROBOMERGE-AUTHOR: graham.wihlidal
#ROBOMERGE-SOURCE: CL 16555619
#ROBOMERGE-BOT: (v828-16531559)
#ROBOMERGE-CONFLICT from-shelf

[CL 16555914 by graham wihlidal in ue5-main branch]
2021-06-03 21:10:11 -04:00
rune stubbe
49dab7faa0 Added UAVOverlap to UnifiedBuffer MemcpyResource to fix RHI validation errors.
#ROBOMERGE-SOURCE: CL 16547260
#ROBOMERGE-BOT: (v828-16531559)

[CL 16547263 by rune stubbe in ue5-main branch]
2021-06-03 10:26:59 -04:00
zach bethel
db4d19f641 Fix for culled RDG uniform buffer being created.
#rb andrew.lauritzen

[CL 16523561 by zach bethel in ue5-main branch]
2021-06-01 17:25:18 -04:00
Lukas Hermanns
b5aafce030 Dump preprocessed shader source in log on D3DCompile exception.
#rb Rolando.Caloca
#fyi Michal.Valient, Mihnea.Balta, Luke.Thatcher, Arciel.Rekman, Chris.Bunner
#jira UE-114967
#rnx

[CL 16518546 by Lukas Hermanns in ue5-main branch]
2021-06-01 14:24:07 -04:00
aurel cordonnier
43fa62fcd8 Merge from Release-Engine-Test @ 16487383 to UE5/Main
This represents UE4/Main @ 16445039 and Dev-PerfTest @ 16444526

[CL 16488106 by aurel cordonnier in ue5-main branch]
2021-05-27 13:40:37 -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
graham wihlidal
10d53c644f Large primitive data refactor
--
Repacked prim data (removes 8x float32)
Implemented builder pattern for primitive uniform shader parameters
Various cleanup, optimizations, improvements - all forming a basis for subsequent refactors and optimizations
Derive calculations like lighting channel mask, per object gbuffer data, and determinant sign bit on the GPU now, instead of wasting buffer space on it.
Removed LPV bias (unused)

#rb jason.nadro, kevin.ortegren, zach.bethel, krzysztof.narkowicz
#[fyi] brian.karis

#ushell-cherrypick of 16474697 by graham.wihlidal
#ushell-cherrypick of 16476806 by graham.wihlidal
#ushell-cherrypick of 16477587 by graham.wihlidal

[CL 16477749 by graham wihlidal in ue5-main branch]
2021-05-26 19:03:46 -04:00
zach bethel
2ab8c34577 Replaced FRDGBufferUploader with internal RDG upload. Removes several transitions and passes and removes immediate command list passes from the graph.
#rb jian.ru

[CL 16459303 by zach bethel in ue5-main branch]
2021-05-25 20:46:17 -04:00