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.
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:
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!