I put together this halftone shader effect in Blender earlier today:
The key realization for me was that Blender’s shader nodes allow you to use Diffuse BSDF or other shaders as inputs to your setup. This means we can take the lightness of our mesh and use that as an input to a color ramp with a step function in it. In more detail, here’s the shader setup:
I’d wager a more skilled artist could replace the dot-pattern generator with something that gives more consistent result and doesn’t have that semi-circular banding issue. Give it a try and let me know if it works out for you.