Display ~100,000 "points" without destroying performance

I would go with a different approach.

  1. Make a single mesh out of a grid of let’s say 1024x512 cubes.
  2. Unwrap each of your cubes in such a way that if you have a 1024x512 texture each cube would be mapped to a single specific texel of texture.
  3. Make a render to texture material in UE4 and render out world space position of what you see from first person camera. To get a better accuracy you could just render position in local space of camera or only depth information and recover position in later shader.
  4. Now you can plug this “render to texture” into your grid of cubes material and offset each of them by value from texture.
  5. Extra step to get it working more like what you see on your reference LIDAR image is to scale each cube individually in proportion to it’s individual distance from camera. Or pre-calculate scaling factor when you render your scene into “render to texture”.

This should be super fast. Perhaps it would be even faster if you use a geometry shader and construct cubes on fly, so that you pass into videocard only an array of vertices (centers of cubes) with UV coordinates.