← All ideas
  • Published 6 Oct 2023

Principled shader Subsurf color input may still be needed

I was thinking about it and what if you had a character wearing warpaint, or had dirt or grease smeared on their face. You would need a color input for subsurface that would be different from the color map for the things riding on the surface.

In the Avatar movies, the Navi have a blue surface color map and a pink color under the surface. If I'm understanding the new system correctly, An attempt to make a navi character in Blender would result in something that looked like a blue candle. We have the radius control, but that's based on the input color, right?

Any number of alien, supernatural or NPR results that may require separating the surface from the interior would require access to that input.

Maybe there is something that I'm not understanding. But keeping access to the subsurface color input seems like an option that wasn't hurting anybody, but its absence could lead to results that are impossible to obtain in Blender.

0%

Development Status: Open

Upvote 0 Downvote 0
bigmagnetjim
6 Oct 2023

12 Comments

Jvry

You can change subsurface colour with the subsurface radius. It's not currently as obvious that's what it does as there are a couple of ways you can use it that I don't particularly understand yet. For now,

  1. bump the weight up to 1.
  2. Dial in your scale to whatever makes sense for your scene.
  3. Fiddle with the radius values. In Cycles you can plug an RGB node into the radius socket but this doesn't seem to work in Eevee, at the moment you have to input the values directly.

You can also use the radius as distance and attach a texture (SSS map maybe?) to the scale. That might require experimenting with.

In all I think it is probably more versatile now. Just going to need people playing with it to see what it can be done with it.

bigmagnetjim Author

Thanks. The radius input has a purple socket, which means it isn't meant to take an image directly, I think.

What would be REALLY more versatile is if they kept the subsurface color as an available input and leave the user with the choice.

Thanks for the good advice.

Omer-Almadani

AFAIK the old subsurface color was just multiplied with the base color. So you can just use a mix node with your base color input set to multiply to get the result.

bigmagnetjim Author

Thank you for the explanation, but if that solves it I'm not following. Using the Navi characters from Avatar as an example, if I multiplied blue and pink and plugged that into the base color, I would end up with purple skin and that color would be copied as the subsurface color. And we'd end up with a purple candle. Not blue on the surface and pink underneath.

I don't know much about what is going on under the hood, but I've done a bunch of characters and creatures and being able to control the subsurface color separate from the surface color comes up often.

Thanks for the comment.

christian.schlaeffer

what you might want is a mix shader node and a mask to mix a skin shader without the warpaint with a warpaint-only shader. and indeed , the previous implementation of the subsurface color was similar to just a color mix

Omer-Almadani

It doesnt solve navi characters in blender because that wasnt what you were aking for lmao. You were asking to bring back subsurface color parameter and I explained how you can recreate it.

bigmagnetjim Author

I appreciate the explanation, I just don't understand what you're describing. Are you saying before the base color goes into the base color socket, multiply in the subsurface color to it with a mix node? Or is that result supposed to plug in somewhere else? Any trick that would expose the subsurface color parameter should make it possible to do navi effect I used as an original example. Thanks for talking about it with me.

bigmagnetjim Author

So the fix to their improved shader is to now use two shaders rather than one? I supposed that would work for some of the use cases, but it seems like we're moving in the wrong direction.

This isn't question for you, but I wonder if there was there something super wrong with including that subsurface color input? Did it break some physics rule or did they just assume nobody needed it anymore?

Thank you for the comment.

christian.schlaeffer

it's cleaner, in general, which I think is the reasoning. BUT: please also note the 'radius' input. try plugging a texture in there and see if that does what you need. I think it was a wise choice to make that more prominent.

bigmagnetjim Author

I agree making radius more prominent was a good call, but it has a purple input, which means it requires a vector input, not an image. I don't think plugging a color into it would do anything.

I can't use 3.5 and beyond without buying a new computer, so I can't test any of this myself. But I stay up to date with changes and this lack of subsurface color input could be a deal breaker. I'd hate to not be able to use such a powerful program for such a small omission.

I would hope they didn't get rid of it just for a cleaner look, since it would be hidden in the new drop down expandable category of the new Principled shader anyway.

Thanks for your help.

Jvry

Have you tried plugging an image into the radius in your version of Blender? Ignore the purple for a moment and just try it.

The blender manual has this to say about subsurface radius: "Average distance that light scatters below the surface. Higher radius gives a softer appearance, as light bleeds into shadows and through the object. The scattering distance is specified separately for the RGB channels, to render materials such as skin where red light scatters deeper. The X, Y and Z values are mapped to the R, G and B values, respectively."

So under the hood it is working on the RGB channels. You can work in the 0-1 range for direct use of colours, or go beyond it for scatter distance for each channel, hence why it's purple rather than yellow.

In 4.0 I can plug images into radius, scale and weight, with different effects depending on the values of the other two sockets. Still playing about with it to see what else can be done.

Been looking more into it on devtalk and (very slowly) beginning to understand things. The subsurface colour is really just mixed into the base colour, with the subsurface slider acting as both mix factor and strength scale. With these decoupled you can mix between diffuse and subsurface with weight, determine depth scale in units, and tint with the radius a number of ways, which is probably why they deemed colour redundant. But it'll take people actually using the new methods to determine if there is a use case only having the colour socket solves. So don't talk about deal breakers just yet. :)

bigmagnetjim Author

Thanks so much for poking around under the hood. I can't test it myself without getting a new computer, so I appreciate everyone's contribution to solving the riddle.

You're right, we'll have to just wait and see what happens.