Commit Graph

660 Commits

Author SHA1 Message Date
brian karis
e838341c86 External edges now handle non-manifold meshes, ie multiple adjacency
Added Moore-Penrose pseudo inverse for solving singular quadrics. Disabled for now.

#rb rune.stubbe

#ROBOMERGE-AUTHOR: brian.karis
#ROBOMERGE-SOURCE: CL 18415437 in //UE5/Release-5.0/... via CL 18415438
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18415441 by brian karis in ue5-release-engine-test branch]
2021-12-08 20:32:07 -05:00
luc eygasier
dca9ade4ac Adds InitFromCompactString() to FVector to unify Getter/Setter of LevelBoundsLocation/LevelBoundsExtent tags.
#rb JeanFrancois.Dube

#changelist validated

#ROBOMERGE-AUTHOR: luc.eygasier
#ROBOMERGE-SOURCE: CL 18385082 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v896-18170469)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0

[CL 18385170 by luc eygasier in ue5-release-engine-test branch]
2021-12-06 13:36:02 -05:00
jon nabozny
f89b654be6 Changes to SceneVisibility
1.  Nanite meshes are not longer marked as always visible, and will go through the standard rendering culling / pipeline.
2.  Add coarse frustum culling using the already existing scene octree.
3.  Remove Distance visibility bit array, and converted only usage to using the visibiliity map.  (Spoke with Kenzo about this, the original was put in due to differences between distance a vis flags, but this has been fixed)
4.  Optimized Frustum culling methods across the board.

[at]Graham.Wihlidal [at]krzysztof.narkowicz [at]andrew.firth
#preflight 6137e0d1d9c85a00015375cb

#ROBOMERGE-OWNER: jon.nabozny
#ROBOMERGE-AUTHOR: brandon.dawson
#ROBOMERGE-SOURCE: CL 17459502 via CL 17911378 via CL 18360795 via CL 18361127
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18361363 by jon nabozny in ue5-release-engine-test branch]
2021-12-02 18:21:56 -05:00
charles lefebvre
19d5b24d33 Fix extra UE_NODISCARD added during ROBOMERGE
#ROBOMERGE-AUTHOR: charles.lefebvre
#ROBOMERGE-SOURCE: CL 18325391 via CL 18325414 via CL 18326090 via CL 18326102
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18326112 by charles lefebvre in ue5-release-engine-test branch]
2021-11-30 11:58:04 -05:00
charles lefebvre
43ae54ac0c Add missing constexpr and UE_NODISCARD to UnrealMathUtility
#tests Tested in PIE, preflight on all platforms
[REVIEW] Steve.Robb

#ROBOMERGE-OWNER: charles.lefebvre
#ROBOMERGE-AUTHOR: charles.lefebvre
#ROBOMERGE-SOURCE: CL 18324864 via CL 18325124 via CL 18325149 via CL 18325803 via CL 18325815
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18325823 by charles lefebvre in ue5-release-engine-test branch]
2021-11-30 11:37:22 -05:00
kriss gossart
11cdd393ea Chaos Cloth - Faster version of the cloth skinning ISPC code.
- Re-enable the ISPC bounds calculation that seems now roughly about 3 times faster.
- LWC code compatibility update.
Originally from Jeff.Rous shelf 17168225.

#rb Cedric.Caillaud
#jira none
#preflight 61a0fe6b405273b2c3aeeeaf

#ROBOMERGE-AUTHOR: kriss.gossart
#ROBOMERGE-SOURCE: CL 18307569 in //UE5/Release-5.0/... via CL 18307574
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18307581 by kriss gossart in ue5-release-engine-test branch]
2021-11-29 06:23:29 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
jimmy andrews
fd07763a78 remove UE::Geometry::TRay3 and replace usages with UE::Math::TRay
#rb tyson.brochu
#rnx
#preflight 6195872476668b37001d1141

#ushell-cherrypick of 18231220 by Jimmy.Andrews

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 18232491 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v895-18170469)

[CL 18232527 by jimmy andrews in ue5-release-engine-test branch]
2021-11-17 21:06:46 -05:00
aurel cordonnier
fc542f6cfd Merge from Release-Engine-Staging @ 18081189 to Release-Engine-Test
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971

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

[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-25 20:05:28 -04:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
ben ingram
0bb0a923a0 Merging Dev-LWCRendering into Main, this includes initial work to support rendering with LWC-scale position
Basic approach is to add HLSL types FLWCScalar, FLWCMatrix, FLWCVector, etc.  Inside shaders, absolute world space position values should be represented as FLWCVector3.  Matrices that transform *into* absolute world space become FLWCMatrix.  Matrices that transform *from* world space become FLWCInverseMatrix.  Generally LWC values work by extending the regular 'float' value with an additional tile coordinate.  Final tile size will be a trade-off between scale/accuracy; I'm using 256k for now, but may need to be adjusted.  Value represented by a FLWCVector thus becomes V.Tile * TileSize + V.Offset.  Most operations can be performed directly on LWC values.  There are HLSL functions like LWCAdd, LWCSub, LWCMultiply, LWCDivide (operator overloading would be really nice here).  The goal is to stay with LWC values for as long as needed, then convert to regular float values when possible.  One thing that comes up a lot is working in translated (rather than absolute) world space.  WorldSpace + View.PrevPreViewTranslation = TranslatedWorldspace.  Except 'View.PrevPreViewTranslation' is now a FLWCVector3, and WorldSpace quantities should be as well.  So that becomes LWCAdd(WorldSpace, View.PrevPreViewTranslation) = TranslatedWorldspace.  Assuming that we're talking about a position that's "reasonably close" to the camera, it should be safe to convert the translated WS value to float.  The 'tile' coordinate of the 2 LWC values should cancel out when added together in this case.  I've done some work throughout the shader code to do this.  Materials are fully supporting LWC-values as well.  Projective texturing and vertex animation materials that I've tested work correctly even when positioned "far away" from the origin.

Lots of work remains to fully convert all of our shader code.  There's a function LWCHackToFloat(), which is a simple wrapper for LWCToFloat().  The idea of HackToFloat is to mark places that need further attention, where I'm simply converting absolute WS positions to float, to get shaders to compile.  Shaders converted in this way should continue to work for all existing content (without LWC-scale values), but they will break if positions get too large.

General overview of changed files:
LargeWorldCoordinates.ush - This defines the FLWC types and operations
GPUScene.cpp, SceneData.ush - Primitives add an extra 'float3' tile coordinate.  Instance data is unchanged, so instances need to stay within single-precision range of the primitive origin.  Could potentially split instances behind the scenes (I think) if we don't want this limitation
HLSLMaterialDerivativeAutogen.cpp, HLSLMaterialTranslator.cpp, Preshader.cpp - Translated materials to use LWC values
SceneView.cpp, SceneRelativeViewMatrices.cpp, ShaderCompiler.cpp, InstancedStereo.ush - View uniform buffer includes LWC values where appropriate
#jira UE-117101
#rb arne.schober, Michael.Galetzka

#ROBOMERGE-AUTHOR: ben.ingram
#ROBOMERGE-SOURCE: CL 17787435 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v881-17767770)

[CL 17787478 by ben ingram in ue5-release-engine-test branch]
2021-10-12 13:31:00 -04:00
johan torp
97d3f03c66 Compile fixes for ClangGame Win64 Editor and MSVC ARM64
#rnx
#ushell-cherrypick of 17705096 by Johan.Torp
#ushell-cherrypick of 17705452 by johan.torp
#ushell-cherrypick of 17734208 by Johan.Torp
#preflight 615d99819a6de5000130a3e5

#ROBOMERGE-AUTHOR: johan.torp
#ROBOMERGE-SOURCE: CL 17734960 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v879-17706426)

[CL 17735011 by johan torp in ue5-release-engine-test branch]
2021-10-06 09:54:26 -04:00
stu mckenna
5a132d5fc5 - Ensure we don't use aligned loads on some compilers for VectorLoad with VectorRegister4Float & VectorRegister4Double
#rb zak.middleton, brandon.schaefer
#jira UE-120446

#ROBOMERGE-AUTHOR: stu.mckenna
#ROBOMERGE-SOURCE: CL 17697421 in //UE5/Release-5.0/... via CL 17697430
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v875-17642767)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17697436 by stu mckenna in ue5-release-engine-test branch]
2021-10-01 17:25:12 -04:00
johan torp
868cff48b1 Compile fix for Win64 ClangGame
#rb none
#rnx
#p4v-preflight-copy 17689079

#ROBOMERGE-AUTHOR: johan.torp
#ROBOMERGE-SOURCE: CL 17690321 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v875-17642767)

[CL 17690331 by johan torp in ue5-release-engine-test branch]
2021-10-01 07:17:55 -04:00
johan torp
3f3c413f23 Core constexprification pass to reduce code bloat, improve performance and simplify searching for non-constexpr constants
#rb steve.robb
#jira FORT-412107

#ROBOMERGE-AUTHOR: johan.torp
#ROBOMERGE-SOURCE: CL 17679994 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v875-17642767)

[CL 17680001 by johan torp in ue5-release-engine-test branch]
2021-09-30 13:05:39 -04:00
johan torp
d8b1cf4d6b Math constant constexprification and outlining to reduce massive code bloat
#ROBOMERGE-AUTHOR: johan.torp
#ROBOMERGE-SOURCE: CL 17679918 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v875-17642767)

[CL 17679955 by johan torp in ue5-release-engine-test branch]
2021-09-30 13:03:15 -04:00
andrew davidson
57beb335f2 Merging //UE5/Dev-LargeWorldCoordinates [at] 17581892 to //UE5/Main
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 17595295 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17595306 by andrew davidson in ue5-release-engine-test branch]
2021-09-22 10:01:48 -04:00
david harvey
68ab3ae0cf use Unordered comparison operator for AVX VectorCompareNE... this matches the normal C behavior.
#jira UE-125150
#rnx
#rb Andy.Davidson, Zak.Middleton

#ROBOMERGE-AUTHOR: david.harvey
#ROBOMERGE-SOURCE: CL 17535341 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17535345 by david harvey in ue5-release-engine-test branch]
2021-09-16 04:46:54 -04:00
aurel cordonnier
7f517562d5 Merge from Release-Engine-Staging @ 17438845 to Release-Engine-Test
This represents UE4/Main @17430120 and Dev-PerfTest @17437669

[CL 17439044 by aurel cordonnier in ue5-release-engine-test branch]
2021-09-06 12:23:53 -04:00
patrick enfedaque
bb2ed1a9d6 int64 FMath::FloorToInt64(double)
Next step would bechanging signature of int32 FMath::FloorToInt(double) to return int64 and remove FloorToInt64 but this means hunting down conversion loss errors across projects.

#rb andy.davidson
#preflight 612e6b2675bca20001d5fbf3

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

[CL 17385276 by patrick enfedaque in ue5-release-engine-test branch]
2021-09-01 08:22:12 -04:00
dmytro vovk
d16f952d6e Fixed a typo in NEON double version of VectorMaskBits
#jira UE-124538
#rb none

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

[CL 17379549 by dmytro vovk in ue5-release-engine-test branch]
2021-08-31 18:31:48 -04:00
dmytro vovk
a47775f6c6 Fixed compilation for HoloLens ARM64
#jira UE-122373
#rb none

#ROBOMERGE-SOURCE: CL 17328514 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17328518 by dmytro vovk in ue5-release-engine-test branch]
2021-08-26 20:05:47 -04:00
dmytro vovk
cf7d21582e Fixed UnrealMathNeon.h compilation for VC ARM64
#jira UE-122373
#rb none

#ROBOMERGE-SOURCE: CL 17328483 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17328498 by dmytro vovk in ue5-release-engine-test branch]
2021-08-26 20:00:44 -04:00
zak middleton
abcd51258c #ue5 - LWC: AVX fix for VectorMatrixMultiply().
- Added FMatrix4d validation tests to UnrealMathTest.cpp startup tests.
- Avoided MSVC compiler issue with AVX casts, and switched AVX2 swizzles to more exclusive use of permute2f128.
- Shrinked some code blocks in the VectorMatrixMultiply() function which can fix compiler bugs in some cases for register re-use (it did in CL 16042174 for example).
- Re-enabled AVX1 and AVX2 as this is confirmed to fix the regression on console.

#jira UE-123735
#rb David.Harvey

#ROBOMERGE-SOURCE: CL 17325245 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17325266 by zak middleton in ue5-release-engine-test branch]
2021-08-26 16:18:45 -04:00