Looking for Advice when Creating Complex 2d interactable displays (Sonar Waterfall Display)

Hello Developers! I’ve been playing around over the past couple days trying different methods for creating a display simular to the one pictured below which is a passive sonar waterfall. I essentally wanted to create a grid like canvas in which I could change the colour of a grid square when needed.

The first method I came up with was to create Paper2D sprite components and place them in a grid like pattern where required, and store refences to them in an array so they could be edited or moved around later. This method worked however it required created thousands of sprites which impacted frame rates. Felt like this is a poor way of doing things.

Secondly I tried using UMG widgets/images stored inside a uniform grid, this very quickly led to a drop in frame rates.

Thirdly I replaced the paper2D compents with instanced static meshes, this worked but less effectently than the paper2D sprites.

Ive expermented trying to create a dynamic material that can I could plug values into to create the same effect, but I’m totally lost on how I would do something like that.

Anyone have any other ideas on this topic, is there something I’m missing.

Thanks Everyone!