How about something like this?
Or, even more fun:
Or a ball:
Or a tribute to the question author:
(I am having way too much fun with this)
The dot aspect ratio depends on your UV unwrap, so you can customize it as you want. I have gotten them to be square on a non-square image, but having a square image makes it a lot easier.
- Identify the nearest hole.
- Find the distance to the hole.
- If the distance is greater than the radius, use transparent. Otherwise, use the central color of the center of the hole.
EDIT: GitHub user @JayFoxRox has kindly
suggested some helpful simplifications to the below node
setup. Instead of computing distance by taking the square root of the
sum of the squares of components, simply compute squared distance by
taking the dot product of the two inputs via the Vector Math node.
(Then, of course, compare this to the squared radius instead of the raw
radius.) And the “Combine Vector” and “Separate Vector” node groups now
exist as first-class “Combine XYZ” and “Separate XYZ”, anyway. Thanks!
Blendfile: Dropbox, Blend-Exchange.
Main node setup (right-click → Open Image in New Tab to see larger):
Separation (top) and combination (bottom): (would be nicer if it were built-in)
Distance: (Pythagorean theorem/Euclidean norm)