When I say “points off-screen can’t be culled” what I mean is this:
the way occlusion culling works is that if UE determines that an object is not visible (either being behind an object or off camera) it doesn’t bother to render it. Since all instances of an ISMC are treated as a single draw call, they are treated as a single MESH, meaning if you can see a single point in the cloud, the engine will attempt to render ALL 100,000 cubes. This is a waste of processing power since the main use of this is to splay the cubes out around the player in all directions, and for many uses he would only need to look at like 30% of them (since all the points behind him and off to the side wouldn’t be visible). It’s sort of wasteful spending all that GPU power drawing cubes behind the camera every frame.
BUT, and I’ll be honest, I didn’t think about the performance cost of spawning ISMC instances in realtime. My ISMC actors spawn their instances via a construction script and it DOES take quite a while to run (full minutes, in fact, if they’re tweaked too heavily) and while I considered the performance impact of RENDERING all those meshes, I certainly didn’t think about the performance impact of GENERATING them with the LIDAR sweep itself… hm.
I just tested a modified version of my crowd-spawning actor which, rather than constructing with all of the instances, spawns them after 25 seconds have elapsed in-game; I got a frame lag of about 1 or 2 seconds, spawning 126,000 instances all at once. Granted, my machine is pretty powerful, and the actors I’m spawning are only flat planes rather than cubes (BTW, are you spawning UE4’s default cube mesh? It has far more verts than you need; make your own 8-vert cube mesh, that might help)… but it still seems to me that if you’re dividing up about 100,000 points over MULTIPLE ticks the frame hit shouldn’t be that large spawning the instances. If I reduce the size of the object so that it only spawns 12,000 or so (i.e. 1/10th of the size) the framerate only drops by a couple ms for that frame…
What I’ll suggest to mask this problem is to tweak your loops-per-tick algorithm. If you spawn the ISMCs in 1000-point chunks, your FPS hit should be very minor (assuming you’re targeting 60+FPS; if you’re going for 144+ FPS it might be a problem) and the effect itself will still only take about 1.5 seconds, which is a perfectly nice-looking way of handling the effect in-game in terms of its comparability to an actual radar sweep.