Commit Graph

7 Commits

Author SHA1 Message Date
graham wihlidal
ad295e7995 Proper fix for globallycoherent qualifiers being used in FGlobalWorkQueue, and also some possibly uninitialized data errors on some platforms with tessellation tasks.
#rb brian.karis
#fyi rune.stubbe
#preflight trivial

[CL 25392402 by graham wihlidal in ue5-main branch]
2023-05-09 14:39:41 -04:00
Brian Karis
7476209f10 Fix dxc errors
#rb graham.wiihlidal
#preflight trivial

[CL 25359146 by Brian Karis in ue5-main branch]
2023-05-05 15:58:14 -04:00
Brian Karis
a32d792944 Nanite tessellation
2 pass occlusion culling functioning for primary and shadows.

Optimization: share corners in dicing to reduce VGPRs. Currently used for cluster rasterization. Patch rasterization is more complicated and a toss up currently.

#rb graham.wihlidal
#fyi rune.stubbe
#preflight 642ca5e1da7f9583709982ed

[CL 24936050 by Brian Karis in ue5-main branch]
2023-04-05 16:31:07 -04:00
Brian Karis
d9883ddd05 Tessellation fixes
#rb rune.stubbe
#fyi graham.wihlidal
#preflight 64011bd85515f4f57b7dea8a

[CL 24490955 by Brian Karis in ue5-main branch]
2023-03-02 17:22:04 -05:00
Brian Karis
2bbba3a8e3 Tessellation split/dice
Disabled for now.
Fixed near plane culling.
Cluster dicing. If too large output to recursive patch splitting. Frustum culling for patches. Binning for visible patches. Programmable patch dicing.

#rb rune.stubbe
#preflight 63f929f0a134e0b059cee370

[CL 24411577 by Brian Karis in ue5-main branch]
2023-02-24 18:19:39 -05:00
Brian Karis
061a3dc08a First submit for dynamic tessellation
Disabled for now. WIP
Dice phase only using wave wide work distribution.
Implements both uniform and snap and tessellation table tessellation schemes.
Tessellation tables have vertex caching implemented in the shader but the index buffer preconditioning code it relies on has been lost.
Displacement material control for now is hacked to be from OpacityMask.
Barycentrics for deferred materials are derived through iterative projection.

WIP on GlobalWorkQueues which are a reusable refactoring of Rune's MPMC queue and persistent threads algorithm used in hierarchical cluster culling.

#rb rune.stubbe
#preflight 63bca3a3d862fdd347905dd5

[CL 23631565 by Brian Karis in ue5-main branch]
2023-01-10 15:11:31 -05:00
brian karis
e9f7571635 Refactored rasterizer to separate triangle setup from pixel coverage testing. This allows easier experimentation of coverage testing alternatives.
Added wave wide work distribution of coverage testing through bitmask tiles. This didn't prove to be faster in my test but I'm checking it in for posterity and the work distribution code is good and may be useful elsewhere. We can delete the tile distribution from the rasterizer later.

#rb rune.stubbe

#ROBOMERGE-AUTHOR: brian.karis
#ROBOMERGE-SOURCE: CL 18415357 in //UE5/Release-5.0/... via CL 18415390
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18415405 by brian karis in ue5-release-engine-test branch]
2021-12-08 20:28:59 -05:00