I am trying to set up a material that acts as a filter - taking an image plane and giving it a halftone look.

The dot pattern is made wih a radial gradient texture mapped across the camera space. A Group Node that replicates the functionality of a ColorRamp (thanks @PGmath!) takes advantage of that radial gradient to manipulate the dot radii using the original texture - which is split into CMYK channels.

Agent 327

CMY are generated by separating the three RGB channels, and recombining two of them while omitting the third. These three C,M,Y dot patterns are then multiplied together along with a black (Key) channel and it looks somewhat like halftone printed artwork, but it has the following problems:

  • Cyan seems to be too strong in areas like the fire, where it shouldn't be, and weak in the bluish background where one would expect it to be more prevalent. When multiplied it actually darkens the fire. That's how the multiply blend mode works, but how the darker color values got so strong in those areas to begin with, I'm not sure.
  • Areas with a lot of black lack color in between the black dots where one would expect it. (Color is dropping out in dark areas.)
  • Dot size seems to be disproportionate in each of the CMYK channels. Magenta has really small dots compared with Cyan, for example.

Here is the node setup so far:

Halftone pattern Cycles node setup

You can see my desperate attempt to balance the color channels using RGB Curves nodes. This was pure trial and error. There must be a better way.

I suspect that part of the issue lies in that C,M,and Y each have very different levels of perceived brightness. So maybe I need to correct for this before the color data is converted into dots. I'm still researching about this.

If you guys see where I'm going wrong here, please point out my mistakes. Thanks!


By inverting the RGB channels before splitting them I was able to create a working setup that is also easier to understand.

Agent 327 halftone filter fixed

Here is the new node setup:

Color halftone filter - fixed node setup

There are a few things that can probably be tweaked and improved, but in essence the problem is solved.


I played a bit with it and noticed, that it was the conversion from RGB to YCM. R,G,B = 1,1,1 should be converted to Y,C,M = 1,1,1 But it doesn't. Try it out and here a custom conversion for workarround:

  • $\begingroup$ I think you might be onto something with that color separation method. Thanks for posting that. I just have to get it back to a subtractive color model, because the way the colors are combined in your .blend it is additive like RGB and has no black channel. I'm experimenting now... $\endgroup$ – Mentalist Mar 5 '18 at 10:57
  • 4
    $\begingroup$ Would be good to add an image preview as well so those of us passing don't have to grab the blend and render. :) $\endgroup$ – iKlsR Mar 5 '18 at 13:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.