I know I asked something like this before, but this is more centered on the glossiness. How can I add glossiness on a material that has a toon|diffuse shader on it? Do I have to combine the toon|diffuse and the toon|glossy shaders? But how? The add shader doesn't seem to do a good job, because it masses up the colors brightness or something on the colors. Basically, how to combine the toon|diffuse and toon|glossy shader effectively?
Asked
Active
Viewed 733 times
2
-
Don't point the mix shader. I want combining with the full values. – Vladimir Jun 02 '14 at 16:23
-
Or maybe there are some ways to add glossiness other then the toon|glossy shader? If so, what are they? – Vladimir Jun 02 '14 at 16:27
-
ByTheWay - Is there a node that plugs into the fac of the mix shader that the mix shader combines them with the full values? – Vladimir Jun 02 '14 at 16:30
-
Or maybe the add shader cobines the brightness of the colors. if that is so, how to combine them (with whatever shader) without cobining the brightness of the colors? – Vladimir Jun 02 '14 at 16:32
-
What I want to do is to combine the two shaders, but the colors to stay the same. – Vladimir Jun 02 '14 at 18:07
-
Or maybe there is a way to make the add shader only to add the colors insteed of combining them? – Vladimir Jun 02 '14 at 18:40
-
Related: http://blender.stackexchange.com/q/5740/599 – gandalf3 Jun 03 '14 at 01:38
1 Answers
2
A BSDF shader requires three parameters: normal, size and smooth.
If the mix-shader doesn't produce the results you want you can still write your own shader using OSL.
shader Toon(
float diffuse_Fac = .5,
float glossy_Fac = .5,
color diffuse_color = .8,
color glossy_color = .8,
float diffuse_size = .5,
float glossy_size = .5,
float diffuse_smooth = 0,
float glossy_smooth = 0,
normal diffuse_normal = N,
normal glossy_normal = N,
output closure color BSDF = background()
)
{
BSDF = diffuse_Fac * diffuse_color * diffuse_toon(diffuse_normal, diffuse_size, diffuse_smooth)
+ glossy_Fac * glossy_color * glossy_toon(glossy_normal, glossy_size, glossy_smooth);
}
This one was adapted from this BA Thread where you also find pointers on this topic.
You only need to enable OSL in the render settings (this implies that it can't any longer be process by the GPU) and add a Script Node as shown in the image.

You could also try specular_toon() I wonder why this is not accessible from the Add Menu.