A rendering bug encountered when enabling SkinCache

This bug occurs when skincache is enabled and a skeletal mesh is displayed for the first time. The skeletal mesh occasionally renders incorrectly, as if it were exploding. I suspect it’s a timing issue.

In version 5.7, we can fix this bug by setting r.SkeletalMesh.UpdateMethod=0. However, this console variable has been removed in the current version.

[Attachment Removed]

Hey there,

We’ve removed that cvar with this change:

https://github.com/EpicGames/UnrealEngine/commit/e5d250461e8242e0297e576dcef1a93e20a9e8b7

Now it is replaced with r.GPUSkin.BoneTransformAllocationMode 0.

Have you looked into what might be causing the issue at the source that you needed to move to a legacy system? Some cvars that you can try to find the issues:

r.VelocityOutputPass 0

Check that it’s your base pass exploding and not an artifact from TSR or TAA.

r.SkinCache.AsyncCompute

The default is off, is this enabled?

Turn on stat SkinningSceneExtension

Do you see allocation spikes? Is the mesh extremely heavy?

Can you provide more information about the exploding meshes? Could you provide a repro?

Dustin

[Attachment Removed]

Understood, thank you.

Is the issue with all kinds of content or just one type? Was there a reason you all turned on r.SkinCache.AsyncCompute? Does it happen on just one platform or multiple?

I want to make sure I have the full picture to solve the core issue.

Dustin

[Attachment Removed]

Hi,

Is this issue occurring on PC only or on other platforms? Async compute skin cache is currently not supported on PC due to racing with the streaming system. That would explain the single-frame garbage you are seeing. UMA platforms should be fine.

[Attachment Removed]

Talking Zach, since the PC path isn’t supported, we recommend leaving it off for your PC builds, and it sounds like that addresses your issues. We’ll need to look into why the meshes are affected by that on the PC build because that should be a gate.

Dustin

[Attachment Removed]

Hey,Dustin

Thanks for your reply.

I can confirm the following:

1. I am absolutely certain this is not an artifact; both the Base Pass and the BLAS for this Skeletal Mesh meet this issue. I suspect this is related to the results of the SkinCache calculation.

2. If the Skeletal Mesh is updated, the issue resolves itself.

3. In our project, we have set `r.SkinCache.AsyncCompute=1`. I just ran multiple tests and found that if we disable `r.SkinCache.AsyncCompute`, the issue disappears (I’m not sure if it’s truly gone or if the probability of it reoccurring has simply decreased).

4. I just tried setting `r.GPUSkin.BoneTransformAllocationMode=0`, but that didn’t resolve the issue.

5. This issue only occurs the first time the skeletal mesh is displayed.

6. The explosion looks just like it does in the picture; it was originally a vehicle.

[Image Removed]

[Attachment Removed]

Hey, Dustin

This issue can occur with any skeletal mesh.

Since our scene requires updating a large number of BLAS dynamic skeletal meshes, and we found that running SkinCache and post-processing in parallel is a good idea, we chose to enable `r.SkinCache.AsyncCompute`.

We have only tested this on the PC platform so far; the behavior on other platforms is unknown.

[Attachment Removed]

Hi

Thanks for providing this important information.

As I just mentioned, We have only tested this on the PC platform so far; the behavior on other platforms is unknown.

[Attachment Removed]