What is the purpose of the GPU Skin Cache and will it ever be enabled by default in a future engine release for certain feature levels? Is it considered experimental?
From what I can tell, it appears to do mesh skinning in a Compute Shader and cache the results for a simpler pass-through mesh skinning Vertex Shader. I imagine this might be beneficial when rendering multiple skinned meshes with the same poses in a small window (i.e. GPUSKINCACHE_FRAMES, currently 3) of frames, at the cost of additional memory? Ignoring that potential benefit, does this improve performance in any way by moving the skinning out of the VS stage?
In a very similar way to what you mentioned, but the vertices don’t need to be transformed over and over in the same frame for depth pass, bass pass, shadow pass, velocity pass, and etc. Also I could see in the future potentially skinning occurring using async compute for the next frame. Another experiment we could do: GPUSKINCACHE_FRAMES can be integrated with a LOD system so less relevant meshes are updated less frequently.
Hi Victor, it is experimental; one of the issues why we don’t currently use it in our games is its memory cost. We’ll be looking into optimizing this in the future. The biggest gains are when combined with Morph Targets on compute (which will also be exposed soon).
I have set the GEnableGPUSkinCacheShaders to 1 and use “r.SkinCache.Mode 1” to make UE4 use compute shader skinning, I found that it is not more effective than vertex shader skinning…Why? Is there still some problem in GPU Skin Cache, or I did the wrong operation? I put 300 SkeletonMeshes in my scene and they are do the same animation.