Commit Graph

28 Commits

Author SHA1 Message Date
jeremy moore
e564bc08ca #jira UE-117953
#jira UE-109349
Add mip map bias for virtual texture sampling.
Respects the existing r.MiipMapLodBias CVar.
Also add residency tracking for each virtual texture physical pool.
If the pool has been created from a config with the bEnableResidencyMipMapBias flag set then a mip map lod bias is applied to bring the pool back within budget.
The residency mip map lod bias is applied globally (combined with the global mip map lod bias).
In future it could be good to apply the mip map lod bias per physical pool, but this will require tracking all physical pool combinations for each page table.
Physical pool residency tracking can be shown on screen with r.vt.residency.show CVar.
#rb ben.ingram


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

[CL 16724487 by jeremy moore in ue5-main branch]
2021-06-20 18:47:00 -04:00
Ben Ingram
f7126004de Restore functionality to automatically map newly allocated VTs, but only for lowest resolution mip level
- This should be much faster than previous code which attempted to map all mip levels
- Need to ensure at least lowest resolution mip is mapped, in order to avoid rendering frames with garbage data mapped
- Add warning for AllocatedVTs that never manage to complete this mappings
#rb none
#jira none

[CL 16308484 by Ben Ingram in ue5-main branch]
2021-05-12 20:33:27 -04:00
Ben Ingram
9468976c1d Don't try to map all resident pages to newly allocated VTs. Too slow, especially for large VTs
- Instead, keep VT cached for a few frames after they are deleted, this way they can be re-used if they're deleted/recreated due to state changes
- This should solve the problem of material changes causing pages to become unmapped for a few frames
#rb none
#jira none

[CL 16209506 by Ben Ingram in ue5-main branch]
2021-05-05 13:09:24 -04:00
Ben Ingram
71d9de4675 Display on-screen message when VT pool is oversubscribed
#rb none
#jira none

[CL 16201143 by Ben Ingram in ue5-main branch]
2021-05-04 19:20:32 -04:00
Ben Ingram
e6c2c85df5 Fixes for UDIM VTs in texture editor
UDIMs use transformed UVs, account for these when computing visible regions
#rb none
#jira none

[CL 15926164 by Ben Ingram in ue5-main branch]
2021-04-05 21:56:26 -04:00
Ben Ingram
60478d3652 VT allocator improvements
- Check partially allocated block for fit, don't need to start with a completely free block for allocations
- Try to use the lowest possible vAddress for new allocations, this reduces the texture area covered by allocations
- Page table is no longer required to be square power-2 texture, instead allow it to grow organically as allocated area increases
- Allocator starts with maximum-sized block and tracks allocated area, no longer needs special logic to 'grow'
- Rectangular allocated VTs now mip based on min-size rather than max-size, relaxes alignment requirements and allows better packing
#rb jeremy.moore
#jira none

[CL 15825578 by Ben Ingram in ue5-main branch]
2021-03-25 12:40:35 -04:00
Jeremy Moore
8fe393561d Ensure that locked pages are still flushed after a virtual texture flush command.
Previously for streaming pages, the request would return pending, but because the page is mapped, no subsequent request would occur.
#rb none

[CL 14738087 by Jeremy Moore in ue5-main branch]
2020-11-12 16:08:00 -04:00
zach bethel
2bc88676d6 Converted virtual texture system and GPU lightmass to RDG.
#rb yujiang.wang, jeremy.moore
#jira none

[CL 14581416 by zach bethel in ue5-main branch]
2020-10-26 16:44:44 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -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
jeremy moore
71c2e4b2bf Add continuous update flag to RVT asset
Add VT scalability setting for throttling continuous updates

#ROBOMERGE-SOURCE: CL 13181235 via CL 13181238 via CL 13181240 via CL 13181249
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)

[CL 13181259 by jeremy moore in Main branch]
2020-05-05 12:03:31 -04: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
ryan durand
0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00
jeremy moore
534d291e59 Fix virtual texture feedback for multiple views
Also remove virtual texture time slice option which was never used/needed


#ROBOMERGE-SOURCE: CL 10114449 via CL 10115537 via CL 10115579
#ROBOMERGE-BOT: (v587-10111126)

[CL 10115610 by jeremy moore in Main branch]
2019-11-12 15:02:14 -05:00
jeremy moore
a24eea9e6f Better CSV stat to track percentage of virtual texture physical space is being used
#rb none

#ROBOMERGE-OWNER: jeremy.moore
#ROBOMERGE-AUTHOR: jeremy.moore
#ROBOMERGE-SOURCE: CL 9428260 via CL 9428262 via CL 9444157 via CL 9449047 via CL 9449237
#ROBOMERGE-BOT: (v495-9448618)

[CL 9451783 by jeremy moore in Main branch]
2019-10-07 13:25:21 -04:00
jeremy moore
14315143ac Check that we have a valid GPU feedback buffer ready to map before flushing runtime virtual texture caches.
This prevents reported bug when flushing at low frame rates (which can happen when sculpting many layer landscape).
If we flush without a feedback buffer, then we will have to wait for at least one frame before refilling the cache and this can cause the landscape to look constantly low res.


#ROBOMERGE-SOURCE: CL 8335474 via CL 8357963
#ROBOMERGE-BOT: (v401-8057353)

[CL 8359123 by jeremy moore in Main branch]
2019-08-27 21:24:54 -04:00
jeremy moore
899c1a35a7 Add support for max level to flush runtime virtual texture mips
#rb none

#ROBOMERGE-OWNER: jeremy.moore
#ROBOMERGE-AUTHOR: jeremy.moore
#ROBOMERGE-SOURCE: CL 8126366 via CL 8132083
#ROBOMERGE-BOT: (v401-8057353)

[CL 8157029 by jeremy moore in Main branch]
2019-08-21 08:56:44 -04:00
ben ingram
0247529d3c #jira UE-78586
- FVirtualTexturePhysicalSpace* now stored using TRefCountPtr<>, since code was changed to destroy previous unused physical spaces
- Otherwise we get into bad state since AllocatedVT could reference already deleted physical space, and cause system to get out of sync and/or crash
- Also defer deletion of unreferenced physical spaces until end of each render thread update, not strictly needed, but keeps large textures from getting destroyed/recreated in some cases
#rb none
[FYI] jeremy.moore

#ROBOMERGE-SOURCE: CL 8012534 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v396-7974030)

[CL 8012536 by ben ingram in Main branch]
2019-08-13 18:12:51 -04:00
jeremy moore
6a8f61025f Fix race condition in VT material updates that triggered check in FMaterialShader::GetShaderBindings()
The VT update can run concurrently with worker thread mesh command generation
VT system callbacks which can touch materials need to be complete before this phase
Moved VT callbacks to before InitViews to fix this
[FYI] Ben.Ingram


#ROBOMERGE-SOURCE: CL 7892548 via CL 7916688
#ROBOMERGE-BOT: (v389-7813075)

[CL 7916891 by jeremy moore in Main branch]
2019-08-08 23:50:35 -04:00
jeremy moore
0e1455505d Runtime virtual texture flush per VT and region instead of flushing everything
#ROBOMERGE-SOURCE: CL 7882089 via CL 7914929
#ROBOMERGE-BOT: (v389-7813075)

[CL 7915095 by jeremy moore in Main branch]
2019-08-08 23:35:07 -04:00
jeremy moore
2b00a4363f #jira UE-78422
Integrated from //UE4/Dev-Rendering
#rb none
#rnx

#ROBOMERGE-SOURCE: CL 7788444 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v388-7785529)

[CL 7788460 by jeremy moore in Main branch]
2019-08-06 10:20:52 -04:00
jeremy moore
79f1258718 #jira UE-75980
Release VT physical pools when they are no longer referenced
Integrated from //UE4/Dev-Rendering
#rb none
#rnx

#ROBOMERGE-SOURCE: CL 7140205 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v367-6836689)

[CL 7140214 by jeremy moore in Main branch]
2019-06-21 08:51:04 -04:00
Rolando Caloca
aa0d2303d6 Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) @ 6944469
#rb none
#rnx

[CL 6944849 by Rolando Caloca in Main branch]
2019-06-11 18:27:07 -04:00
Marcus Wassmer
cbfcbbb93b Merging //UE4/Dev-Main@4662404 to Dev-Rendering (//UE4/Dev-Rendering)
#rb none
Should be just copyright updates

[CL 4680440 by Marcus Wassmer in Dev-Rendering branch]
2019-01-03 19:16:26 -05:00
Ben Marsh
7598af0532 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

[CL 4662404 by Ben Marsh in Main branch]
2018-12-14 13:41:00 -05:00