Commit Graph

22 Commits

Author SHA1 Message Date
aurel cordonnier
fc542f6cfd Merge from Release-Engine-Staging @ 18081189 to Release-Engine-Test
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971

[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
2021-11-07 23:43:01 -05:00
aurel cordonnier
a6e741e007 Merge from Release-Engine-Staging @ 17915896 to Release-Engine-Test
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-25 20:05:28 -04:00
tyson brochu
d88c2c5f41 Fix a crash when shutting down editor after cancelling AutoLOD tool:
- Added a lock in EvaluateResult -- the FGraph destructor can't run until EvaluateResult is finished
- Hold on to shared node locks locally, just in case the FGraph object gets deleted while a node is running

#jira UETOOL-4290
#rnx
#rb michael.balzer
#ushell-cherrypick of 17585656 by tyson.brochu
#preflight 61520955d0edce00010199e8

#ROBOMERGE-AUTHOR: tyson.brochu
#ROBOMERGE-SOURCE: CL 17635571 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0

[CL 17635585 by tyson brochu in ue5-release-engine-test branch]
2021-09-27 15:59:40 -04:00
ryan schmidt
07419075da AutoLOD: make mesh computation type configurable using new GeometryFlow Switch node, and expose Normals calculation settings in Graph/Process/Tool
GeometryFlow:
Add TSwitchNode node, uses internal integer to select one of N inputs (N is currently defined in template type, so number of inputs is fixed). Add custom util function UpdateSwitchNodeInputIndex() to simplify changing switch integer.
Add FMeshMakeCleanGeometryNode/Settings, strips out undesired attribute sets and fills small holes, to create better input mesh for simplification
Add FSimpleInPlaceProcessMeshBaseNode, just runs some basic geometry operation, makes it easier to make new nodes. Converted FComputeMeshPerVertexOverlayNormalsNode to this base class and added FComputeMeshPerVertexNormalsNode.
Fixed attribute set handling issue in FSimplifyMeshNode

MeshLODToolset:
Added ECoreMeshGeneratorMode enum to FGenerateMeshLODGraph. This setting drives a Switch node that picks between Vox, Vox+Closure, and Simplify-only mesh generation paths.
Added SourceMeshHint to BuildGraph, allows for variable graph construction. Use to skip MaterialID transfer in single-material case.
Change default collision type to aligned boxes (fast and low visual complexity)
Exposed top-level Mesh Generation type, Normals settings in Graph/Process/Tool, minor UI and default changes

#rb tyson.brochu
#rnx
#jira none
#preflight 61391fa89c40ec00012ddec0

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17466797 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17466805 by ryan schmidt in ue5-release-engine-test branch]
2021-09-08 21:45:23 -04:00
Ryan Schmidt
623e4f96fe GeometryCore: create new GeometryCore Module. Move GeometricObjects code from GeometryProcessing plugin to this new module, as well as core FDynamicMesh3 classes (attributes, aabbtree/octree, change tracking). Update module Build.cs files that reference GeometricObjects.
#rb none
#rnx
#jira none
#preflight 60a713700569f300014a064a

[CL 16415082 by Ryan Schmidt in ue5-main branch]
2021-05-21 01:04:38 -04:00
tyson brochu
2b95145665 Add multi-texture baking to AutoLOD
#jira UETOOL-3071
#rb

[CL 16334835 by tyson brochu in ue5-main branch]
2021-05-14 16:11:23 -04:00
tyson brochu
90913525bc Remove previous parallel executor for AutoLOD. FGraph now uses a Async/Future system by default, which is typically faster and more flexible.
#jira UETOOL-3022
#rnx
#preflight 605378741965b60001ec30e4

#ROBOMERGE-SOURCE: CL 15739130 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v781-15675533)

[CL 15739142 by tyson brochu in ue5-main branch]
2021-03-18 12:53:01 -04:00
Ryan Schmidt
df497aa095 GeometryProcessing: move FVector2/3/4/f/d back out of UE::Geometry:: namespace
#rb none
#rnx
#jira none

[CL 15733915 by Ryan Schmidt in ue5-main branch]
2021-03-17 21:45:29 -04:00
Ryan Schmidt
ffe3b401cd GeometryProcessing: move all public types in GeometryProcessing plugin into UE::Geometry:: namespace, as well as some code in MeshModelingToolset. Fix fallout in Water, Paint Mode, ChaosEditor, DataPrep, Text3D, Unit Tests, internal projects.
#rb jimmy.andrews, semion.piskarev
#jira none

[CL 15661651 by Ryan Schmidt in ue5-main branch]
2021-03-09 19:33:56 -04:00
tyson brochu
5f2df008ae GeometryFlowGraph: detect when trying to connect to an input that already has an incoming connection.
#jira UETOOL-2962
#rnx
#rb jimmy.andrews

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

[CL 15532097 by tyson brochu in ue5-main branch]
2021-02-25 15:26:34 -04:00
ryan schmidt
f9810df402 GeometryProcessing: Added FMeshAttributeTransfer class, currently supports transferring triangle material IDs from one mesh to another, via nearest-point queries
GeometryFlow: Added FCompactMeshNode, FComputeMeshPerVertexOverlayNormalsNode (convenient), and FTransferMeshMaterialIDsNode that applies FMeshAttributeTransfer based on two input meshes. Graph InferConnection() now is more clever and can infer connections in cases where a potentially-ambiguous connection is resolved based on what is already connected (ie if two mesh inputs, and one is assigned, infer that second one is intended)

LODToolset: LODGraph now transfers materials and computes per-vertex normals before Simplify node, and Compacts afterwards (required for other downstream processes).
LODProcess now handles multiple materials, and can re-use input materials if they do not require a baked texture or normal map. In repeat applications, previously-auto-generated StaticMesh Materials are detected and removed from the material set. Normals and Tangents are explicitly computed for stored HiRes source and LOD0, and build settings updated appropriately.

#rb none
#rnx
#jira none
[FYI] tyson.brochu

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

[CL 15470044 by ryan schmidt in ue5-main branch]
2021-02-19 01:48:21 -04:00
tyson brochu
dc4f180417 Alternate parallel execution for GeometryFlow graphs. Starting from the desired output, recursively kick off upstream nodes with Async. Wait for the upstream nodes to finish and then execute the node.
#jira UETOOL-2978
#rnx
#rb jimmy.andrews

[CL 15323311 by tyson brochu in ue5-main branch]
2021-02-04 18:26:38 -04:00
tyson brochu
d330d59b32 Fix GeometryFlow unit tests after adding ProgressCancel and removing DebugNodeExecutionLog from the Executor in CL 15273200.
#rnx

[CL 15275496 by tyson brochu in ue5-main branch]
2021-02-01 17:57:14 -04:00
tyson brochu
a1e18ff827 Move AutoLOD computation to background thread(s). Make GeometryFlow graph execution cancellable.
#jira UETOOL-2947 UETOOL-2979
#rnx

[CL 15273200 by tyson brochu in ue5-main branch]
2021-02-01 14:43:20 -04:00
tyson brochu
e95131662c Enable default values on Node inputs. AddInput now takes an additional optional parameter for the default value.
#jira UETOOL-2791
#rnx
#rb ryan.schmidt

[CL 15166169 by tyson brochu in ue5-main branch]
2021-01-22 15:38:32 -04:00
tyson brochu
47b3d19da3 Add support for multiple group layers to MakeTriangleSetsNode. Retrieve the IndexSets for a given group layer by passing in the layer's name.
#jira UETOOL-2941
#rnx
#rb david.hill

[CL 15136616 by tyson brochu in ue5-main branch]
2021-01-19 12:17:27 -04:00
tyson brochu
5cac9a8ad1 Add debug dump of graph connectivity (node-to-node only, not input-to-output). Allows for graph visualization in third party applications.
#rnx
#rb jimmy.andrews

[CL 14933712 by tyson brochu in ue5-main branch]
2020-12-15 15:34:09 -04:00
tyson brochu
8556d50519 GeometryProcessingUnitTests: default to multithreaded mode, use --no-mt for single threaded. Detect and skip tests that would crash with no multithreading.
#jira none
#rnx
#rb ryan.schmidt

[CL 14899326 by tyson brochu in ue5-main branch]
2020-12-10 13:53:15 -04:00
tyson brochu
2f89b553cd GeometryFlowExecutor: Fix stealing outputs from nodes when using parallel execution. This change also effectively adds a second API to the parallel executor -- the user can now call a single synchronous function to get outputs, or they can call a function to kick off the multithreaded process, and then wait for individual outputs.
#jira none
#rb ryan.schmidt
#rnx

[CL 14890519 by tyson brochu in ue5-main branch]
2020-12-09 14:50:06 -04:00
Ryan Schmidt
264bf0acf6 MeshLODToolset: FGenerateMeshLODGraph now has API for updating parameters on various internal nodes. Added FGenerateStaticMeshLODProcessSettings which contains subset of those parameters that we want to expose to user. Make that available via UGenerateStaticMeshLODAssetToolProperties in AutoGenLODTool. Add necessary watchers and recompute notifications. Add collision data visualization.
#rb none
#rnx
#jira none
#fyi tyson.brochu

[CL 14858813 by Ryan Schmidt in ue5-main branch]
2020-12-04 16:20:14 -04:00
tyson brochu
19e506ef12 Parallel executor for GeometryFlow based on TaskGraph. Unit tests for GeometryFlow.
#jira UETOOL-2780
#rnx
#rb ryan.schmidt

[CL 14851448 by tyson brochu in ue5-main branch]
2020-12-03 19:56:06 -04:00
Ryan Schmidt
029115b18f GeometryProcessing: add new prototype GeometryFlow plugin for implementing expensive geometry processing operations in a node-graph style. Add MeshLODToolset plugin that implements a GeometryFlow graph for processing a high-resolution source mesh+materials into a game-ready staticmesh asset + material instances + collision geometry. GenerateStaticMeshLODAssetTool exposes this process in a Modeling Mode tool.
#rb none
#rnx
#jira none

[CL 14808819 by Ryan Schmidt in ue5-main branch]
2020-11-24 01:17:27 -04:00