Just hook up an If node to your input ‘mask’. If the value is >= 0.5, output 1.0, otherwise output 0.0. Then multiply that result by your dot grid.

You can also try resampling your UVs so that the values are stepped in such a way as it matched your dot grid. I.e. if your dot grid is 100x100: multiply your UVs by 100, round them to whole numbers, and then divide by 100. That’ll leave you with discrete steps in UV space, rather than an interpolating value.

Does that make sense? I’d normally want to make a quick setup to show how, but I’m at work and don’t have access to UE right now.

I understand the concept, and it sounds like the UV stepping is the correct approach, I just don’t know exactly what I need to change in my graph to achieve that (where does this IF node go?). Would you be willing to show me on discord or similar messaging service? I’d be happy to post the results of the talk here.

Here’s a UAsset that’ll help you out (I hope). Grid resolution is handled by the GridTiles parameter - the higher the number, the more tiles the grid will have in each direction. At the moment I’ve just thrown on a debug moving circle to demonstrate.

Just an FYI, the Round node will do the same thing as this if statement but for 3 fewer instructions (and fewer graph nodes). You can put a subtract node in front of it if you need param control over the cutoff point.

Maybe a trivial optimization but its worth knowing the round node exists.