Commit Graph

142 Commits

Author SHA1 Message Date
ben ingram
c0a303be42 Continuation of previous material parameter refactor. Replace FMaterialRenderProxy Scalar/Vector/Texture parameter query functions with generic version
#rb none
#jira none

#ROBOMERGE-SOURCE: CL 17378446 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17378452 by ben ingram in ue5-release-engine-test branch]
2021-08-31 17:38:39 -04:00
guillaume abadie
b5a4dfc800 Kills FPostProcessSettings::ScreenPercentage
#rb none

#ROBOMERGE-SOURCE: CL 16848903 via CL 16848904
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16848909 by guillaume abadie in ue5-release-engine-test branch]
2021-07-14 08:25:29 -04:00
sebastien lussier
eac3ae2a6b World Partition HLODs - Added automatic texture size selection based on hints
Supports either:
* From texel density
* From expected mesh screen size
* From expected mesh draw distance

Compute best texture size, taking UV map waste into account.
Currently only supported by the Approximate Actors merge method, to be integrated in the ProxyLOD later.
#rb ryan.schmidt, luc.eygasier

#ROBOMERGE-SOURCE: CL 16635038 via CL 16635077
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)

[CL 16635084 by sebastien lussier in ue5-release-engine-test branch]
2021-06-10 21:50:21 -04:00
jeanfrancois dube
12e850ac12 Reduce the impact of wrapped pointers by 75% from material code.
For example, texture streaming spikes drops from 26.7ms to 16.6ms in PIE.

#rb zousar.shaker


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

[CL 16571408 by jeanfrancois dube in ue5-main branch]
2021-06-07 11:35:07 -04:00
Jurre deBaare
e37bc85303 Static analysis fix - possible out-of-bounds array access
#rb Sebastien.Lussier
#preflight 60b79b154d507d0001b66dbc

[CL 16544868 by Jurre deBaare in ue5-main branch]
2021-06-03 05:59:43 -04:00
Jurre deBaare
fdcd623ece Undo //UE5/Main/Engine/Source/Developer/MaterialUtilities/Public/... changelist 16489890 - bad cherry-pick
#rb none

[CL 16491913 by Jurre deBaare in ue5-main branch]
2021-05-27 17:00:23 -04:00
Jurre deBaare
03d83201fc Static analysis fix - possible out-of-bounds array access
#rb Sebastien.Lussier

[CL 16489890 by Jurre deBaare in ue5-main branch]
2021-05-27 15:19:25 -04:00
sebastien lussier
412cf1d7a1 MaterialBaking - Use correct linear bake for all texture property by default
Providing a new flatten material with the correct texture samplers.
Retrieve texture properties from the default textures in the material (linear vs srgb, compression, vt enabled, lod group...)

Previously generated material instances are unchanged.
All MergeActor engine tests pass successfully.

#rb patrick.enfedaque

#ROBOMERGE-SOURCE: CL 16484038 in //UE5/Private-Frosty/...
#ROBOMERGE-BOT: STARSHIP (Private-Frosty -> Main) (v823-16466674)

[CL 16484318 by sebastien lussier in ue5-main branch]
2021-05-27 10:31:36 -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
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
benoit deschenes
63aef69676 Remove SCOPED_SUSPEND_RENDERING_THREAD from OBJs exporter
Alexis.Matte
#rb Alexis.Matte
#jira UE-106965

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

[CL 15920146 by benoit deschenes in ue5-main branch]
2021-04-05 14:19:15 -04:00
Sebastien Lussier
06ccaf7c69 Optimized proxy mesh generation
* Added GroupIdenticalMeshesForBaking, which, when activated, will result in identical meshes (or mesh instances) being baked only once.

Other changes/fixes
* Always rely on the StaticMesh RenderData when retrieving mesh description for mesh merging/simplification (was the case when retrieving from a SMC, now also the case for a SM).
* For some reason, Material baking was rendering each triangle twice, but with opposite facing. Uneeded as we are rendering with backface culling disabled.

[CL 15669055 by Sebastien Lussier in ue5-main branch]
2021-03-10 15:46:29 -04:00
jason nadro
af442b563e [ODSC] - Properly initialize compiled shader maps with the editor only flag.
GetCurrentShaderPermutationFlags was being called which will always return the editor only data flag regardless of what platform we are cooking for which is the wrong behavior.  I've changed this call to be GetShaderPermutationFlags which will check the layout parameters's flag for editor only data which will have per-platform information.

- Pass in TargetPlatform so we don't create the MaterialID as the current platform (in this case the cooker) which would be wrong.
- Pass LayoutParams to GetDependentShaderAndVFTypes so it can pass the appropriate editor only data flag into ShouldCompilePermutation.

#rb Arciel.Rekman
[at]Arciel.Rekman, [at]Ben.Ingram
#jira UE-106214

#ROBOMERGE-SOURCE: CL 15587457 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v777-15581079)

[CL 15587467 by jason nadro in ue5-main branch]
2021-03-03 16:56:02 -04:00
zach bethel
a2bc3ea0f8 Converted canvas rendering to RDG.
#rb christopher.waters
#jira UE-106330

[CL 15157078 by zach bethel in ue5-main branch]
2021-01-21 14:46:38 -04:00
zach bethel
695f33573a More removal of view uniform buffer from mesh draw commands. Refactored pass uniform buffers in hair to use RDG.
#rb charles.derousiers

[CL 14889672 by zach bethel in ue5-main branch]
2020-12-09 13:11:49 -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
Sebastien Hillaire
8428b0ea62 Strata material graph, new pin type representing the mixed and layered BSDF.
Very basic and lots of things are missing but it is tracked.

#rb Charles.deRousiers

[CL 14444435 by Sebastien Hillaire in ue5-main branch]
2020-10-08 03:11:37 -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
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
brooke hubert
48113fc77e Adding EditorFramework to build.cs files
#rnx
#Jira UE-96448
#rb chris.gagnon

[CL 14114839 by brooke hubert in ue5-main branch]
2020-08-14 13:24:16 -04:00
Richard TalbotWatkin
51d4cb3f66 Fully deprecated old MeshDescription APIs.
Prepared direct attribute access for deprecation, preferring use of APIs to access static mesh attributes.
Fixed recently merged Enterprise code to comply with new APIs.
Changed all tools to use triangle-centric iteration where possible.
Added new MeshAttributeArray APIs for querying attribute flags, and added a new Mandatory flag.
Various bug fixes.
#rb Alexis.Matte

[CL 13873755 by Richard TalbotWatkin in ue5-main branch]
2020-07-16 08:23:15 -04:00
danny couture
ff158b6e95 Async Texture Compilation
- Feature can be activated in the Experimental section of the Editor Settings
 - Replace Texture2D/TextureCube resources by placeholders until their PlatformData is ready
 - Add a utility class allowing to encapsulate raw field pointers without breaking compatibility
 - Protect PlatformData from unsafe access through encapsulation.
 - Protect texture's resource from race conditions between game and render threads through encapsulation.
    - This allows to get rid of FlushRenderingCommands and long game-thread stutters when Updating a texture's resource.
    - UpdateResource was never safe to call without a FlushRenderingCommands and multiple call-site are doing exactly that, this will fix those cases.
    - Those were probably undetected due to their low occurence rate under normal conditions but can easily be reproed during async texture compilation on 32 cores.
 - Force wait on required texture compilations for MaterialBaking, ProxyMesh, Thumbnail generation for disk usage
 - Wait on all textures compilation whenever a wait for all shaders compilation is requested for safety (i.e. screenshot)
 - Compile UI and heightmap textures with higher priority to reduce visual artefacts
 - Increase priority of texture that have been rendered to improve time-to-usefulness of the editor under low core count
 - Async compilation is disabled for -game / non-editor mode as there is currently no support for async bulk data loading from external files
 - Properly cancel async tasks when UTexture is garbage collected before the compilation is finished
 - Show progress when explicitly waiting on compilation
 - Changing the mip settings in the texture editor (or any settings requiring the running platform data to be recomputed) will now be processed asynchronously.

DEBUGGING

 - Can be forcibly enabled/disabled through command-line via -asynctexturecompilation=[off, on, paused]
 - Can pause texture compilation using Editor.AsyncTextureCompilation = 2 or -asynctexturecompilation=paused
 - Can manually resume a specified amount of paused compilation using Editor.AsyncTextureCompilationResume [Num]
 - Can forcibly wait on all compilation using Editor.AsyncTextureCompilationFlushAll

BENCHMARKS

 - 3m15s to 1m20s when loading Apollo_Terrain with no textures in DDC (AMD TR 3970X)
 - 6m45s to 1m11s when loading Apollo_Terrain with no textures in DDC (-corelimit=8)
 - 3m10s to 1m54s when lauching PIE on Apollo_Terrain with no textures in DDC (AMD TR 3970X)
 - 7m43s to 1m36s when lauching PIE on Apollo_Terrain with no textures in DDC (-corelimit=8)
 - 0m57s to 0m42s when importing Attic_NVIDIA.usd with no textures in DDC (AMD TR 3970X)
 - 2m14s to 0m35s when importing Attic_NVIDIA.usd with no textures in DDC (-corelimit=4)

TESTS
 - Success on all material baking tests from EngineTests with -asynctexturecompilation=paused
 - Runned with -corelimit=1 all the way to unlimited
 - Cooking worked
 - Opening the texture editor/material editor will force the compilation to finish like expected.
 - Changing a setting in the texture editor will recompile async, even allowing to close the editor and continue doing other changes.
 - Unpausing the compilation will update the texture thumbnails properly.
 - Started with -asynctexturecompilation=paused, and then unpaused after a map loading, and then into a PIE session to stresstest UpdateResources.
 - Tested both dx11/dx12
 - Vulkan fails on Fortnite even with -asynctexturecompilation=off because of Landscape weigthmap, not this CL.
 - Compiled and tested FortniteGame / UE4 / ShooterGame projects

#rb Uriel.Doyon, Francis.Hurteau

[CL 13694814 by danny couture in ue5-main branch]
2020-06-16 22:16:25 -04:00
Richard TalbotWatkin
4884bf9d9a First pass of MeshDescription API and format refactor.
- Removed hardcoded element type arrays (Vertices, Edges, Triangles etc.). Mesh element types can now be arbitrarily added, with any number of channels.
- Mesh element containers have a much leaner format; instead of sparse arrays, they are now represented by a simple bitarray, determining whether an index is used or not. Consequently, mesh topology is now entirely described with the attribute system, e.g. edge start and end vertices, triangle vertices, etc.
- Support added for attributes of arbitrary dimensions, e.g. float[4] or int[2].
- Support added for attributes which index into another mesh element container.
- Added FMeshElementIndexer: this is an efficient container for maintaining backward references from one element type to another; for example, edges have an attribute specifying which vertices are at each end (an attribute of type FVertexID[2]). With an indexer, it is possible to look up which edges contain a given vertex, even though this is not explicitly stored. Indexers are designed to do minimal allocations and update lazily and in batch when necessary.
- Added support for preserving UV topology in static meshes. UVs are now a first-class element type which may be indexed directly from triangles.
- Added the facility to access the underlying array in an attribute array directly.
- Triangles now directly reference their vertex, edge and UV IDs. Vertex instances are to be deprecated.
- Changed various systems to be triangle-centric rather than polygon-centric, as this is faster. Triangles are presumed to be the elementary face type in a MeshDescription, even if polygons are still supported. The concept of polygons will be somewhat shifted to mean a group of triangles which should be treated collectively for editing purposes.
- Optimised normal/tangent generation and FBX import.
- Deprecated EditableMesh, MeshEditor and StaticMeshEditorExtension plugins - these are to be removed, but they still have certain hooks in place which need removing.
#rb

[CL 13568702 by Richard TalbotWatkin in ue5-main branch]
2020-05-28 10:56:57 -04:00
arciel rekman
ee07cacef8 Fix inability to distinguish Windows and WindowsNoEditor material SMs (UE-90852).
- ShaderMapId being identical makes the in-memory case alias material SMs when caching resources for -targetplatform=Windows+WindowsNoEditor
- Not a full fix, next up - Niagara and OpenColorIOColor

#rb Ben.Ingram
#jira UE-90852

#ROBOMERGE-SOURCE: CL 13011405 in //UE4/Release-4.25/... via CL 13011409 via CL 13011412
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v683-13008971)

[CL 13011420 by arciel rekman in Main branch]
2020-04-23 14:34:23 -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