-Added a Blend function overload that handles barycentric interpolation of 3 skin weights.
-Refactored SetBoneWeightsFromBary (in DynamicVertexSkinWeightsAttribute.h) and ConstructVertexSkinWeightsAttribute (in SelectiveTessellate.cpp) functions to use the newly added Blend function for barycentric interpolation.
-Since the default Blend behavior has changed, make sure that unit tests in BoneWeightTests.cpp are refactored. Added more tests for cases when bBlendZeroInfluence is set to true and when using Blend for barycentric interpolation.
#rb halfdan.ingvarsson
#jira None
#preflight 6361de120c2e7c8f91668a75
[CL 22921407 by rinat abdrashitov in ue5-main branch]
The main change is that FSoftSkinVertex, used by FSkeletalMeshLODModel, in now stores weights as 16-bit after conversion from the import data. This increases the size of each FSoftSkinVertex from 144 bytes to 160 bytes (about 10% increase). By default render meshes still use 8-bit skin weights, with weights downshifted from the 16-bit modeling data, so no change in GPU memory consumption there. However, the vertex buffer will automatically return a 16-bit skin weights when requested from the GPU side (e.g. for CPU skinning and viewing tangents).
This change in the model data and vertex buffer CPU-side query, resulted in many changes throughout the codebase and will have an effect on licensees who are actively reading from and writing to these two storage locations.
The GPU skin cache shader has had one more permutation added when not using unlimited skin weights. The vertex factory is not affected.
#jira UE-164386
#rb alexis.matte, josie.yang
#preflight 632c0c5ab4515b7e22b4804d
[CL 22215219 by halfdan ingvarsson in ue5-main branch]
Before:
3648 unity files
Total CPU Time: 47886.140625 s
Total time in Parallel executor: 498.81 seconds
After:
3548 unity files
Total CPU Time: 46643.828125 s
Total time in Parallel executor: 486.06 seconds
#jira
#preflight
[CL 22173263 by marc audy in ue5-main branch]
- Removed implicit casts between FEulerTransform and FTransform
- moved interrogator and tokens inside of sequencer to use FEulerTransform
- added the notion of a preferred rotator for Controls. transform takes precedence for runtime solves, but UI / sequencer relies on the preferred rotator
#rb mike.zyracki benoit.gadreau
#jira UE-150830
#preflight https://horde.devtools.epicgames.com/job/62875a58286cf1867a419989
[CL 20298666 by Helge Mathee in ue5-main branch]
Register new SkinWeights mesh descriptor attribute that combines weights and influence in a single attribute, that proxies TBoneWeight to allow setting bone weights in one shot with normalization, culling, etc.
Deprecated and removed InfluenceBones and InfluenceWeights and updated the calling code to use the new attribute.
#jira UE-93689
#rb Alexis.Matte
#rnx
[CL 15516471 by halfdan ingvarsson in ue5-main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]