Commit Graph

331 Commits

Author SHA1 Message Date
sebastien lussier
4fca75067f Allow the creation of virtual textures when baking HLODs
* Specifying a flatten material that use VT samplers will automatically create textures of the correct type
* Moved default flatten material to config
* Default is now to use VT for HLOD
#rb jeremy.moore
#jira none
#lockdown simon.tourangeau

#ROBOMERGE-SOURCE: CL 15947766 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v787-15839533)

[CL 15950281 by sebastien lussier in ue5-main branch]
2021-04-07 22:20:44 -04:00
daniel wright
8f2f9c355d Better SDF stats in static mesh editor
#ROBOMERGE-SOURCE: CL 15867323 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)

[CL 15867336 by daniel wright in ue5-main branch]
2021-03-30 16:09:21 -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
Zousar Shaker
12e9de2680 Fix PVS static analysis warnings about ternary operators.
#rb trivial
#jira UE-111196

[CL 15741883 by Zousar Shaker in ue5-main branch]
2021-03-18 17:31:56 -04:00
christopher waters
c45f1dfad5 Removing Tessellation:
- Removed Tessellation settings from Materials and Material Interfaces
- Removed Adjacency buffers from Static and Skeletal Meshes.

#jira UE-94564
#rb jeremy.moore, josie.yang, kevin.ortegren, yuriy.odonnell

#ROBOMERGE-OWNER: christopher.waters
#ROBOMERGE-AUTHOR: christopher.waters
#ROBOMERGE-SOURCE: CL 15501023 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)
#ROBOMERGE-CONFLICT from-shelf

[CL 15502653 by christopher waters in ue5-main branch]
2021-02-23 14:03:21 -04:00
matt kuhlenschmidt
b6a2d54b30 Added a view menu toggle to the static mesh editor to show or hide the nanite proxy mesh. The option only appears if nanite is enabled on a mesh.
Added overlay text for nanite enabled and a warning when the proxy mesh is being displayed

Fixed overlay text creating new widgets every frame

#jira UETOOL-2972
#rb lauren.barnes

#ROBOMERGE-SOURCE: CL 15481409 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15481410 by matt kuhlenschmidt in ue5-main branch]
2021-02-19 22:14:33 -04:00
David Hibbitts
7c1d716ff7 Made NaniteSettings EditAnywhere on StaticMeshes.
Updated FStaticMeshDetails to prevent NaniteSettings showing twice

#rb Graham.Wihlidal

[CL 15475844 by David Hibbitts in ue5-main branch]
2021-02-19 16:41:31 -04:00
Richard TalbotWatkin
bf10d3336a Refactor of source model representation for static meshes.
- Moved source models related classes and implementation into separate files.
- Created a new UObject wrapper for holding mesh description bulk data; this is created as a transactable object inside a UStaticMesh.
- The cached mesh description is now an inner object of the bulk data wrapper; this allows transactions on the bulk data to affect the cached mesh.
- The static mesh SourceModels array can no longer be accessed directly: FStaticMeshSourceModel requires extra initialization before it should be used, so new LODs should be added through the static mesh API.
- Undo/redo is now fixed within the geometry tools
- Fixed regression where mesh description was being unpacked unnecessarily during transactions
- MeshDescription bulk data and its cached MeshDescriptions are now emptied prior to removing the UObject reference, in order to immediately free memory instead of needing to wait for garbage collection
- No more deadlocks when clearing or committing mesh descriptions during garbage collection
- Bulk data UObjects are constructed, where possible, at startup, in order to prevent it from happening during critical moments, e.g. during garbage collection or package saving.
#rb Danny.Couture, Alexis.Matte, Ryan.Schmidt

[CL 15420827 by Richard TalbotWatkin in ue5-main branch]
2021-02-16 15:14:02 -04:00
louise rasmussen
4e3b4bd0fe Static Mesh Nanite Options
#JIRA UETOOL-2969
#JIRA UETOOL-2970
#JIRA UETOOL-3038

#rb Lauren.Barnes

#ROBOMERGE-SOURCE: CL 15410689 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15410715 by louise rasmussen in ue5-main branch]
2021-02-15 17:10:41 -04:00
Marc Audy
cac1fe0019 Merge UE5/Release-Engine-Staging @ CL# 15299266 to UE5/Main
This represents UE4/Main @ CL# 15277572

[CL 15299962 by Marc Audy in ue5-main branch]
2021-02-03 14:57:28 -04:00
Ryan Schmidt
0c469c41be StaticMeshEditor: gracefully handle the situation where simple collision on an SM is modified externally, as there is no change notification to hook into. SelectedPrims becomes invalid and this check() will be immediately hit, so we can handle it here (obviously a hack).
#rb jimmy.andrews
#rnx
#jira UE-106918

[CL 15276407 by Ryan Schmidt in ue5-main branch]
2021-02-01 19:20:35 -04:00
Matt Kuhlenschmidt
24fd139385 Fixed up locations making one off thumbnail pools and converted them to use the shared thumbnail pool.
[CL 15211295 by Matt Kuhlenschmidt in ue5-main branch]
2021-01-26 17:21:08 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Matt Kuhlenschmidt
eee0ebb493 Static mesh editor icons and a few editors that shared the same icons
[CL 15051942 by Matt Kuhlenschmidt in ue5-main branch]
2021-01-12 13:38:00 -04:00
Marc Audy
bf80889353 UE5/Release-Engine-Staging to UE5/Main
This represents UE4/Main up to CL# 14958402

[CL 15028197 by Marc Audy in ue5-main branch]
2021-01-08 19:56:07 -04:00
Matt Kuhlenschmidt
036e2d0733 Removed all instances of large toolbars with 40x40 icons and reset their layouts to confrom to the new standard toolbar size and tabless design
[CL 14999694 by Matt Kuhlenschmidt in ue5-main branch]
2021-01-06 12:07:36 -04:00
Cody Albert
a156932784 Added function to EditorStaticMeshLibrary for setting material slot assignment for LODs
(Moved CL# 14951629 to the Static Mesh Editor Subsystem)

#rb none

[CL 14996774 by Cody Albert in ue5-main branch]
2021-01-05 20:05:56 -04:00
Matt Kuhlenschmidt
6973e6a61e Toolbars can now support a hybrid mode where they include no text unless a specific toolbar entry is called out using the "calloutstyle" for the toolbar entry. This allows toolbars to reduce their width significantly. The level editor now uses this by default but a few other asset editors have been set up for this
[CL 14994802 by Matt Kuhlenschmidt in ue5-main branch]
2021-01-05 16:38:18 -04:00
Louise Rasmussen
57131e35a7 Adds back missing Show Vertex Colors Option
#rb Lauren.Barnes
#fyi Dan.Pressman

[CL 14813495 by Louise Rasmussen in ue5-main branch]
2020-11-25 14:27:34 -04:00
Matt Kuhlenschmidt
cd51bbaa63 Rework per-platform properties to make better use of the space in the details panel. Now each override is a separate tree node and all overrides can be viewed by expanding the property row
[CL 14764265 by Matt Kuhlenschmidt in ue5-main branch]
2020-11-17 12:45:35 -04:00
Matt Kuhlenschmidt
d2368b5d98 Consolidating icons.
Moved property editing icons to the generic icon set.

[CL 14753068 by Matt Kuhlenschmidt in ue5-main branch]
2020-11-16 09:57:56 -04:00
Matt Kuhlenschmidt
bab3ac126b Asset property editor reskin
[CL 14712941 by Matt Kuhlenschmidt in ue5-main branch]
2020-11-10 17:10:43 -04:00
danny couture
c23f6884fe Async Static Mesh Compilation / Loading
- Add protection against async property accessed during async build and postload.
   - Split PostLoad into 3 steps with the most part now being made async.
   - Make Build/BatchBuild API async when the feature is activated.
   - Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler).
   - Skip RenderState creation for any static mesh component still being built so they only show up when ready.
   - Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad.
   - Dynamic priorisation for building and updating static meshes nearest to the viewport.
   - Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots.
   - Add a new generic interface for assets being built (still a WIP).
   - Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes.
   - Prevent auto-save while textures and static meshes are being built (same as shaders)
   - Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties.

General Optimizations
   - Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails.

DEBUGGING
 - Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused]
 - Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused
 - Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num]
 - Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll

BENCHMARKS
 - 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC
 - 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC
 - 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC

TESTS
 - Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed
 - Content browser interactions while still under heavy compilation
 - Importing with Datasmith / Dataprep
 - Working with the new Mesh Modeling Tool
 - Shutting down the editor while loading
 - Most of EngineTest Test Suite

REFERENCES
 - Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ
 - Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10

#rb Francis.Hurteau

[CL 14688146 by danny couture in ue5-main branch]
2020-11-09 07:50:34 -04:00
Matt Kuhlenschmidt
bd1dea6248 Reskin numeric entry boxes and related details customizations (vectors, rotators, transforms)
[CL 14629610 by Matt Kuhlenschmidt in ue5-main branch]
2020-11-02 13:49:16 -04:00
Krzysztof Narkowicz
14d02c6809 MeshSDF - implemented a tight bounding box with one voxel margin for bilinear gradient reconstruction. This allowed the MESH_SDF_APPROX_MARGIN hack to be removed and secured all gradient reconstruction operations from reading outside of valid bounds. Also saved ~50% of SDF atlas space, and speed up some mesh SDF operations:
UpdateGlobalDistanceField: ~7% faster
TraceMeshSDFs: ~5% faster

#rb Daniel.Wright, Patrick.Kelly

[CL 14618591 by Krzysztof Narkowicz in ue5-main branch]
2020-10-29 23:43:01 -04:00