If there are hundreds or thousands of the same mesh rendered in the same view (depending on the camera angle, etc), converting these to ‘instanced’ meshes, will reduce time spent in draw calls (but not time spent on the GPU or Game thread)
With console command ‘stat unit’ check if Draw is actually the problem.
In a scene where you don’t have too many draw calls, you may have stats like this:
Frame: 30ms
Game: 29ms
Draw: 2ms
GPU: 29ms
‘Frame’ is overall time it takes for one frame, Game, Draw and GPU execute in parallel.
Unreal engine executes most of the code in Game thread, and quite a bit in Render Thread (measured in Draw metric). Time that video card spends is displayed under GPU. (while Game is preparing next frame, GPU is displaying previous)
Switch from lots of static meshes, to few instanced static meshes will reduce draw calls, and should improve Draw stat. However, if Draw time is not the same as GPU and Game, then you are not bottlenecking there.
Note that if you have 10k trees in the scene, but only 300 of them in the view, occlusion culling also happens on the Render Thread (displayed under Draw). If you switch this setup to one instanced mesh with 10k instances, draw could be much faster (one call with a list of 10k transforms, instead of 300 models with vertices, indices, vertex colors, especially if these models are complex), but GPU will then have to handle all triangles from all instances, before they’re discarded because they’re out of view. You could potentially slow down GPU time.
Without instancing, Render Thread will only send 300 draw calls for those 300 trees that are rendered, and GPU will only have to process those vertices/triangles. GPU does triangle and pixel culling later on, but switch from normal meshes to instanced meshes will always increase GPU time while reducing Draw time. Sometimes this pays off, other times it doesn’t.
It’s great for clumps of foliage made up of the same model, in relatively small area, which is what engine already does for you if you’re using Foliage as a way of distributing your meshes. What you paint as ‘foliage’ doesn’t have to be a tree or bush… it can be anything.