Regression with RecomputeTangents on SkeletalMeshes in 5.6

Hi,

We’ve noticed a regression in 5.6 where the non-masked recompute tangents option doesn’t work anymore. This is called “Enabled with no mask” in 5.6 but “All” in 5.5. Under the hood this seems to map to ESkinVertexColorChannel::None in FSkelMeshRenderSection::RecomputeTangentsVertexMaskChannel which seems to be misinterpreted by the code in FGPUSkinCache::ProcessEntry as meaning the feature is disabled rather than just the masking being disabled.

Changing the logic from

if (RenderSection.RecomputeTangentsVertexMaskChannel < ESkinVertexColorChannel::None && LodData.MultiSizeIndexContainer.GetIndexBuffer()) { BufferBits |= EGPUSkinCacheBufferBits::IntermediateTangents; }to

if (LodData.MultiSizeIndexContainer.GetIndexBuffer()) { BufferBits |= EGPUSkinCacheBufferBits::IntermediateTangents; }makes the feature function as expected.

Thought we would pass this fix along incase Epic was not aware of it.

Thanks!

2 Likes

Steps to Reproduce
Create a USkeletalMesh and enable the “Enabled with no mask” feature on it. Observe that it has no effect.

1 Like

Hi there, thanks for reaching out about this. I created Jira to propose the change to the development team: https://issues.unrealengine.com/issue/UE-305999. You can track the progress of the work there. If you have any more questions, please don’t hesitate to contact us.

I think it still doesn’t work in 5.7, I don’t see any difference whatsoever with it on or off now compared to 5.5