2019-12-26 14:45:42 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
2018-12-15 14:19:22 -05:00
# include "GeometryCollection/GeometryCollectionSceneProxy.h"
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
# include "Async/ParallelFor.h"
# include "Engine/Engine.h"
2022-11-09 20:53:21 -05:00
# include "GeometryCollection/GeometryCollection.h"
# include "GeometryCollection/GeometryCollectionObject.h"
2022-12-15 16:01:51 -05:00
# include "MaterialDomain.h"
2020-12-04 14:51:23 -04:00
# include "MaterialShaderType.h"
2023-02-16 21:52:00 -05:00
# include "MaterialShared.h"
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
# include "Materials/Material.h"
2022-12-16 16:24:02 -05:00
# include "Materials/MaterialRenderProxy.h"
2022-09-09 00:53:22 -04:00
# include "CommonRenderResources.h"
2020-07-15 03:39:13 -04:00
# include "Rendering/NaniteResources.h"
2021-05-11 01:18:05 -04:00
# include "PrimitiveSceneInfo.h"
2018-12-15 14:19:22 -05:00
# include "GeometryCollection/GeometryCollectionComponent.h"
2020-06-23 18:40:00 -04:00
# include "GeometryCollection/GeometryCollectionAlgo.h"
2019-06-08 17:15:34 -04:00
# include "GeometryCollection/GeometryCollectionHitProxy.h"
2023-02-16 12:40:53 -05:00
# include "RHIDefinitions.h"
# include "ComponentReregisterContext.h"
# include "ComponentRecreateRenderStateContext.h"
2023-06-13 11:46:40 -04:00
# include "RenderGraphBuilder.h"
2023-02-16 12:40:53 -05:00
# if RHI_RAYTRACING
# include "RayTracingInstance.h"
2019-06-08 17:15:34 -04:00
# endif
2021-04-28 19:53:28 -04:00
2019-06-08 17:15:34 -04:00
# if INTEL_ISPC
2019-06-17 14:12:45 -04:00
# if USING_CODE_ANALYSIS
MSVC_PRAGMA ( warning ( push ) )
MSVC_PRAGMA ( warning ( disable : ALL_CODE_ANALYSIS_WARNINGS ) )
# endif // USING_CODE_ANALYSIS
# ifdef __clang__
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wnonportable-include-path"
# endif
2019-06-08 17:15:34 -04:00
# include "GeometryCollectionSceneProxy.ispc.generated.h"
2019-06-17 14:12:45 -04:00
# ifdef __clang__
# pragma clang diagnostic pop
# endif
# if USING_CODE_ANALYSIS
MSVC_PRAGMA ( warning ( pop ) )
# endif // USING_CODE_ANALYSIS
2022-01-24 10:54:27 -05:00
static_assert ( sizeof ( ispc : : FMatrix44f ) = = sizeof ( FMatrix44f ) , " sizeof(ispc::FMatrix44f) != sizeof(FMatrix44f) " ) ;
static_assert ( sizeof ( ispc : : FVector3f ) = = sizeof ( FVector3f ) , " sizeof(ispc::FVector3f) != sizeof(FVector3f) " ) ;
2019-06-08 17:15:34 -04:00
# endif
2021-10-12 21:21:22 -04:00
2019-06-08 17:15:34 -04:00
static int32 GParallelGeometryCollectionBatchSize = 1024 ;
static TAutoConsoleVariable < int32 > CVarParallelGeometryCollectionBatchSize (
TEXT ( " r.ParallelGeometryCollectionBatchSize " ) ,
GParallelGeometryCollectionBatchSize ,
TEXT ( " The number of vertices per thread dispatch in a single collection. \n " ) ,
ECVF_Default
) ;
2021-04-28 19:53:28 -04:00
static int32 GGeometryCollectionTripleBufferUploads = 1 ;
2020-10-29 13:38:15 -04:00
FAutoConsoleVariableRef CVarGeometryCollectionTripleBufferUploads (
2019-06-08 17:15:34 -04:00
TEXT ( " r.GeometryCollectionTripleBufferUploads " ) ,
GGeometryCollectionTripleBufferUploads ,
TEXT ( " Whether to triple buffer geometry collection uploads, which allows Lock_NoOverwrite uploads which are much faster on the GPU with large amounts of data. " ) ,
ECVF_Default
) ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
2021-04-28 19:53:28 -04:00
static int32 GGeometryCollectionOptimizedTransforms = 1 ;
FAutoConsoleVariableRef CVarGeometryCollectionOptimizedTransforms (
TEXT ( " r.GeometryCollectionOptimizedTransforms " ) ,
GGeometryCollectionOptimizedTransforms ,
TEXT ( " Whether to optimize transform update by skipping automatic updates in GPUScene. " ) ,
2021-05-17 22:54:18 -04:00
FConsoleVariableDelegate : : CreateLambda ( [ ] ( IConsoleVariable * InVariable )
{
FGlobalComponentRecreateRenderStateContext Context ;
} ) ,
2021-04-28 19:53:28 -04:00
ECVF_Scalability | ECVF_RenderThreadSafe
) ;
2021-10-12 21:21:22 -04:00
static int32 GRayTracingGeometryCollectionProxyMeshes = 0 ;
FAutoConsoleVariableRef CVarRayTracingGeometryCollectionProxyMeshes (
TEXT ( " r.RayTracing.Geometry.GeometryCollection " ) ,
GRayTracingGeometryCollectionProxyMeshes ,
TEXT ( " Include geometry collection proxy meshes in ray tracing effects (default = 0 (Geometry collection meshes disabled in ray tracing)) " ) ,
ECVF_RenderThreadSafe
) ;
2022-11-16 19:21:50 -05:00
2022-05-20 18:55:54 -04:00
# if !defined(CHAOS_GEOMETRY_COLLECTION_SET_DYNAMIC_DATA_ISPC_ENABLED_DEFAULT)
# define CHAOS_GEOMETRY_COLLECTION_SET_DYNAMIC_DATA_ISPC_ENABLED_DEFAULT 1
# endif
// Support run-time toggling on supported platforms in non-shipping configurations
# if !INTEL_ISPC || UE_BUILD_SHIPPING
static constexpr bool bGeometryCollection_SetDynamicData_ISPC_Enabled = INTEL_ISPC & & CHAOS_GEOMETRY_COLLECTION_SET_DYNAMIC_DATA_ISPC_ENABLED_DEFAULT ;
# else
static bool bGeometryCollection_SetDynamicData_ISPC_Enabled = CHAOS_GEOMETRY_COLLECTION_SET_DYNAMIC_DATA_ISPC_ENABLED_DEFAULT ;
static FAutoConsoleVariableRef CVarGeometryCollectionSetDynamicDataISPCEnabled ( TEXT ( " r.GeometryCollectionSetDynamicData.ISPC " ) , bGeometryCollection_SetDynamicData_ISPC_Enabled , TEXT ( " Whether to use ISPC optimizations to set dynamic data in geometry collections " ) ) ;
2022-01-24 10:54:27 -05:00
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
DEFINE_LOG_CATEGORY_STATIC ( FGeometryCollectionSceneProxyLogging , Log , All ) ;
2021-04-20 10:45:04 -04:00
FGeometryCollectionDynamicDataPool GDynamicDataPool ;
2023-02-16 12:40:53 -05:00
2021-10-12 21:21:22 -04:00
class FGeometryCollectionMeshCollectorResources : public FOneFrameResource
{
public :
FGeometryCollectionVertexFactory VertexFactory ;
2023-02-16 12:40:53 -05:00
FGeometryCollectionMeshCollectorResources ( ERHIFeatureLevel : : Type InFeatureLevel )
: VertexFactory ( InFeatureLevel , true )
2021-10-12 21:21:22 -04:00
{
}
2023-02-16 12:40:53 -05:00
2021-10-12 21:21:22 -04:00
virtual ~ FGeometryCollectionMeshCollectorResources ( )
{
VertexFactory . ReleaseResource ( ) ;
}
virtual FGeometryCollectionVertexFactory & GetVertexFactory ( ) { return VertexFactory ; }
} ;
2023-02-16 12:40:53 -05:00
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
FGeometryCollectionSceneProxy : : FGeometryCollectionSceneProxy ( UGeometryCollectionComponent * Component )
: FPrimitiveSceneProxy ( Component )
, MaterialRelevance ( Component - > GetMaterialRelevance ( GetScene ( ) . GetFeatureLevel ( ) ) )
2023-02-16 12:40:53 -05:00
, MeshResource ( Component - > GetRestCollection ( ) - > RenderData - > MeshResource )
, MeshDescription ( Component - > GetRestCollection ( ) - > RenderData - > MeshDescription )
2019-06-08 17:15:34 -04:00
, VertexFactory ( GetScene ( ) . GetFeatureLevel ( ) )
, bSupportsManualVertexFetch ( VertexFactory . SupportsManualVertexFetch ( GetScene ( ) . GetFeatureLevel ( ) ) )
2021-12-15 14:15:45 -05:00
, bSupportsTripleBufferVertexUpload ( GRHISupportsMapWriteNoOverwrite )
2023-02-16 12:40:53 -05:00
# if WITH_EDITOR
2019-06-08 17:15:34 -04:00
, bShowBoneColors ( Component - > GetShowBoneColors ( ) )
2021-08-30 17:11:38 -04:00
, bSuppressSelectionMaterial ( Component - > GetSuppressSelectionMaterial ( ) )
2023-02-16 12:40:53 -05:00
, VertexFactoryDebugColor ( GetScene ( ) . GetFeatureLevel ( ) )
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
EnableGPUSceneSupportFlags ( ) ;
2018-12-15 14:19:22 -05:00
Materials . Empty ( ) ;
2019-06-08 17:15:34 -04:00
const int32 NumMaterials = Component - > GetNumMaterials ( ) ;
for ( int MaterialIndex = 0 ; MaterialIndex < NumMaterials ; + + MaterialIndex )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2018-12-15 14:19:22 -05:00
Materials . Push ( Component - > GetMaterial ( MaterialIndex ) ) ;
2019-06-08 17:15:34 -04:00
if ( Materials [ MaterialIndex ] = = nullptr | | ! Materials [ MaterialIndex ] - > CheckMaterialUsage_Concurrent ( MATUSAGE_GeometryCollections ) )
2018-12-15 14:19:22 -05:00
{
Materials [ MaterialIndex ] = UMaterial : : GetDefaultMaterial ( MD_Surface ) ;
}
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
Component - > GetRestTransforms ( RestTransforms ) ;
NumTransforms = RestTransforms . Num ( ) ;
2019-06-08 17:15:34 -04:00
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
2023-02-16 12:40:53 -05:00
// Render by SubSection if we are in the rigid body picker.
bUsesSubSections = Component - > GetIsTransformSelectionMode ( ) & & MeshDescription . SubSections . Num ( ) ;
// Enable bone hit selection proxies if we are in the rigid body picker or in the fracture modes.
bEnableBoneSelection = Component - > GetEnableBoneSelection ( ) ;
if ( bEnableBoneSelection | | bUsesSubSections )
{
for ( int32 TransformIndex = 0 ; TransformIndex < NumTransforms ; + + TransformIndex )
{
HGeometryCollection * HitProxy = new HGeometryCollection ( Component , TransformIndex ) ;
HitProxies . Add ( HitProxy ) ;
}
}
# endif
# if WITH_EDITOR
if ( bShowBoneColors | | bEnableBoneSelection )
{
Component - > GetBoneColors ( BoneColors ) ;
ColorVertexBuffer . InitFromColorArray ( BoneColors ) ;
if ( Component - > GetRestCollection ( ) )
{
BoneSelectedMaterial = Component - > GetRestCollection ( ) - > GetBoneSelectedMaterial ( ) ;
}
if ( ! BoneSelectedMaterial )
{
int32 LegacyBoneMaterialID = Component - > GetBoneSelectedMaterialID ( ) ;
if ( Materials . IsValidIndex ( LegacyBoneMaterialID ) )
{
BoneSelectedMaterial = Materials [ LegacyBoneMaterialID ] ;
}
}
if ( BoneSelectedMaterial & & ! BoneSelectedMaterial - > CheckMaterialUsage_Concurrent ( MATUSAGE_GeometryCollections ) )
{
// If we have an invalid BoneSelectedMaterial, switch it back to null to skip its usage in GetDynamicMeshElements below
BoneSelectedMaterial = nullptr ;
}
// Make sure the vertex color material has the usage flag for rendering geometry collections
if ( GEngine - > VertexColorMaterial )
{
GEngine - > VertexColorMaterial - > CheckMaterialUsage_Concurrent ( MATUSAGE_GeometryCollections ) ;
}
}
// Get hidden geometry and zero the associated transforms.
Component - > GetHiddenTransforms ( HiddenTransforms ) ;
if ( HiddenTransforms . Num ( ) )
{
check ( HiddenTransforms . Num ( ) = = RestTransforms . Num ( ) ) ;
for ( int32 TransformIndex = 0 ; TransformIndex < RestTransforms . Num ( ) ; + + TransformIndex )
{
if ( HiddenTransforms [ TransformIndex ] )
{
RestTransforms [ TransformIndex ] = FMatrix44f ( EForceInit : : ForceInitToZero ) ;
}
}
}
2021-03-18 04:00:57 -04:00
# endif
2019-06-08 17:15:34 -04:00
// #todo(dmp): This flag means that when motion blur is turned on, it will always render geometry collections into the
// velocity buffer. Note that the way around this is to loop through the global matrices and test whether they have
// changed from the prev to curr frame, but this is expensive. We should revisit this if the draw calls for velocity
// rendering become a problem. One solution could be to use internal solver sleeping state to drive motion blur.
bAlwaysHasVelocity = true ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
FGeometryCollectionSceneProxy : : ~ FGeometryCollectionSceneProxy ( )
2021-10-12 21:21:22 -04:00
{
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
if ( DynamicData ! = nullptr )
{
2021-05-31 22:01:58 -04:00
GDynamicDataPool . Release ( DynamicData ) ;
DynamicData = nullptr ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2021-10-12 21:21:22 -04:00
}
2023-02-16 12:40:53 -05:00
SIZE_T FGeometryCollectionSceneProxy : : GetTypeHash ( ) const
{
static size_t UniquePointer ;
return reinterpret_cast < size_t > ( & UniquePointer ) ;
}
static void UpdateLooseParameter (
FGeometryCollectionVertexFactory & VertexFactory ,
2021-10-12 21:21:22 -04:00
FRHIShaderResourceView * BoneTransformSRV ,
FRHIShaderResourceView * BonePrevTransformSRV ,
FRHIShaderResourceView * BoneMapSRV )
{
FGCBoneLooseParameters LooseParameters ;
LooseParameters . VertexFetch_BoneTransformBuffer = BoneTransformSRV ;
LooseParameters . VertexFetch_BonePrevTransformBuffer = BonePrevTransformSRV ;
LooseParameters . VertexFetch_BoneMapBuffer = BoneMapSRV ;
EUniformBufferUsage UniformBufferUsage = VertexFactory . EnableLooseParameter ? UniformBuffer_SingleFrame : UniformBuffer_MultiFrame ;
VertexFactory . LooseParameterUniformBuffer = FGCBoneLooseParametersRef : : CreateUniformBufferImmediate ( LooseParameters , UniformBufferUsage ) ;
}
2023-06-13 11:46:40 -04:00
void FGeometryCollectionSceneProxy : : SetupVertexFactory ( FRHICommandListBase & RHICmdList , FGeometryCollectionVertexFactory & GeometryCollectionVertexFactory , FColorVertexBuffer * ColorOverride ) const
2021-10-12 21:21:22 -04:00
{
FGeometryCollectionVertexFactory : : FDataType Data ;
2023-02-16 12:40:53 -05:00
FPositionVertexBuffer const & PositionVB = bSupportsManualVertexFetch ? MeshResource . PositionVertexBuffer : SkinnedPositionVertexBuffer ;
PositionVB . BindPositionVertexBuffer ( & GeometryCollectionVertexFactory , Data ) ;
2021-10-12 21:21:22 -04:00
2023-02-16 12:40:53 -05:00
MeshResource . StaticMeshVertexBuffer . BindTangentVertexBuffer ( & GeometryCollectionVertexFactory , Data ) ;
MeshResource . StaticMeshVertexBuffer . BindPackedTexCoordVertexBuffer ( & GeometryCollectionVertexFactory , Data ) ;
MeshResource . StaticMeshVertexBuffer . BindLightMapVertexBuffer ( & GeometryCollectionVertexFactory , Data , 0 ) ;
FColorVertexBuffer const & ColorVB = ColorOverride ? * ColorOverride : MeshResource . ColorVertexBuffer ;
ColorVB . BindColorVertexBuffer ( & GeometryCollectionVertexFactory , Data ) ;
if ( bSupportsManualVertexFetch )
{
Data . BoneMapSRV = MeshResource . BoneMapVertexBuffer . GetSRV ( ) ;
Data . BoneTransformSRV = TransformBuffers [ CurrentTransformBufferIndex ] . VertexBufferSRV ;
Data . BonePrevTransformSRV = PrevTransformBuffers [ CurrentTransformBufferIndex ] . VertexBufferSRV ;
}
else
{
// Make sure these are not null to pass UB validation
Data . BoneMapSRV = GNullColorVertexBuffer . VertexBufferSRV ;
Data . BoneTransformSRV = GNullColorVertexBuffer . VertexBufferSRV ;
Data . BonePrevTransformSRV = GNullColorVertexBuffer . VertexBufferSRV ;
}
2021-10-12 21:21:22 -04:00
GeometryCollectionVertexFactory . SetData ( Data ) ;
if ( ! GeometryCollectionVertexFactory . IsInitialized ( ) )
{
2023-06-13 11:46:40 -04:00
GeometryCollectionVertexFactory . InitResource ( RHICmdList ) ;
2021-10-12 21:21:22 -04:00
}
else
{
2023-06-13 11:46:40 -04:00
GeometryCollectionVertexFactory . UpdateRHI ( RHICmdList ) ;
2021-10-12 21:21:22 -04:00
}
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
void FGeometryCollectionSceneProxy : : CreateRenderThreadResources ( )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-06-13 11:46:40 -04:00
FRHICommandListBase & RHICmdList = FRHICommandListImmediate : : Get ( ) ;
2019-06-08 17:15:34 -04:00
if ( bSupportsManualVertexFetch )
{
2023-02-16 12:40:53 -05:00
// Initialize transform buffers and upload rest transforms.
2019-06-08 17:15:34 -04:00
TransformBuffers . AddDefaulted ( 1 ) ;
PrevTransformBuffers . AddDefaulted ( 1 ) ;
2023-02-16 12:40:53 -05:00
TransformBuffers [ 0 ] . NumTransforms = NumTransforms ;
PrevTransformBuffers [ 0 ] . NumTransforms = NumTransforms ;
2023-06-13 11:46:40 -04:00
TransformBuffers [ 0 ] . InitResource ( RHICmdList ) ;
PrevTransformBuffers [ 0 ] . InitResource ( RHICmdList ) ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
const bool bLocalGeometryCollectionTripleBufferUploads = ( GGeometryCollectionTripleBufferUploads ! = 0 ) & & bSupportsTripleBufferVertexUpload ;
const EResourceLockMode LockMode = bLocalGeometryCollectionTripleBufferUploads ? RLM_WriteOnly_NoOverwrite : RLM_WriteOnly ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
FGeometryCollectionTransformBuffer & TransformBuffer = GetCurrentTransformBuffer ( ) ;
2023-06-22 11:25:09 -04:00
TransformBuffer . UpdateDynamicData ( RHICmdList , RestTransforms , LockMode ) ;
2023-02-16 12:40:53 -05:00
FGeometryCollectionTransformBuffer & PrevTransformBuffer = GetCurrentPrevTransformBuffer ( ) ;
2023-06-22 11:25:09 -04:00
PrevTransformBuffer . UpdateDynamicData ( RHICmdList , RestTransforms , LockMode ) ;
2019-06-08 17:15:34 -04:00
}
2022-01-28 10:09:40 -05:00
else
{
2023-02-16 12:40:53 -05:00
// Initialize CPU skinning buffer with rest transforms.
SkinnedPositionVertexBuffer . Init ( MeshResource . PositionVertexBuffer . GetNumVertices ( ) , false ) ;
2023-06-13 11:46:40 -04:00
SkinnedPositionVertexBuffer . InitResource ( RHICmdList ) ;
2023-06-22 11:25:09 -04:00
UpdateSkinnedPositions ( RHICmdList , RestTransforms ) ;
2022-01-28 10:09:40 -05:00
}
2019-06-08 17:15:34 -04:00
2023-06-13 11:46:40 -04:00
SetupVertexFactory ( RHICmdList , VertexFactory ) ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
# if WITH_EDITOR
if ( bShowBoneColors | | bEnableBoneSelection )
2019-06-08 17:15:34 -04:00
{
2023-02-16 12:40:53 -05:00
// Initialize debug color buffer and associated vertex factory.
2023-06-13 11:46:40 -04:00
ColorVertexBuffer . InitResource ( RHICmdList ) ;
SetupVertexFactory ( RHICmdList , VertexFactoryDebugColor , & ColorVertexBuffer ) ;
2019-06-08 17:15:34 -04:00
}
2023-02-16 12:40:53 -05:00
# endif
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
if ( MeshDescription . NumVertices & & HitProxies . Num ( ) )
2019-06-08 17:15:34 -04:00
{
2023-02-16 12:40:53 -05:00
// Create buffer containing per vertex hit proxy IDs.
HitProxyIdBuffer . Init ( MeshDescription . NumVertices ) ;
2023-06-13 11:46:40 -04:00
HitProxyIdBuffer . InitResource ( RHICmdList ) ;
2023-02-16 12:40:53 -05:00
uint16 const * BoneMapData = & MeshResource . BoneMapVertexBuffer . BoneIndex ( 0 ) ;
ParallelFor ( MeshDescription . NumVertices , [ & ] ( int32 i )
{
2023-02-17 19:39:56 -05:00
// Note that some fracture undo/redo operations can: recreate scene proxy, then update render data, then recreate proxy again.
// In that case we can come here the first time with too few hit proxy objects for the bone map which hasn't updated.
// But we then enter here a second time with the render data correct.
int16 ProxyIndex = BoneMapData [ i ] ;
ProxyIndex = HitProxies . IsValidIndex ( ProxyIndex ) ? ProxyIndex : 0 ;
2023-02-16 12:40:53 -05:00
HitProxyIdBuffer . VertexColor ( i ) = HitProxies [ ProxyIndex ] - > Id . GetColor ( ) ;
} ) ;
2023-06-13 11:46:40 -04:00
void * VertexBufferData = RHICmdList . LockBuffer ( HitProxyIdBuffer . VertexBufferRHI , 0 , HitProxyIdBuffer . GetNumVertices ( ) * HitProxyIdBuffer . GetStride ( ) , RLM_WriteOnly ) ;
2023-02-16 12:40:53 -05:00
FMemory : : Memcpy ( VertexBufferData , HitProxyIdBuffer . GetVertexData ( ) , HitProxyIdBuffer . GetNumVertices ( ) * HitProxyIdBuffer . GetStride ( ) ) ;
2023-06-13 11:46:40 -04:00
RHICmdList . UnlockBuffer ( HitProxyIdBuffer . VertexBufferRHI ) ;
2019-06-08 17:15:34 -04:00
}
2023-02-16 12:40:53 -05:00
# endif
# if RHI_RAYTRACING
if ( IsRayTracingEnabled ( ) )
{
FRayTracingGeometryInitializer Initializer ;
Initializer . DebugName = FName ( TEXT ( " GeometryCollection " ) ) ;
Initializer . GeometryType = RTGT_Triangles ;
Initializer . bFastBuild = true ;
Initializer . bAllowUpdate = false ;
Initializer . TotalPrimitiveCount = 0 ;
RayTracingGeometry . SetInitializer ( Initializer ) ;
2023-06-13 11:46:40 -04:00
RayTracingGeometry . InitResource ( RHICmdList ) ;
2023-02-16 12:40:53 -05:00
bGeometryResourceUpdated = true ;
}
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
void FGeometryCollectionSceneProxy : : DestroyRenderThreadResources ( )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2019-06-08 17:15:34 -04:00
if ( bSupportsManualVertexFetch )
{
for ( int32 i = 0 ; i < TransformBuffers . Num ( ) ; i + + )
{
TransformBuffers [ i ] . ReleaseResource ( ) ;
PrevTransformBuffers [ i ] . ReleaseResource ( ) ;
}
TransformBuffers . Reset ( ) ;
}
2023-02-16 12:40:53 -05:00
else
{
SkinnedPositionVertexBuffer . ReleaseResource ( ) ;
}
VertexFactory . ReleaseResource ( ) ;
# if WITH_EDITOR
VertexFactoryDebugColor . ReleaseResource ( ) ;
ColorVertexBuffer . ReleaseResource ( ) ;
# endif
2019-06-08 17:15:34 -04:00
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
HitProxyIdBuffer . ReleaseResource ( ) ;
# endif
2023-02-16 12:40:53 -05:00
# if RHI_RAYTRACING
if ( IsRayTracingAllowed ( ) )
{
RayTracingGeometry . ReleaseResource ( ) ;
RayTracingDynamicVertexBuffer . Release ( ) ;
}
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
void FGeometryCollectionSceneProxy : : SetDynamicData_RenderThread ( FGeometryCollectionDynamicData * NewDynamicData )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
check ( IsInRenderingThread ( ) ) ;
2023-06-13 11:46:40 -04:00
FRHICommandListImmediate & RHICmdList = FRHICommandListExecutor : : GetImmediateCommandList ( ) ;
2023-02-16 12:40:53 -05:00
if ( DynamicData )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
GDynamicDataPool . Release ( DynamicData ) ;
DynamicData = nullptr ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
DynamicData = NewDynamicData ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
2023-02-16 12:40:53 -05:00
if ( MeshDescription . NumVertices = = 0 )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
return ;
}
// Early out if if we are applying (non-dynamic) rest transforms over multiple frames.
if ( ! DynamicData - > IsDynamic & & TransformVertexBuffersContainsRestTransforms )
{
return ;
}
TransformVertexBuffersContainsRestTransforms = ! DynamicData - > IsDynamic ;
if ( bSupportsManualVertexFetch )
{
const bool bLocalGeometryCollectionTripleBufferUploads = ( GGeometryCollectionTripleBufferUploads ! = 0 ) & & bSupportsTripleBufferVertexUpload ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
2023-02-16 12:40:53 -05:00
if ( bLocalGeometryCollectionTripleBufferUploads & & TransformBuffers . Num ( ) = = 1 )
{
TransformBuffers . AddDefaulted ( 2 ) ;
PrevTransformBuffers . AddDefaulted ( 2 ) ;
for ( int32 i = 1 ; i < 3 ; i + + )
2021-05-18 13:03:42 -04:00
{
2023-02-16 12:40:53 -05:00
TransformBuffers [ i ] . NumTransforms = NumTransforms ;
PrevTransformBuffers [ i ] . NumTransforms = NumTransforms ;
2023-06-13 11:46:40 -04:00
TransformBuffers [ i ] . InitResource ( RHICmdList ) ;
PrevTransformBuffers [ i ] . InitResource ( RHICmdList ) ;
2021-05-18 13:03:42 -04:00
}
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
// Copy the transform data over to the vertex buffer
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2021-10-12 21:21:22 -04:00
const EResourceLockMode LockMode = bLocalGeometryCollectionTripleBufferUploads ? RLM_WriteOnly_NoOverwrite : RLM_WriteOnly ;
2023-02-16 12:40:53 -05:00
CycleTransformBuffers ( bLocalGeometryCollectionTripleBufferUploads ) ;
2021-10-12 21:21:22 -04:00
FGeometryCollectionTransformBuffer & TransformBuffer = GetCurrentTransformBuffer ( ) ;
FGeometryCollectionTransformBuffer & PrevTransformBuffer = GetCurrentPrevTransformBuffer ( ) ;
2023-02-16 12:40:53 -05:00
VertexFactory . SetBoneTransformSRV ( TransformBuffer . VertexBufferSRV ) ;
VertexFactory . SetBonePrevTransformSRV ( PrevTransformBuffer . VertexBufferSRV ) ;
2021-10-12 21:21:22 -04:00
2023-02-16 12:40:53 -05:00
# if WITH_EDITOR
// Implement hiding geometry in editor by zeroing the transform.
// Could move this to InitDynamicData?
if ( HiddenTransforms . Num ( ) )
2018-12-15 14:19:22 -05:00
{
2023-02-16 12:40:53 -05:00
for ( int32 TransformIndex = 0 ; TransformIndex < DynamicData - > Transforms . Num ( ) ; + + TransformIndex )
{
if ( HiddenTransforms [ TransformIndex ] )
{
DynamicData - > Transforms [ TransformIndex ] = FMatrix44f ( EForceInit : : ForceInitToZero ) ;
DynamicData - > PrevTransforms [ TransformIndex ] = FMatrix44f ( EForceInit : : ForceInitToZero ) ;
}
}
}
# endif
if ( DynamicData - > IsDynamic )
{
2023-06-22 11:25:09 -04:00
TransformBuffer . UpdateDynamicData ( RHICmdList , DynamicData - > Transforms , LockMode ) ;
PrevTransformBuffer . UpdateDynamicData ( RHICmdList , DynamicData - > PrevTransforms , LockMode ) ;
2023-02-16 12:40:53 -05:00
}
else
{
// If we are rendering the base mesh geometry then use RestTransforms for both current and previous transforms.
2023-06-22 11:25:09 -04:00
TransformBuffer . UpdateDynamicData ( RHICmdList , RestTransforms , LockMode ) ;
PrevTransformBuffer . UpdateDynamicData ( RHICmdList , RestTransforms , LockMode ) ;
2018-12-15 14:19:22 -05:00
}
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
UpdateLooseParameter ( VertexFactory , TransformBuffer . VertexBufferSRV , PrevTransformBuffer . VertexBufferSRV , MeshResource . BoneMapVertexBuffer . GetSRV ( ) ) ;
# if WITH_EDITOR
if ( bShowBoneColors | | bEnableBoneSelection )
{
VertexFactoryDebugColor . SetBoneTransformSRV ( TransformBuffer . VertexBufferSRV ) ;
VertexFactoryDebugColor . SetBonePrevTransformSRV ( PrevTransformBuffer . VertexBufferSRV ) ;
UpdateLooseParameter ( VertexFactoryDebugColor , TransformBuffer . VertexBufferSRV , PrevTransformBuffer . VertexBufferSRV , MeshResource . BoneMapVertexBuffer . GetSRV ( ) ) ;
}
# endif
2019-06-08 17:15:34 -04:00
}
}
else
{
2023-06-22 11:25:09 -04:00
UpdateSkinnedPositions ( RHICmdList , DynamicData - > IsDynamic ? DynamicData - > Transforms : RestTransforms ) ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2021-10-12 21:21:22 -04:00
# if RHI_RAYTRACING
if ( IsRayTracingEnabled ( ) )
{
bGeometryResourceUpdated = true ;
}
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-06-22 11:25:09 -04:00
void FGeometryCollectionSceneProxy : : UpdateSkinnedPositions ( FRHICommandListBase & RHICmdList , TArray < FMatrix44f > const & Transforms )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
const int32 VertexStride = SkinnedPositionVertexBuffer . GetStride ( ) ;
const int32 VertexCount = SkinnedPositionVertexBuffer . GetNumVertices ( ) ;
check ( VertexCount = = MeshDescription . NumVertices )
2023-06-22 11:25:09 -04:00
void * VertexBufferData = RHICmdList . LockBuffer ( SkinnedPositionVertexBuffer . VertexBufferRHI , 0 , VertexCount * VertexStride , RLM_WriteOnly ) ;
2023-02-16 12:40:53 -05:00
check ( VertexBufferData ! = nullptr ) ;
FPositionVertexBuffer const & SourcePositionVertexBuffer = MeshResource . PositionVertexBuffer ;
FBoneMapVertexBuffer const & SourceBoneMapVertexBuffer = MeshResource . BoneMapVertexBuffer ;
bool bParallelGeometryCollection = true ;
int32 ParallelGeometryCollectionBatchSize = CVarParallelGeometryCollectionBatchSize . GetValueOnRenderThread ( ) ;
int32 NumBatches = ( VertexCount / ParallelGeometryCollectionBatchSize ) ;
if ( VertexCount ! = ParallelGeometryCollectionBatchSize )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
NumBatches + + ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
// Batch too small, don't bother with parallel
if ( ParallelGeometryCollectionBatchSize > VertexCount )
{
bParallelGeometryCollection = false ;
ParallelGeometryCollectionBatchSize = VertexCount ;
}
auto GeometryCollectionBatch ( [ & ] ( int32 BatchNum )
{
uint32 IndexOffset = ParallelGeometryCollectionBatchSize * BatchNum ;
uint32 ThisBatchSize = ParallelGeometryCollectionBatchSize ;
// Check for final batch
if ( IndexOffset + ParallelGeometryCollectionBatchSize > MeshDescription . NumVertices )
{
ThisBatchSize = VertexCount - IndexOffset ;
}
if ( ThisBatchSize > 0 )
{
const FMatrix44f * RESTRICT BoneTransformsPtr = Transforms . GetData ( ) ;
if ( bGeometryCollection_SetDynamicData_ISPC_Enabled )
{
# if INTEL_ISPC
uint8 * VertexBufferOffset = ( uint8 * ) VertexBufferData + ( IndexOffset * VertexStride ) ;
ispc : : SetDynamicData_RenderThread (
( ispc : : FVector3f * ) VertexBufferOffset ,
ThisBatchSize ,
VertexStride ,
& SourceBoneMapVertexBuffer . BoneIndex ( IndexOffset ) ,
( ispc : : FMatrix44f * ) BoneTransformsPtr ,
( ispc : : FVector3f * ) & SourcePositionVertexBuffer . VertexPosition ( IndexOffset ) ) ;
# endif
}
else
{
for ( uint32 i = IndexOffset ; i < IndexOffset + ThisBatchSize ; i + + )
{
FVector3f Transformed = BoneTransformsPtr [ SourceBoneMapVertexBuffer . BoneIndex ( i ) ] . TransformPosition ( SourcePositionVertexBuffer . VertexPosition ( i ) ) ;
FMemory : : Memcpy ( ( uint8 * ) VertexBufferData + ( i * VertexStride ) , & Transformed , sizeof ( FVector3f ) ) ;
}
}
}
} ) ;
ParallelFor ( NumBatches , GeometryCollectionBatch , ! bParallelGeometryCollection ) ;
2023-06-22 11:25:09 -04:00
RHICmdList . UnlockBuffer ( SkinnedPositionVertexBuffer . VertexBufferRHI ) ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2018-12-15 14:19:22 -05:00
FMaterialRenderProxy * FGeometryCollectionSceneProxy : : GetMaterial ( FMeshElementCollector & Collector , int32 MaterialIndex ) const
{
FMaterialRenderProxy * MaterialProxy = nullptr ;
2023-02-16 12:40:53 -05:00
# if WITH_EDITOR
2019-06-08 17:15:34 -04:00
if ( bShowBoneColors & & GEngine - > VertexColorMaterial )
2018-12-15 14:19:22 -05:00
{
2023-02-16 12:40:53 -05:00
// Material for colored bones
2019-06-08 17:15:34 -04:00
UMaterial * VertexColorVisualizationMaterial = GEngine - > VertexColorMaterial ;
2023-02-16 12:40:53 -05:00
FMaterialRenderProxy * VertexColorVisualizationMaterialInstance = new FColoredMaterialRenderProxy (
2019-06-08 17:15:34 -04:00
VertexColorVisualizationMaterial - > GetRenderProxy ( ) ,
GetSelectionColor ( FLinearColor : : White , false , false )
) ;
Collector . RegisterOneFrameMaterialProxy ( VertexColorVisualizationMaterialInstance ) ;
2018-12-15 14:19:22 -05:00
MaterialProxy = VertexColorVisualizationMaterialInstance ;
}
2023-02-16 12:40:53 -05:00
else
# endif
if ( Materials . IsValidIndex ( MaterialIndex ) )
2018-12-15 14:19:22 -05:00
{
2018-12-16 00:01:59 -05:00
MaterialProxy = Materials [ MaterialIndex ] - > GetRenderProxy ( ) ;
2018-12-15 14:19:22 -05:00
}
if ( MaterialProxy = = nullptr )
{
2018-12-16 00:01:59 -05:00
MaterialProxy = UMaterial : : GetDefaultMaterial ( MD_Surface ) - > GetRenderProxy ( ) ;
2018-12-15 14:19:22 -05:00
}
return MaterialProxy ;
}
2023-02-16 12:40:53 -05:00
FVertexFactory const * FGeometryCollectionSceneProxy : : GetVertexFactory ( ) const
{
# if WITH_EDITOR
return bShowBoneColors ? & VertexFactoryDebugColor : & VertexFactory ;
# else
return & VertexFactory ;
# endif
}
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
void FGeometryCollectionSceneProxy : : GetDynamicMeshElements ( const TArray < const FSceneView * > & Views , const FSceneViewFamily & ViewFamily , uint32 VisibilityMap , FMeshElementCollector & Collector ) const
{
QUICK_SCOPE_CYCLE_COUNTER ( STAT_GeometryCollectionSceneProxy_GetDynamicMeshElements ) ;
2023-02-16 12:40:53 -05:00
if ( MeshDescription . NumVertices = = 0 )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
return ;
}
const FEngineShowFlags & EngineShowFlags = ViewFamily . EngineShowFlags ;
const bool bWireframe = AllowDebugViewmodes ( ) & & EngineShowFlags . Wireframe ;
const bool bProxyIsSelected = IsSelected ( ) ;
2022-07-06 11:17:25 -04:00
2023-02-16 12:40:53 -05:00
auto SetDebugMaterial = [ this , & Collector , & EngineShowFlags , bProxyIsSelected ] ( FMeshBatch & Mesh ) - > void
{
2022-07-06 11:17:25 -04:00
# if UE_ENABLE_DEBUG_DRAWING
2023-02-16 12:40:53 -05:00
// flag to indicate whether we've set a debug material yet
// Note: Will be used if we add more debug material options
// (compare to variable of same name in StaticMeshRender.cpp)
bool bDebugMaterialRenderProxySet = false ;
2022-07-06 11:17:25 -04:00
2023-02-16 12:40:53 -05:00
if ( ! bDebugMaterialRenderProxySet & & bProxyIsSelected & & EngineShowFlags . VertexColors & & AllowDebugViewmodes ( ) )
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
{
2023-02-16 12:40:53 -05:00
// Override the mesh's material with our material that draws the vertex colors
UMaterial * VertexColorVisualizationMaterial = NULL ;
switch ( GVertexColorViewMode )
2018-12-15 14:19:22 -05:00
{
2023-02-16 12:40:53 -05:00
case EVertexColorViewMode : : Color :
VertexColorVisualizationMaterial = GEngine - > VertexColorViewModeMaterial_ColorOnly ;
break ;
2019-06-17 14:53:58 -04:00
2023-02-16 12:40:53 -05:00
case EVertexColorViewMode : : Alpha :
VertexColorVisualizationMaterial = GEngine - > VertexColorViewModeMaterial_AlphaAsColor ;
break ;
2021-03-18 04:00:57 -04:00
2023-02-16 12:40:53 -05:00
case EVertexColorViewMode : : Red :
VertexColorVisualizationMaterial = GEngine - > VertexColorViewModeMaterial_RedOnly ;
break ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
case EVertexColorViewMode : : Green :
VertexColorVisualizationMaterial = GEngine - > VertexColorViewModeMaterial_GreenOnly ;
break ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
case EVertexColorViewMode : : Blue :
VertexColorVisualizationMaterial = GEngine - > VertexColorViewModeMaterial_BlueOnly ;
break ;
2019-06-08 17:15:34 -04:00
}
2023-02-16 12:40:53 -05:00
check ( VertexColorVisualizationMaterial ! = NULL ) ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
// Note: static mesh renderer does something more complicated involving per-section selection,
// but whole component selection seems ok for now
bool bSectionIsSelected = bProxyIsSelected ;
2021-03-18 04:00:57 -04:00
2023-02-16 12:40:53 -05:00
auto VertexColorVisualizationMaterialInstance = new FColoredMaterialRenderProxy (
VertexColorVisualizationMaterial - > GetRenderProxy ( ) ,
GetSelectionColor ( FLinearColor : : White , bSectionIsSelected , IsHovered ( ) )
) ;
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
Collector . RegisterOneFrameMaterialProxy ( VertexColorVisualizationMaterialInstance ) ;
Mesh . MaterialRenderProxy = VertexColorVisualizationMaterialInstance ;
2021-03-18 04:00:57 -04:00
2023-02-16 12:40:53 -05:00
bDebugMaterialRenderProxySet = true ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
2023-02-16 12:40:53 -05:00
# endif
} ;
for ( int32 ViewIndex = 0 ; ViewIndex < Views . Num ( ) ; ViewIndex + + )
{
if ( ( VisibilityMap & ( 1 < < ViewIndex ) ) = = 0 )
{
continue ;
}
// If not dynamic then use the section array with interior fracture surfaces removed.
bool bRemoveInternalFaces = DynamicData ! = nullptr & & ! DynamicData - > IsDynamic & & MeshDescription . SectionsNoInternal . Num ( ) ;
# if WITH_EDITOR
// If hiding geometry in editor then we don't remove hidden faces.
bRemoveInternalFaces & = HiddenTransforms . Num ( ) = = 0 ;
# endif
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
// If using subsections then use the subsection array.
TArray < FGeometryCollectionMeshElement > const & SectionArray = bUsesSubSections
? MeshDescription . SubSections
: bRemoveInternalFaces ? MeshDescription . SectionsNoInternal : MeshDescription . Sections ;
# else
TArray < FGeometryCollectionMeshElement > const & SectionArray = bRemoveInternalFaces ? MeshDescription . SectionsNoInternal : MeshDescription . Sections ;
# endif
// Grab the material proxies we'll be using for each section.
TArray < FMaterialRenderProxy * , TInlineAllocator < 32 > > MaterialProxies ;
for ( int32 SectionIndex = 0 ; SectionIndex < SectionArray . Num ( ) ; + + SectionIndex )
{
const FGeometryCollectionMeshElement & Section = SectionArray [ SectionIndex ] ;
FMaterialRenderProxy * MaterialProxy = GetMaterial ( Collector , Section . MaterialIndex ) ;
MaterialProxies . Add ( MaterialProxy ) ;
}
// Draw the meshes.
for ( int32 SectionIndex = 0 ; SectionIndex < SectionArray . Num ( ) ; + + SectionIndex )
{
const FGeometryCollectionMeshElement & Section = SectionArray [ SectionIndex ] ;
FMeshBatch & Mesh = Collector . AllocateMesh ( ) ;
Mesh . bWireframe = bWireframe ;
Mesh . VertexFactory = GetVertexFactory ( ) ;
Mesh . MaterialRenderProxy = MaterialProxies [ SectionIndex ] ;
Mesh . ReverseCulling = IsLocalToWorldDeterminantNegative ( ) ;
Mesh . Type = PT_TriangleList ;
Mesh . DepthPriorityGroup = SDPG_World ;
Mesh . bCanApplyViewModeOverrides = true ;
SetDebugMaterial ( Mesh ) ;
FMeshBatchElement & BatchElement = Mesh . Elements [ 0 ] ;
BatchElement . IndexBuffer = & MeshResource . IndexBuffer ;
BatchElement . PrimitiveUniformBuffer = GetUniformBuffer ( ) ;
BatchElement . FirstIndex = Section . TriangleStart * 3 ;
BatchElement . NumPrimitives = Section . TriangleCount ;
BatchElement . MinVertexIndex = Section . VertexStart ;
BatchElement . MaxVertexIndex = Section . VertexEnd ;
Collector . AddMesh ( ViewIndex , Mesh ) ;
}
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
// Highlight selected bone using specialized material.
// #note: This renders the geometry again but with the bone selection material. Ideally we'd have one render pass and one material.
if ( bEnableBoneSelection & & ! bSuppressSelectionMaterial & & BoneSelectedMaterial )
{
FMaterialRenderProxy * MaterialRenderProxy = BoneSelectedMaterial - > GetRenderProxy ( ) ;
FMeshBatch & Mesh = Collector . AllocateMesh ( ) ;
Mesh . bWireframe = bWireframe ;
Mesh . VertexFactory = & VertexFactoryDebugColor ;
Mesh . MaterialRenderProxy = MaterialRenderProxy ;
Mesh . ReverseCulling = IsLocalToWorldDeterminantNegative ( ) ;
Mesh . Type = PT_TriangleList ;
Mesh . DepthPriorityGroup = SDPG_World ;
Mesh . bCanApplyViewModeOverrides = false ;
FMeshBatchElement & BatchElement = Mesh . Elements [ 0 ] ;
BatchElement . IndexBuffer = & MeshResource . IndexBuffer ;
BatchElement . PrimitiveUniformBuffer = GetUniformBuffer ( ) ;
BatchElement . FirstIndex = 0 ;
BatchElement . NumPrimitives = MeshDescription . NumTriangles ;
BatchElement . MinVertexIndex = 0 ;
BatchElement . MaxVertexIndex = MeshDescription . NumVertices ;
Collector . AddMesh ( ViewIndex , Mesh ) ;
}
# endif // GEOMETRYCOLLECTION_EDITOR_SELECTION
# if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
RenderBounds ( Collector . GetPDI ( ViewIndex ) , ViewFamily . EngineShowFlags , GetBounds ( ) , IsSelected ( ) ) ;
# endif
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
}
}
2021-10-12 21:21:22 -04:00
# if RHI_RAYTRACING
void FGeometryCollectionSceneProxy : : GetDynamicRayTracingInstances ( FRayTracingMaterialGatheringContext & Context , TArray < struct FRayTracingInstance > & OutRayTracingInstances )
{
2023-02-16 12:40:53 -05:00
if ( GRayTracingGeometryCollectionProxyMeshes = = 0 | | MeshDescription . NumVertices = = 0 )
2021-10-12 21:21:22 -04:00
{
return ;
}
QUICK_SCOPE_CYCLE_COUNTER ( STAT_GeometryCollectionSceneProxy_GetDynamicRayTracingInstances ) ;
2023-02-16 12:40:53 -05:00
const uint32 LODIndex = 0 ;
const bool bWireframe = false ;
//Loose parameter needs to be updated every frame
FGeometryCollectionMeshCollectorResources * CollectorResources ;
CollectorResources = & Context . RayTracingMeshResourceCollector .
AllocateOneFrameResource < FGeometryCollectionMeshCollectorResources > ( GetScene ( ) . GetFeatureLevel ( ) ) ;
FGeometryCollectionVertexFactory & GeometryCollectionVertexFactory = CollectorResources - > GetVertexFactory ( ) ;
// Render dynamic objects
if ( ! GeometryCollectionVertexFactory . GetType ( ) - > SupportsRayTracingDynamicGeometry ( ) )
2021-10-12 21:21:22 -04:00
{
2023-02-16 12:40:53 -05:00
return ;
2021-10-12 21:21:22 -04:00
}
2023-06-13 11:46:40 -04:00
SetupVertexFactory ( Context . GraphBuilder . RHICmdList , GeometryCollectionVertexFactory ) ;
2023-02-16 12:40:53 -05:00
// If not dynamic then use the section array with interior fracture surfaces removed.
const bool bRemoveInternalFaces = DynamicData ! = nullptr & & ! DynamicData - > IsDynamic & & MeshDescription . SectionsNoInternal . Num ( ) ;
TArray < FGeometryCollectionMeshElement > const & SectionArray = bRemoveInternalFaces ? MeshDescription . SectionsNoInternal : MeshDescription . Sections ;
UpdatingRayTracingGeometry_RenderingThread ( SectionArray ) ;
if ( SectionArray . Num ( ) & & RayTracingGeometry . RayTracingGeometryRHI . IsValid ( ) )
{
FRayTracingInstance RayTracingInstance ;
RayTracingInstance . Geometry = & RayTracingGeometry ;
RayTracingInstance . InstanceTransforms . Emplace ( GetLocalToWorld ( ) ) ;
// Grab the material proxies we'll be using for each section
TArray < FMaterialRenderProxy * , TInlineAllocator < 32 > > MaterialProxies ;
for ( int32 SectionIndex = 0 ; SectionIndex < SectionArray . Num ( ) ; + + SectionIndex )
{
const FGeometryCollectionMeshElement & Section = SectionArray [ SectionIndex ] ;
//TODO: Add BoneColor support in Path/Ray tracing?
FMaterialRenderProxy * MaterialProxy = Materials [ Section . MaterialIndex ] - > GetRenderProxy ( ) ;
if ( MaterialProxy = = nullptr )
{
MaterialProxy = UMaterial : : GetDefaultMaterial ( MD_Surface ) - > GetRenderProxy ( ) ;
}
MaterialProxies . Add ( MaterialProxy ) ;
}
uint32 MaxVertexIndex = 0 ;
for ( int32 SectionIndex = 0 ; SectionIndex < SectionArray . Num ( ) ; + + SectionIndex )
{
const FGeometryCollectionMeshElement & Section = SectionArray [ SectionIndex ] ;
// Draw the mesh
FMeshBatch & Mesh = RayTracingInstance . Materials . AddDefaulted_GetRef ( ) ;
Mesh . bWireframe = bWireframe ;
Mesh . SegmentIndex = SectionIndex ;
Mesh . VertexFactory = & GeometryCollectionVertexFactory ;
Mesh . MaterialRenderProxy = MaterialProxies [ SectionIndex ] ;
Mesh . LODIndex = LODIndex ;
Mesh . ReverseCulling = IsLocalToWorldDeterminantNegative ( ) ;
Mesh . bDisableBackfaceCulling = true ;
Mesh . Type = PT_TriangleList ;
Mesh . DepthPriorityGroup = SDPG_World ;
Mesh . bCanApplyViewModeOverrides = true ;
FMeshBatchElement & BatchElement = Mesh . Elements [ 0 ] ;
BatchElement . IndexBuffer = & MeshResource . IndexBuffer ;
BatchElement . PrimitiveUniformBuffer = GetUniformBuffer ( ) ;
BatchElement . FirstIndex = Section . TriangleStart * 3 ;
BatchElement . NumPrimitives = Section . TriangleCount ;
BatchElement . MinVertexIndex = Section . VertexStart ;
BatchElement . MaxVertexIndex = Section . VertexEnd ;
BatchElement . NumInstances = 1 ;
MaxVertexIndex = std : : max ( Section . VertexEnd , MaxVertexIndex ) ;
//#TODO: bone color, bone selection and render bound?
}
FRWBuffer * VertexBuffer = RayTracingDynamicVertexBuffer . NumBytes > 0 ? & RayTracingDynamicVertexBuffer : nullptr ;
const uint32 VertexCount = MaxVertexIndex + 1 ;
Context . DynamicRayTracingGeometriesToUpdate . Add (
FRayTracingDynamicGeometryUpdateParams
{
RayTracingInstance . Materials ,
false ,
VertexCount ,
VertexCount * ( uint32 ) sizeof ( FVector3f ) ,
RayTracingGeometry . Initializer . TotalPrimitiveCount ,
& RayTracingGeometry ,
VertexBuffer ,
true
}
) ;
OutRayTracingInstances . Emplace ( RayTracingInstance ) ;
}
2021-10-12 21:21:22 -04:00
}
2023-02-16 12:40:53 -05:00
void FGeometryCollectionSceneProxy : : UpdatingRayTracingGeometry_RenderingThread ( TArray < FGeometryCollectionMeshElement > const & InSectionArray )
2021-10-12 21:21:22 -04:00
{
2023-06-19 14:00:50 -04:00
FRHICommandListBase & RHICmdList = FRHICommandListImmediate : : Get ( ) ;
2023-02-16 12:40:53 -05:00
if ( bGeometryResourceUpdated )
2021-10-12 21:21:22 -04:00
{
RayTracingGeometry . Initializer . Segments . Empty ( ) ;
RayTracingGeometry . Initializer . TotalPrimitiveCount = 0 ;
2023-02-16 12:40:53 -05:00
for ( int SectionIndex = 0 ; SectionIndex < InSectionArray . Num ( ) ; + + SectionIndex )
2021-10-12 21:21:22 -04:00
{
2023-02-16 12:40:53 -05:00
const FGeometryCollectionMeshElement & Section = InSectionArray [ SectionIndex ] ;
2021-10-12 21:21:22 -04:00
FRayTracingGeometrySegment Segment ;
2023-02-16 12:40:53 -05:00
Segment . FirstPrimitive = Section . TriangleStart ;
Segment . VertexBuffer = MeshResource . PositionVertexBuffer . VertexBufferRHI ;
Segment . NumPrimitives = Section . TriangleCount ;
Segment . MaxVertices = Section . VertexEnd ;
2021-10-12 21:21:22 -04:00
RayTracingGeometry . Initializer . Segments . Add ( Segment ) ;
2023-02-16 12:40:53 -05:00
RayTracingGeometry . Initializer . TotalPrimitiveCount + = Section . TriangleCount ;
2021-10-12 21:21:22 -04:00
}
if ( RayTracingGeometry . Initializer . TotalPrimitiveCount > 0 )
{
2023-02-16 12:40:53 -05:00
RayTracingGeometry . Initializer . IndexBuffer = MeshResource . IndexBuffer . IndexBufferRHI ;
2022-07-15 15:16:21 -04:00
// Create the ray tracing geometry but delay the acceleration structure build.
2023-06-19 14:00:50 -04:00
RayTracingGeometry . CreateRayTracingGeometry ( RHICmdList , ERTAccelerationStructureBuildPriority : : Skip ) ;
2021-10-12 21:21:22 -04:00
}
bGeometryResourceUpdated = false ;
}
}
2023-02-16 12:40:53 -05:00
# endif // RHI_RAYTRACING
2021-10-12 21:21:22 -04:00
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
FPrimitiveViewRelevance FGeometryCollectionSceneProxy : : GetViewRelevance ( const FSceneView * View ) const
{
FPrimitiveViewRelevance Result ;
Result . bDrawRelevance = IsShown ( View ) ;
Result . bShadowRelevance = IsShadowCast ( View ) ;
Result . bDynamicRelevance = true ;
2019-06-08 17:15:34 -04:00
Result . bRenderInMainPass = ShouldRenderInMainPass ( ) ;
Result . bUsesLightingChannels = GetLightingChannelMask ( ) ! = GetDefaultLightingChannelMask ( ) ;
Result . bRenderCustomDepth = ShouldRenderCustomDepth ( ) ;
Result . bTranslucentSelfShadow = bCastVolumetricTranslucentShadow ;
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
MaterialRelevance . SetPrimitiveViewRelevance ( Result ) ;
2019-06-08 17:15:34 -04:00
2021-02-09 23:05:37 -04:00
Result . bVelocityRelevance = DrawsVelocity ( ) & & Result . bOpaque & & Result . bRenderInMainPass ;
2019-06-08 17:15:34 -04:00
Copying //UE4/Dev-Physics to //UE4/Dev-Main (Source: //UE4/Dev-Physics @ 4242698)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4023283 by Michael.Lentine
Fix memory leak.
Change 4024243 by Michael.Lentine
Add debugging output code from github #4533.
#jira ue-55764
Change 4026362 by Michael.Lentine
Merged github #3704.
#jira ue-463394
Change 4026545 by Michael.Lentine
Fix ordering of collision settings changed callback
#jira ue-50475
Change 4026609 by Michael.Lentine
Fix crash in destruction for when world is not valid
#jira ue-53989
Change 4026786 by Michael.Lentine
Merging github #4632 to fix memory leak.
#jira ue-57255
Change 4027293 by Michael.Lentine
Integrate github #4338.
#jira ue-53497
Change 4033517 by Michael.Lentine
Fix collision body creation for spline merging.
#jira ue-53956
Change 4039750 by Michael.Lentine
Add basic error message if cooking fails.
Change 4040210 by Michael.Lentine
Check for nullptr
Change 4098887 by Michael.Lentine
Fix warnings.
Change 4103511 by Michael.Lentine
Prevent crash when BodyInstance is invalid.
Change 4117826 by Michael.Lentine
Fix check for body being fixed.
Change 4122307 by Benn.Gallagher
PS4/clang build fixes
Change 4124479 by Benn.Gallagher
Fix non-portable filename used as an include (Linux editor build CIS error)
Change 4125450 by Benn.Gallagher
Fixup Ocean
Change 4127210 by Michael.Lentine
Update the PreviousBoneTransforms array when setting transforms in DestructibleComponent
#jira ue-58813
Change 4127309 by Benn.Gallagher
Fix Win32 shipping builds
Change 4134570 by Michael.Lentine
Missed fixes for WITH_UEPHYSICS.
Change 4134585 by Michael.Lentine
Missed a few more files.
Change 4134670 by Michael.Lentine
Update formatting.
Change 4134671 by Michael.Lentine
More formatting.
Change 4150615 by Benn.Gallagher
Moved immediate mode into engine, as it is now depended on by the physics engine.
Change 4150680 by Benn.Gallagher
Missed file
Change 4150980 by Benn.Gallagher
Rename kinematic target for immediate mode to avoid ambiguous symbols in engine
Change 4151400 by Brice.Criswell
Apeiron
Levelset initilization issue.
----
Change 4157880 by Benn.Gallagher
More fixing unresolved template specialisations for FN editor.
Change 4159128 by Michael.Lentine
Compile fixes
Change 4159786 by Brice.Criswell
Apeiron
Levelset curvature initialization fix, clamps out of bounds phi values to phi[i].
------
Change 4160382 by Michael.Lentine
Fix node initialization
Change 4160463 by Brice.Criswell
Apeiron
Levelset index fix.
----
Change 4161425 by Benn.Gallagher
Added package, class and struct redirects for moving immediate physics into engine.
Change 4164195 by Brice.Criswell
GeometryCollection : Code review updates
- Removed typedef for GeometryCollection::ManagedArray<T>
- Renamed Enumerations to begin with E prefix, retyped to be uint8.
- Removed EArrayScoipe::FScopeNone, now defautls to FScopeShared
- Formatted type modifiers to follow UE4 coding standard.
- Derived the ManagedArrayBase from FNonCopyable
- Disabled TManagedArrays copy constructor and assignment operator.
- Converted most accessors on GeometryCollection to TSharedRef.
- Added .inl style definitions to simplify the management of the ManagedArrayTypes
-----
Change 4164235 by Brice.Criswell
GeometryCollection : Added New Files
- Added the ManagedArrayTypes files.
----
Change 4164309 by Brice.Criswell
GeometryCollection :
Moved the initialization of the RigidBodyIdArray and CenterOfMassArray into the WITH_APEIRON definition.
-----
Change 4166133 by Brice.Criswell
GeometryCollection
Added GeometryCollectionEdit class to protect access to the rest and dynamic collections.
-----
Change 4171540 by Michael.Lentine
Fix reset
#robomerge destruction
Change 4171912 by Michael.Lentine
Rename BVHParticles
#robomerge destruction
Change 4172445 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4172623 by Brice.Criswell
GeometryCollection
Debugging ToString to inspect the GeometryCollection
----
Change 4172711 by Michael.Lentine
Add Immediate Path to Geometry Collection
Change 4172778 by Michael.Lentine
Update LL Interface to use Simulation type.
#robomerge destruction
Change 4172780 by Michael.Lentine
Missed files
#robomerge destruction
Change 4173238 by Benn.Gallagher
Missed file from last checkin
Change 4173554 by Benn.Gallagher
Few extra changes for const correctness and actor counts
Change 4174153 by Benn.Gallagher
Fixed non-unity build issue from Geom Collection.
Change 4175355 by Brice.Criswell
GeometryCollection
Separated the GeometryCollection from USE_APEIRON flag.
-----
Change 4175533 by Brice.Criswell
GeometryCollection
Defaulting Aperion to off.
-----
Change 4175761 by Michael.Lentine
Fix collisions.
Change 4177105 by Benn.Gallagher
Another geom collection CIS fix when running without PCHs
Change 4177796 by Brice.Criswell
GeometryCollection
- Added parenting function to manage the BoneHierarchy Array
- Split collection along yz-plane.
-----
Change 4177989 by Brice.Criswell
GeometryCollection
- Moved Hierarchy and Transform array elements into base class TransformCollection
- Renamed ParticleGroup to TransformGroup.
-----
Change 4178826 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
----
Change 4178840 by Brice.Criswell
Geometry Collection
Removed FORCEINLINE from GeometryCollectionEdit.GetRestCollection
----
Change 4179493 by Brice.Criswell
GeometryCollection
New icons.
-----
Change 4182428 by Brice.Criswell
Build Configuration
Apeiron configuration.
- Modified bCompileApeiron to enable the compilation of the Apeiron plugin.
- Added bUseApeiron to enable Apeiron in the physics interfaces.
Changed PhysScene_Apeiron to enable when bCompileApeiron is enabled.
Disabled the GeometryCollection* Plugins in the build.
-------
Change 4185886 by Brice.Criswell
GeometryCollection
Renaming TransformGroup.
---
Change 4186389 by michael.lentine
Don't create in parallel for immediate mode.
Change 4186457 by michael.lentine
Hack to prevent crashing when Visible is nullptr.
Change 4198872 by Brice.Criswell
Apeiron
Clustering changes
- Clustering based on hierarchy's defined within the Geometry Collection
-----
Change 4199861 by Brice.Criswell
GeometryCollection
Disable Apeiron in the Collection.
------
Change 4200089 by Brice.Criswell
GeometryCollection
Updated to enable Apeiron in the GeometryCollection when the bCompileAperion flag is enabled in the UnrealBuildTool.
---
Change 4200333 by Brice.Criswell
Copying //UE4/Dev-Destruction to Dev-Physics (//UE4/Dev-Physics)
-----
Change 4202231 by Michael.Lentine
Disable collisions between adjacent bodies connected by a joint. This typically would be specified by an artist but classic PhysX always does this uncondintionally so our clients are used to this.
Change 4202748 by Michael.Lentine
Fix 2015 compile.
Change 4204528 by Michael.Lentine
Disable Apeiron.
Change 4206396 by Michael.Lentine
Fix 2015 build. Static cast apparently is not an accetible conversion from uint32 to bool.
#robomerge destruction
Change 4206604 by Michael.Lentine
Fix for using ccd and kinematic.
#jira UE-61694
#robomerge destruction
Change 4206711 by mason.seay
Refreshed Set Angular Drive nodes to clear out orphan pins
Change 4207286 by Brice.Criswell
GeometryCollection
Transform hierarchy evaluation within BoneHierarchy of the Collection.
Parenting operations are implemented on an updated morphology using :
ParentTransforms(UGeometryCollection* GeometryCollection, const int32 InsertAtIndex, const TArray<int32>& SelectedBones);
To parent a new transform:
int32 RootIndex << within len( TransformGroup ) or -1 for a non-parented node.
int32 BoneIndex = Collection->AddElements(1, UGeometryCollection::TransformGroup);
GeometryCollectionAlgo::ParentTransform(Collection, RootIndex, BoneIndex);
Transform[BoneIndex] = <some transform within local space of the RootIndex>
Default collections have all geometry not parented. The function EnsureSingleRoot was added to guarantee that the collection has at least one parent node.
FGeometryCollectionCommands::EnsureSinglRoot(UGeometryCollection* RestCollection)
Then matrices relative to the collections root are calculated using:
GlobalMatrices(UGeometryCollection* GeometryCollection, TArray<FTransform> & Transforms);
Added Damage Threshold to GeometryCollectionActor
------
Change 4208039 by Brice.Criswell
GeometryCollection
Fix for static include failure.
---
Change 4208170 by Brice.Criswell
GeometryCache
SplitAlongYZ to support multiple levels and orientations.
---
Change 4208174 by Michael.Lentine
Avoid shadow warnings and switch logs to verbose instead of warnings.
#robomerge destruction
Change 4210255 by Benn.Gallagher
Static analysis fixes
Change 4210394 by Michael.Lentine
Use correct particle type for updateconstraints.
Change 4211153 by Brice.Criswell
Apeiron
Exposing friction and coefficient of restitution to the actor.
-----
Change 4213034 by michael.lentine
Rename bounding volume
Change 4216783 by Michael.Lentine
Committing cooking fix to Dev-Physics in order to get smoke tests running.
Change 4218078 by Benn.Gallagher
Fixed memory and TLS slot leak caused by previous change to physics scene cleanup while cooking
#jira UE-61633
Change 4219206 by Michael.Lentine
Use the adaptor to get the rotation.
#jira ue-61748
Change 4220469 by Benn.Gallagher
Fixed overlaps re-triggering on movement due to bad transform chaining from component to phys actor to shape
#jira UE-61703
Change 4220538 by Benn.Gallagher
Fixed PhysX errors when setting global transforms of kinematic and static objects.
#jira none
Change 4222138 by Michael.Lentine
Update use of Vulkan on android.
Change 4222139 by Michael.Lentine
Update OculusHMD plugin to use correct vulkan search path.
Change 4225740 by Michael.Lentine
Integrate changes to update rotation and mass.
Change 4225928 by michael.lentine
Use more accurate collision point.
Change 4226560 by michael.lentine
Enable contact graph
Change 4227397 by Michael.Lentine
If we don't have a global scene we need to not detect collisions.
#robomerge destruction
Change 4227410 by Michael.Lentine
Missing include
#robomerge destruction
Change 4228107 by Michael.Lentine
Integrate static contact changes.
Change 4228612 by michael.lentine
Use more correct thresholding.
Change 4228734 by Benn.Gallagher
Getting LLImmediate high level stood up and simulating
Implementation is incomplete, only what is required to get simple scenes simulating under immediate mode
Change 4228748 by Benn.Gallagher
Missed file from checkin
Change 4228885 by Ori.Cohen
Added base physics interface class to help provide default behavior and easily chain functionality together
Change 4228992 by Ori.Cohen
Fix cis
Change 4229921 by Benn.Gallagher
Fixed contact pre-filter performance regression
Change 4230825 by Benn.Gallagher
Moved WIP physics interfaces to Experimental/ folders
Change 4230853 by Benn.Gallagher
Fixup includes after moving WIP physics interfaces
Change 4231414 by Michael.Lentine
Use global namespace to avoid mac compile errors.
#jira ue-62137
[CL 4242847 by Michael Lentine in Main branch]
2018-07-31 02:23:26 -04:00
return Result ;
2018-12-15 14:19:22 -05:00
}
2019-06-08 17:15:34 -04:00
2023-02-16 12:40:53 -05:00
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
2019-06-08 17:15:34 -04:00
HHitProxy * FGeometryCollectionSceneProxy : : CreateHitProxies ( UPrimitiveComponent * Component , TArray < TRefCountPtr < HHitProxy > > & OutHitProxies )
{
HHitProxy * DefaultHitProxy = FPrimitiveSceneProxy : : CreateHitProxies ( Component , OutHitProxies ) ;
2023-02-16 12:40:53 -05:00
OutHitProxies . Append ( HitProxies ) ;
2019-06-08 17:15:34 -04:00
return DefaultHitProxy ;
}
2023-02-16 12:40:53 -05:00
# endif
2020-06-23 18:40:00 -04:00
void FGeometryCollectionSceneProxy : : GetPreSkinnedLocalBounds ( FBoxSphereBounds & OutBounds ) const
{
2023-02-16 12:40:53 -05:00
OutBounds = MeshDescription . PreSkinnedBounds ;
2020-06-23 18:40:00 -04:00
}
2020-07-15 03:39:13 -04:00
2023-02-16 12:40:53 -05:00
uint32 FGeometryCollectionSceneProxy : : GetAllocatedSize ( ) const
{
return FPrimitiveSceneProxy : : GetAllocatedSize ( )
+ Materials . GetAllocatedSize ( )
+ MeshDescription . Sections . GetAllocatedSize ( )
+ MeshDescription . SubSections . GetAllocatedSize ( )
+ RestTransforms . GetAllocatedSize ( )
+ ( SkinnedPositionVertexBuffer . GetAllowCPUAccess ( ) ? SkinnedPositionVertexBuffer . GetStride ( ) * SkinnedPositionVertexBuffer . GetNumVertices ( ) : 0 )
# if WITH_EDITOR
+ BoneColors . GetAllocatedSize ( )
+ ( ColorVertexBuffer . GetAllowCPUAccess ( ) ? ColorVertexBuffer . GetStride ( ) * ColorVertexBuffer . GetNumVertices ( ) : 0 )
+ HiddenTransforms . GetAllocatedSize ( )
# endif
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
+ HitProxies . GetAllocatedSize ( )
+ ( HitProxyIdBuffer . GetAllowCPUAccess ( ) ? HitProxyIdBuffer . GetStride ( ) * HitProxyIdBuffer . GetNumVertices ( ) : 0 )
# endif
# if RHI_RAYTRACING
+ RayTracingGeometry . RawData . GetAllocatedSize ( )
# endif
;
}
2020-07-15 03:39:13 -04:00
FNaniteGeometryCollectionSceneProxy : : FNaniteGeometryCollectionSceneProxy ( UGeometryCollectionComponent * Component )
2021-03-02 06:33:07 -04:00
: Nanite : : FSceneProxyBase ( Component )
, GeometryCollection ( Component - > GetRestCollection ( ) )
2021-05-01 21:33:36 -04:00
, bCurrentlyInMotion ( false )
2021-05-11 01:18:05 -04:00
, bRequiresGPUSceneUpdate ( false )
2020-07-15 03:39:13 -04:00
{
2020-10-09 22:42:26 -04:00
LLM_SCOPE_BYTAG ( Nanite ) ;
2020-07-15 03:39:13 -04:00
// Nanite requires GPUScene
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
checkSlow ( UseGPUScene ( GMaxRHIShaderPlatform , GetScene ( ) . GetFeatureLevel ( ) ) ) ;
checkSlow ( DoesPlatformSupportNanite ( GMaxRHIShaderPlatform ) ) ;
2020-07-15 03:39:13 -04:00
2021-06-07 23:55:28 -04:00
// Should have valid Nanite data at this point.
check ( GeometryCollection - > HasNaniteData ( ) ) ;
NaniteResourceID = GeometryCollection - > GetNaniteResourceID ( ) ;
NaniteHierarchyOffset = GeometryCollection - > GetNaniteHierarchyOffset ( ) ;
2020-07-15 03:39:13 -04:00
MaterialRelevance = Component - > GetMaterialRelevance ( Component - > GetScene ( ) - > GetFeatureLevel ( ) ) ;
// Nanite supports the GPUScene instance data buffer.
bSupportsInstanceDataBuffer = true ;
2021-04-28 19:53:28 -04:00
// We always have correct instance transforms, skip GPUScene updates if allowed.
bShouldUpdateGPUSceneTransforms = ( GGeometryCollectionOptimizedTransforms = = 0 ) ;
2021-04-28 05:36:47 -04:00
2020-07-15 03:39:13 -04:00
bSupportsDistanceFieldRepresentation = false ;
2023-02-16 12:41:39 -05:00
// Dynamic draw path without Nanite isn't supported by Lumen
bVisibleInLumenScene = false ;
2020-07-15 03:39:13 -04:00
// Use fast path that does not update static draw lists.
bStaticElementsAlwaysUseProxyPrimitiveUniformBuffer = true ;
2021-12-07 05:26:32 -05:00
// Nanite always uses GPUScene, so we can skip expensive primitive uniform buffer updates.
2021-02-02 14:40:50 -04:00
bVFRequiresPrimitiveUniformBuffer = false ;
2020-07-15 03:39:13 -04:00
// Indicates if 1 or more materials contain settings not supported by Nanite.
bHasMaterialErrors = false ;
2021-06-16 20:44:01 -04:00
bHasPerInstanceHierarchyOffset = true ;
2021-12-02 20:49:23 -05:00
bHasPerInstanceLocalBounds = true ;
bHasPerInstanceDynamicData = true ;
2021-06-16 20:44:01 -04:00
2020-07-15 03:39:13 -04:00
// Check if the assigned material can be rendered in Nanite. If not, default.
2020-07-22 13:12:31 -04:00
// TODO: Handle cases like geometry collections adding a "selected geometry" material with translucency.
const bool IsRenderable = true ; // Nanite::FSceneProxy::IsNaniteRenderable(MaterialRelevance);
2020-07-15 03:39:13 -04:00
if ( ! IsRenderable )
{
bHasMaterialErrors = true ;
}
const TSharedPtr < FGeometryCollection , ESPMode : : ThreadSafe > Collection = GeometryCollection - > GetGeometryCollection ( ) ;
2023-02-16 12:40:53 -05:00
const TManagedArray < int32 > & TransformToGeometryIndices = Collection - > TransformToGeometryIndex ;
const TManagedArray < int32 > & SimulationType = Collection - > SimulationType ;
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
const TManagedArray < FGeometryCollectionSection > & SectionsArray = Component - > GetSectionsArray ( ) ;
2020-07-15 03:39:13 -04:00
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
MaterialSections . SetNumZeroed ( SectionsArray . Num ( ) ) ;
2020-07-15 03:39:13 -04:00
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
for ( int32 SectionIndex = 0 ; SectionIndex < SectionsArray . Num ( ) ; + + SectionIndex )
2020-07-15 03:39:13 -04:00
{
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
const FGeometryCollectionSection & MeshSection = SectionsArray [ SectionIndex ] ;
const bool bValidMeshSection = MeshSection . MaterialID ! = INDEX_NONE ;
2022-03-18 02:34:24 -04:00
// Keep track of highest observed material index.
MaterialMaxIndex = FMath : : Max ( MeshSection . MaterialID , MaterialMaxIndex ) ;
2020-07-15 03:39:13 -04:00
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
UMaterialInterface * MaterialInterface = bValidMeshSection ? Component - > GetMaterial ( MeshSection . MaterialID ) : nullptr ;
2020-07-15 03:39:13 -04:00
2022-03-02 14:03:59 -05:00
// TODO: PROG_RASTER (Implement programmable raster support)
2023-03-07 14:44:01 -05:00
const bool bInvalidMaterial = ! MaterialInterface | | ! IsOpaqueBlendMode ( * MaterialInterface ) | | MaterialInterface - > GetShadingModels ( ) . HasShadingModel ( MSM_SingleLayerWater ) ;
2020-07-15 03:39:13 -04:00
if ( bInvalidMaterial )
{
bHasMaterialErrors = true ;
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
if ( MaterialInterface )
2020-12-04 14:51:23 -04:00
{
UE_LOG
(
LogStaticMesh , Warning ,
2023-03-07 14:44:01 -05:00
TEXT ( " Invalid material [%s] used on Nanite geometry collection [%s] - forcing default material instead. Only opaque blend mode and a shading model that is not SingleLayerWater is currently supported, [%s] blend mode and [%s] shading model was specified. " ) ,
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
* MaterialInterface - > GetName ( ) ,
2020-12-04 14:51:23 -04:00
* GeometryCollection - > GetName ( ) ,
2023-03-07 14:44:01 -05:00
* GetBlendModeString ( MaterialInterface - > GetBlendMode ( ) ) ,
* GetShadingModelFieldString ( MaterialInterface - > GetShadingModels ( ) )
2020-12-04 14:51:23 -04:00
) ;
}
2020-07-15 03:39:13 -04:00
}
const bool bForceDefaultMaterial = /*!!FORCE_NANITE_DEFAULT_MATERIAL ||*/ bHasMaterialErrors ;
if ( bForceDefaultMaterial )
{
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
MaterialInterface = UMaterial : : GetDefaultMaterial ( MD_Surface ) ;
2020-07-15 03:39:13 -04:00
}
// Should never be null here
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
check ( MaterialInterface ! = nullptr ) ;
2020-07-15 03:39:13 -04:00
// Should always be opaque blend mode here.
2023-02-16 12:41:39 -05:00
check ( IsOpaqueBlendMode ( * MaterialInterface ) ) ;
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
2022-02-19 00:16:02 -05:00
MaterialSections [ SectionIndex ] . ShadingMaterialProxy = MaterialInterface - > GetRenderProxy ( ) ;
2022-03-02 14:03:59 -05:00
MaterialSections [ SectionIndex ] . RasterMaterialProxy = MaterialInterface - > GetRenderProxy ( ) ; // TODO: PROG_RASTER (Implement programmable raster support)
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
MaterialSections [ SectionIndex ] . MaterialIndex = MeshSection . MaterialID ;
2020-07-15 03:39:13 -04:00
}
2021-04-28 05:36:47 -04:00
const bool bHasGeometryBoundingBoxes =
Collection - > HasAttribute ( " BoundingBox " , FGeometryCollection : : GeometryGroup ) & &
Collection - > NumElements ( FGeometryCollection : : GeometryGroup ) ;
const bool bHasTransformBoundingBoxes =
Collection - > NumElements ( FGeometryCollection : : TransformGroup ) & &
2021-04-20 10:31:10 -04:00
Collection - > HasAttribute ( " BoundingBox " , FGeometryCollection : : TransformGroup ) & &
Collection - > HasAttribute ( " TransformToGeometryIndex " , FGeometryCollection : : TransformGroup ) ;
2021-04-21 15:32:56 -04:00
int32 NumGeometry = 0 ;
2021-04-20 09:50:07 -04:00
if ( bHasGeometryBoundingBoxes )
2020-07-15 03:39:13 -04:00
{
2021-04-21 15:32:56 -04:00
NumGeometry = Collection - > NumElements ( FGeometryCollection : : GeometryGroup ) ;
GeometryNaniteData . SetNumUninitialized ( NumGeometry ) ;
2021-04-20 09:50:07 -04:00
const TManagedArray < FBox > & BoundingBoxes = Collection - > GetAttribute < FBox > ( " BoundingBox " , FGeometryCollection : : GeometryGroup ) ;
for ( int32 GeometryIndex = 0 ; GeometryIndex < NumGeometry ; + + GeometryIndex )
{
FGeometryNaniteData & Instance = GeometryNaniteData [ GeometryIndex ] ;
2021-06-07 23:55:28 -04:00
Instance . HierarchyOffset = GeometryCollection - > GetNaniteHierarchyOffset ( GeometryIndex ) ;
2021-06-08 15:19:37 -04:00
Instance . LocalBounds = BoundingBoxes [ GeometryIndex ] ;
2021-04-20 09:50:07 -04:00
}
2020-07-15 03:39:13 -04:00
}
2021-04-28 05:36:47 -04:00
else if ( bHasTransformBoundingBoxes )
2021-04-20 09:50:07 -04:00
{
2023-05-26 00:55:23 -04:00
NumGeometry = GeometryCollection - > RenderData - > NaniteResourcesPtr - > HierarchyRootOffsets . Num ( ) ;
2021-04-21 15:32:56 -04:00
GeometryNaniteData . SetNumUninitialized ( NumGeometry ) ;
2021-04-20 09:50:07 -04:00
const TManagedArray < FBox > & BoundingBoxes = Collection - > GetAttribute < FBox > ( " BoundingBox " , FGeometryCollection : : TransformGroup ) ;
const TManagedArray < int32 > & TransformToGeometry = Collection - > GetAttribute < int32 > ( " TransformToGeometryIndex " , FGeometryCollection : : TransformGroup ) ;
const int32 NumTransforms = TransformToGeometry . Num ( ) ;
for ( int32 TransformIndex = 0 ; TransformIndex < NumTransforms ; + + TransformIndex )
{
const int32 GeometryIndex = TransformToGeometry [ TransformIndex ] ;
if ( GeometryIndex > INDEX_NONE )
{
FGeometryNaniteData & Instance = GeometryNaniteData [ GeometryIndex ] ;
2021-06-07 23:55:28 -04:00
Instance . HierarchyOffset = GeometryCollection - > GetNaniteHierarchyOffset ( GeometryIndex ) ;
2023-02-24 13:59:56 -05:00
Instance . LocalBounds = BoundingBoxes [ TransformIndex ] ;
2021-04-20 09:50:07 -04:00
}
}
}
2023-02-16 12:40:53 -05:00
// Initialize to rest transforms.
TArray < FMatrix44f > RestTransforms ;
Component - > GetRestTransforms ( RestTransforms ) ;
2021-06-16 20:44:01 -04:00
2023-02-16 12:40:53 -05:00
FGeometryCollectionDynamicData * DynamicData = GDynamicDataPool . Allocate ( ) ;
DynamicData - > IsDynamic = true ;
DynamicData - > Transforms = RestTransforms ;
DynamicData - > PrevTransforms = RestTransforms ;
SetDynamicData_RenderThread ( DynamicData ) ;
2020-07-15 03:39:13 -04:00
}
2022-09-06 17:35:03 -04:00
SIZE_T FNaniteGeometryCollectionSceneProxy : : GetTypeHash ( ) const
{
static size_t UniquePointer ;
return reinterpret_cast < size_t > ( & UniquePointer ) ;
}
2020-07-15 03:39:13 -04:00
FPrimitiveViewRelevance FNaniteGeometryCollectionSceneProxy : : GetViewRelevance ( const FSceneView * View ) const
{
2020-10-09 22:42:26 -04:00
LLM_SCOPE_BYTAG ( Nanite ) ;
2020-07-15 03:39:13 -04:00
FPrimitiveViewRelevance Result ;
Result . bDrawRelevance = IsShown ( View ) & & View - > Family - > EngineShowFlags . NaniteMeshes ;
Result . bShadowRelevance = IsShadowCast ( View ) ;
Result . bUsesLightingChannels = GetLightingChannelMask ( ) ! = GetDefaultLightingChannelMask ( ) ;
// Always render the Nanite mesh data with static relevance.
Result . bStaticRelevance = true ;
// Should always be covered by constructor of Nanite scene proxy.
Result . bRenderInMainPass = true ;
# if WITH_EDITOR
2021-01-13 19:51:21 -04:00
// Only check these in the editor
Result . bEditorVisualizeLevelInstanceRelevance = IsEditingLevelInstanceChild ( ) ;
Result . bEditorStaticSelectionRelevance = ( IsSelected ( ) | | IsHovered ( ) ) ;
2020-07-15 03:39:13 -04:00
# endif
2021-01-13 19:51:21 -04:00
bool bSetDynamicRelevance = false ;
2020-07-15 03:39:13 -04:00
2021-01-13 19:51:21 -04:00
Result . bOpaque = true ;
2020-07-15 03:39:13 -04:00
2021-01-13 19:51:21 -04:00
MaterialRelevance . SetPrimitiveViewRelevance ( Result ) ;
2021-02-09 23:05:37 -04:00
Result . bVelocityRelevance = Result . bOpaque & & Result . bRenderInMainPass & & DrawsVelocity ( ) ;
2020-07-15 03:39:13 -04:00
return Result ;
}
2023-02-16 12:40:53 -05:00
# if GEOMETRYCOLLECTION_EDITOR_SELECTION
2020-07-15 03:39:13 -04:00
HHitProxy * FNaniteGeometryCollectionSceneProxy : : CreateHitProxies ( UPrimitiveComponent * Component , TArray < TRefCountPtr < HHitProxy > > & OutHitProxies )
{
2020-10-09 22:42:26 -04:00
LLM_SCOPE_BYTAG ( Nanite ) ;
2020-07-15 03:39:13 -04:00
if ( Component - > GetOwner ( ) )
{
// Generate separate hit proxies for each material section, so that we can perform hit tests against each one.
for ( int32 SectionIndex = 0 ; SectionIndex < MaterialSections . Num ( ) ; + + SectionIndex )
{
FMaterialSection & Section = MaterialSections [ SectionIndex ] ;
HHitProxy * ActorHitProxy = new HActor ( Component - > GetOwner ( ) , Component , SectionIndex , SectionIndex ) ;
check ( ! Section . HitProxy ) ;
Section . HitProxy = ActorHitProxy ;
OutHitProxies . Add ( ActorHitProxy ) ;
}
}
2022-02-02 07:56:25 -05:00
return Super : : CreateHitProxies ( Component , OutHitProxies ) ;
2020-07-15 03:39:13 -04:00
}
# endif
void FNaniteGeometryCollectionSceneProxy : : DrawStaticElements ( FStaticPrimitiveDrawInterface * PDI )
{
Fixes for the horrible Nanite "black material" shading and broken hit proxies.
Pretty nasty one where material slots are manually added/changed (differing from LOD0), Nanite encodes the material tables from that, but then the LOD0 of the mesh (which drives mesh draw commands wrt. material interfaces) no longer matches correctly 1:1, so you can have 1 mesh section with 1 material interface, but it's actually using material index 1.
From the normal mesh draw command side of things, this is all handled nicely, but Nanite and GPUScene don't upload LOD0 data, we go off of material slots when encoding the tables (we don't care about the LOD data). Basically it means we'd upload a material table entry to GPU Scene at (say) slot 1280 with a given depth value (as if the relative material index is 0), but the cluster material encoding would say the relative index is 1, causing depth export and culling to lookup the depth value from slot 1281 instead.
Reverb was mainly single material meshes (with a few exceptions), so we never encountered all the reimport and mismatch fun, and even for a long time on Frosty, multiple materials were fine (and of course well tested previously).
The start of the problems came from the previous bug of LOD0 coarse mesh simplification killing unreferenced materials, scrambling the indexing - while that bug was being fixed by us, artists started trying to fix it on their end by manually adjusting material slots, etc. This left a ton of meshes behind with crazy indexing like this, where even disabling coarse mesh still results in mismatches between LOD0 and the material slots.
While making these fixes, I also made a number of CPU optimizations to various parts of the Nanite material rendering code, and also refactored a lot of the geometry collection and (H)(I)SM deferred material code into a common path shared by all Nanite proxies.
#rb ola.olsson
#fyi brian.karis, rune.stubbe, juan.canada
#jira FROST-1224
#robomerge Release-5.0-EarlyAccess
[CL 15736080 by graham wihlidal in ue5-main branch]
2021-03-18 05:41:34 -04:00
const FLightCacheInterface * LCI = nullptr ;
DrawStaticElementsInternal ( PDI , LCI ) ;
2020-07-15 03:39:13 -04:00
}
uint32 FNaniteGeometryCollectionSceneProxy : : GetMemoryFootprint ( ) const
{
return sizeof ( * this ) + GetAllocatedSize ( ) ;
}
2020-07-15 19:46:08 -04:00
2021-04-28 05:36:47 -04:00
void FNaniteGeometryCollectionSceneProxy : : OnTransformChanged ( )
{
}
2021-12-03 10:01:28 -05:00
void FNaniteGeometryCollectionSceneProxy : : GetNaniteResourceInfo ( uint32 & ResourceID , uint32 & HierarchyOffset , uint32 & ImposterIndex ) const
2021-06-07 23:55:28 -04:00
{
ResourceID = NaniteResourceID ;
HierarchyOffset = NaniteHierarchyOffset ;
2021-12-03 10:01:28 -05:00
ImposterIndex = INDEX_NONE ; // Imposters are not supported (yet?)
2021-06-07 23:55:28 -04:00
}
2023-02-05 18:52:56 -05:00
void FNaniteGeometryCollectionSceneProxy : : GetNaniteMaterialMask ( FUint32Vector2 & OutMaterialMask ) const
{
// TODO: Implement support
OutMaterialMask = FUint32Vector2 ( ~ uint32 ( 0 ) , ~ uint32 ( 0 ) ) ;
}
2022-09-27 08:28:24 -04:00
Nanite : : FResourceMeshInfo FNaniteGeometryCollectionSceneProxy : : GetResourceMeshInfo ( ) const
{
2023-05-26 00:55:23 -04:00
Nanite : : FResources & NaniteResources = * GeometryCollection - > RenderData - > NaniteResourcesPtr . Get ( ) ;
2022-09-27 08:28:24 -04:00
Nanite : : FResourceMeshInfo OutInfo ;
2023-05-26 00:55:23 -04:00
OutInfo . NumClusters = NaniteResources . NumClusters ;
OutInfo . NumNodes = NaniteResources . NumHierarchyNodes ;
OutInfo . NumVertices = NaniteResources . NumInputVertices ;
OutInfo . NumTriangles = NaniteResources . NumInputTriangles ;
2022-09-27 08:28:24 -04:00
OutInfo . NumMaterials = MaterialMaxIndex + 1 ;
OutInfo . DebugName = GeometryCollection - > GetFName ( ) ;
2023-05-26 00:55:23 -04:00
OutInfo . NumResidentClusters = NaniteResources . NumResidentClusters ;
2023-05-24 13:11:15 -04:00
2022-09-27 08:28:24 -04:00
// TODO: SegmentMapping
OutInfo . NumSegments = 0 ;
return MoveTemp ( OutInfo ) ;
}
2020-07-15 19:46:08 -04:00
void FNaniteGeometryCollectionSceneProxy : : SetDynamicData_RenderThread ( FGeometryCollectionDynamicData * NewDynamicData )
{
2020-07-16 06:34:04 -04:00
// Are we currently simulating?
2020-07-15 19:46:08 -04:00
if ( NewDynamicData - > IsDynamic )
{
2020-07-21 15:17:07 -04:00
const TSharedPtr < FGeometryCollection , ESPMode : : ThreadSafe > Collection = GeometryCollection - > GetGeometryCollection ( ) ;
2021-04-28 05:36:47 -04:00
const TManagedArray < int32 > & TransformToGeometryIndices = Collection - > TransformToGeometryIndex ;
const TManagedArray < TSet < int32 > > & TransformChildren = Collection - > Children ;
const TManagedArray < int32 > & SimulationType = Collection - > SimulationType ;
2020-07-16 06:34:04 -04:00
2021-12-02 20:49:23 -05:00
const int32 TransformCount = NewDynamicData - > Transforms . Num ( ) ;
check ( TransformCount = = TransformToGeometryIndices . Num ( ) ) ;
check ( TransformCount = = TransformChildren . Num ( ) ) ;
check ( TransformCount = = NewDynamicData - > PrevTransforms . Num ( ) ) ;
InstanceSceneData . Reset ( TransformCount ) ;
InstanceDynamicData . Reset ( TransformCount ) ;
InstanceLocalBounds . Reset ( TransformCount ) ;
InstanceHierarchyOffset . Reset ( TransformCount ) ;
2020-07-16 06:34:04 -04:00
2021-12-02 20:49:23 -05:00
for ( int32 TransformIndex = 0 ; TransformIndex < TransformCount ; + + TransformIndex )
2020-07-15 19:46:08 -04:00
{
2020-07-16 06:34:04 -04:00
const int32 TransformToGeometryIndex = TransformToGeometryIndices [ TransformIndex ] ;
2021-04-28 05:36:47 -04:00
if ( SimulationType [ TransformIndex ] ! = FGeometryCollection : : ESimulationTypes : : FST_Rigid )
2020-07-16 06:34:04 -04:00
{
continue ;
}
2020-07-15 19:46:08 -04:00
2020-07-16 06:34:04 -04:00
const FGeometryNaniteData & NaniteData = GeometryNaniteData [ TransformToGeometryIndex ] ;
2020-07-15 19:46:08 -04:00
2022-10-24 12:06:55 -04:00
FInstanceSceneData & Instance = InstanceSceneData . Emplace_GetRef ( ) ;
2021-12-02 20:49:23 -05:00
Instance . LocalToPrimitive = NewDynamicData - > Transforms [ TransformIndex ] ;
2020-07-16 06:34:04 -04:00
2022-10-24 12:06:55 -04:00
FInstanceDynamicData & DynamicData = InstanceDynamicData . Emplace_GetRef ( ) ;
2021-06-09 19:10:52 -04:00
2021-05-01 21:33:36 -04:00
if ( bCurrentlyInMotion )
{
2021-06-16 20:44:01 -04:00
DynamicData . PrevLocalToPrimitive = NewDynamicData - > PrevTransforms [ TransformIndex ] ;
2021-05-01 21:33:36 -04:00
}
else
{
2021-12-02 20:49:23 -05:00
DynamicData . PrevLocalToPrimitive = Instance . LocalToPrimitive ;
2021-05-01 21:33:36 -04:00
}
2021-12-02 20:49:23 -05:00
2023-02-07 12:21:42 -05:00
int32 InstanceIndex = InstanceLocalBounds . Num ( ) ;
InstanceLocalBounds . SetNumUninitialized ( InstanceIndex + 1 ) ;
SetInstanceLocalBounds ( InstanceIndex , NaniteData . LocalBounds ) ;
2021-12-02 20:49:23 -05:00
InstanceHierarchyOffset . Emplace ( NaniteData . HierarchyOffset ) ;
2020-07-15 19:46:08 -04:00
}
}
else
{
// Rendering base geometry, use rest transforms rather than simulated transforms.
2020-07-16 06:34:04 -04:00
// ...
2020-07-15 19:46:08 -04:00
}
2021-04-20 10:45:04 -04:00
GDynamicDataPool . Release ( NewDynamicData ) ;
}
2021-04-28 19:53:28 -04:00
void FNaniteGeometryCollectionSceneProxy : : ResetPreviousTransforms_RenderThread ( )
{
2021-05-01 21:33:36 -04:00
// Reset previous transforms to avoid locked motion vectors
2021-06-16 20:44:01 -04:00
check ( InstanceSceneData . Num ( ) = = InstanceDynamicData . Num ( ) ) ; // Sanity check, should always have matching associated arrays
for ( int32 InstanceIndex = 0 ; InstanceIndex < InstanceSceneData . Num ( ) ; + + InstanceIndex )
2021-04-28 19:53:28 -04:00
{
2021-06-16 20:44:01 -04:00
InstanceDynamicData [ InstanceIndex ] . PrevLocalToPrimitive = InstanceSceneData [ InstanceIndex ] . LocalToPrimitive ;
2021-04-28 19:53:28 -04:00
}
}
2021-05-11 01:18:05 -04:00
void FNaniteGeometryCollectionSceneProxy : : FlushGPUSceneUpdate_GameThread ( )
{
ENQUEUE_RENDER_COMMAND ( NaniteProxyUpdateGPUScene ) (
[ this ] ( FRHICommandListImmediate & RHICmdList )
{
FPrimitiveSceneInfo * NanitePrimitiveInfo = GetPrimitiveSceneInfo ( ) ;
if ( NanitePrimitiveInfo & & GetRequiresGPUSceneUpdate_RenderThread ( ) )
{
// Attempt to queue up a GPUScene update - maintain dirty flag if the request fails.
const bool bRequiresUpdate = ! NanitePrimitiveInfo - > RequestGPUSceneUpdate ( ) ;
SetRequiresGPUSceneUpdate_RenderThread ( bRequiresUpdate ) ;
}
}
) ;
}
2021-05-01 17:51:29 -04:00
void FNaniteGeometryCollectionSceneProxy : : OnMotionBegin ( )
{
2021-05-01 21:33:36 -04:00
bCurrentlyInMotion = true ;
bCanSkipRedundantTransformUpdates = false ;
2021-05-01 17:51:29 -04:00
}
void FNaniteGeometryCollectionSceneProxy : : OnMotionEnd ( )
{
2021-05-01 21:33:36 -04:00
bCurrentlyInMotion = false ;
bCanSkipRedundantTransformUpdates = true ;
ResetPreviousTransforms_RenderThread ( ) ;
2021-05-01 17:51:29 -04:00
}
2023-02-16 12:40:53 -05:00
2021-04-20 10:45:04 -04:00
FGeometryCollectionDynamicDataPool : : FGeometryCollectionDynamicDataPool ( )
{
FreeList . SetNum ( 32 ) ;
for ( int32 ListIndex = 0 ; ListIndex < FreeList . Num ( ) ; + + ListIndex )
{
FreeList [ ListIndex ] = new FGeometryCollectionDynamicData ;
}
}
FGeometryCollectionDynamicDataPool : : ~ FGeometryCollectionDynamicDataPool ( )
{
FScopeLock ScopeLock ( & ListLock ) ;
for ( FGeometryCollectionDynamicData * Entry : FreeList )
{
delete Entry ;
}
for ( FGeometryCollectionDynamicData * Entry : UsedList )
{
delete Entry ;
}
FreeList . Empty ( ) ;
UsedList . Empty ( ) ;
}
FGeometryCollectionDynamicData * FGeometryCollectionDynamicDataPool : : Allocate ( )
{
FScopeLock ScopeLock ( & ListLock ) ;
FGeometryCollectionDynamicData * NewEntry = nullptr ;
if ( FreeList . Num ( ) > 0 )
{
NewEntry = FreeList . Pop ( false /* no shrinking */ ) ;
}
if ( NewEntry = = nullptr )
{
NewEntry = new FGeometryCollectionDynamicData ;
}
NewEntry - > Reset ( ) ;
UsedList . Push ( NewEntry ) ;
return NewEntry ;
}
void FGeometryCollectionDynamicDataPool : : Release ( FGeometryCollectionDynamicData * DynamicData )
{
FScopeLock ScopeLock ( & ListLock ) ;
int32 UsedIndex = UsedList . Find ( DynamicData ) ;
if ( ensure ( UsedIndex ! = INDEX_NONE ) )
{
UsedList . RemoveAt ( UsedIndex , 1 , false /* no shrinking */ ) ;
FreeList . Push ( DynamicData ) ;
}
2020-07-15 19:46:08 -04:00
}
2021-05-14 15:26:37 -04:00
2023-06-22 11:25:09 -04:00
void FGeometryCollectionTransformBuffer : : UpdateDynamicData ( FRHICommandListBase & RHICmdList , const TArray < FMatrix44f > & Transforms , EResourceLockMode LockMode )
2021-05-14 15:26:37 -04:00
{
check ( NumTransforms = = Transforms . Num ( ) ) ;
2023-06-22 11:25:09 -04:00
void * VertexBufferData = RHICmdList . LockBuffer ( VertexBufferRHI , 0 , Transforms . Num ( ) * sizeof ( FMatrix44f ) , LockMode ) ;
2021-05-14 15:26:37 -04:00
FMemory : : Memcpy ( VertexBufferData , Transforms . GetData ( ) , Transforms . Num ( ) * sizeof ( FMatrix44f ) ) ;
2023-06-22 11:25:09 -04:00
RHICmdList . UnlockBuffer ( VertexBufferRHI ) ;
2021-05-14 15:26:37 -04:00
}