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.
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?
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.
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.
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.
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.
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.