Cool Watercolor material with Eevee

Learn how to make your 3D mod­els look like water­col­or paint­ings with the ever use­ful shad­er-to-rgb node. If you pre­fer text tuto­ri­als, you can read the text ver­sion below.

The trick behind this water­col­or mate­r­i­al is to make it look like the objects are paint­ed on a piece of paper rather than an object in a 3D space. So the first step is to add a prop­er paper back­ground. Let’s hop into the wold editor.

World and settings

You can down­load the paper tex­ture here. We want it to always look the same, so objects look paint­ed on top of it. To get that effect let’s add a tex­ture coor­di­nate node and plug in the win­dow coor­di­nates. You can also use a map­ping node to move it around and repo­si­tion it. Finally I’m going to desat­u­rate it a bit and fid­dle with the con­trast using the curves node.

Now, we don’t want the paper mess­ing around with our light­ing. So we need to dis­able it for every­thing except the cam­era. We’ll use the old light path trick for this. Mix the paper tex­ture using the Is Camera Ray out­put with pure black. Now we can have one col­or for the light­ing and anoth­er for what the
cam­era sees.

We’ll use this tex­ture again when we make the objects mate­ri­als so let’s put it a node­group. Don’t for­get to throw some lights around your object so you can see their effect on the material!

Watercolor Material

Alright, mate­r­i­al time. Let’s add a new one and get rid of the prin­ci­pled shad­er. We are going to work this the same way we would do a water­col­or paint­ing: from light to dark. That means we let the paper show
through the light areas and cov­er the shad­ows and edges to sug­gest the form. And to do this we will be mix­ing things on top of the paper tex­ture using multiply.

Bring back the paper node we made before, and plug it into an emis­sion shad­er. Check it out: since the tex­tures in the mate­r­i­al and world are in sync we can’t see the mod­el any­more. Now let’s get start­ed with the edges. Add a lay­er weight node and low­er the blend to about 0.2.

We have to dis­tort this to make it look like paint. We’ll have to make a vec­tor that we can plug into the nor­mal sock­et of the lay­er weight that will look more like water­col­or. Add three noise nodes (one for each axis), a com­bine vec­tor node and tex­ture coor­di­nates. Plug every­thing togeth­er and the result of the com­bine vec­tor in the lay­er weight. Play around with the nois­es, you want to bring up the dis­tor­tion set­ting but not too much. Otherwise it gets too messy.

Normals to simulate watercolor effect

With these done, we need to get the shape of the object back. So let’s bring a geom­e­try node and a vec­tor math node and com­bine them with our painter­ly normals.

It’s also use­ful to con­trol the inten­si­ty of this effect. So drop some math nodes for each noise and set them to mul­ti­ply. Then add a val­ue node to con­trol the amount to mul­ti­ply. I’ve found that 0.7 looks good enough.

Back to the lay­er weight node. We’ll add a col­or­ramp to con­trol it, set it to bspline to make it smooth. Now the trick to get a water­col­or effect is to make the tran­si­tion areas between col­ors go zig zag between dark and bright so the tran­si­tions are dark. I got this trick from Hadyn Lander’s water­col­or uni­ty shad­er.

Let’s add anoth­er col­or­ramp set to constant to add hard­er edges. We can mix these two using a math node set to multiply.

There’s one more thing left to do here. I think it looks bet­ter when water­col­or paint seems to flow and around. We can use the win­dow coor­di­nates to get that effect. Add them with a Vector Math node the same way we did before.

Alright, let’s get the light­ing infor­ma­tion now. Bring back the prin­ci­pled shad­er and plug the painter­ly nor­mals in there. Add a shader-to-rgb node so we can con­vert the shad­er result into an image and plug it into a colorramp.

Now here’s the trick to get that water­col­or look.

Just like before, we want to jump between dark and light. This time we’ll have more col­ors stop, and packed tighter. You might have to zoom in real close for this. It also might be dif­fer­ent depend­ing on the light­ing in your scene.

Remapping values for the watercolor effect

Mix all these togeth­er using the mixRGB node set to (you guessed it) multiply.

Adding color

Time to add some col­or to bring this effect togeth­er. Add anoth­er colorramp in the prin­ci­pled shad­er area. Set it to bspline to make it smooth. Pick some col­ors suit­able for your mod­el and try to play with some hue vari­a­tion besides val­ue. These are the col­ors I used for the rose: #9B3E72, #D5A781 and white

Let’s add a final colorramp for the edges, again using bspline. This one needs to be a bit more sub­tle than before so the hard edges don’t stand out too much. These are the col­ors I used: #FFC1D2 and white

Hope you enjoyed this tut. Did you make some­thing cool? Let me know in the comments!

Batch rendering is complicated

But it does­n’t have to be! Render+ lets you set­up, run batch­es and a whole lot more from the com­fort of Blender’s interface. 

Try out Render+ today!

All the posts you can read
BlenderEevee, Materials07.09.2020