You're blocking ads, which pay for BlenderNation. Read about other ways to support us.

SSS Rendering with Nodes


SSS SchematicTired of using scripts? Tired of crazy setups for Sub Surface Scattering? Look no further than Blender's built in Compositor Nodes! This novel approach by Mike Pan (mpan3) uses Blender's Compositor to create a highlight mask based on the Z render pass.

In theory you simply take a render from the front of the object (Front.Z) and you take a render from the back of the object (Back.Z) and you normalize the two passes into one map value (Combined.Z) and use it as a mask for the RGBA pass. (See Image). In theory this works well however there are some key problems that come up when working with this kind of setup:

  1. Blurring the Combined.Z pass produced a dropshadow effect.
  2. The RGBA pass has to be inherently brighter as the Multiply Mix Node darkens the colors

SSS by MpanThat aside, it actually produces very convincing results when used properly and doesn't take but a few minutes to setup. The easiest way to produce results is to setup the scene and lighting and then Link Duplicate the Scene. Move the camera to the direct opposite side of the object. Linking both render passes into the compositor on your primary scene will generate the desired combined Z pass which can be used in the example schematic shown.

I did quite a bit of testing with this and found that it was actually easier to get good results by mirroring the backside camera horizontally as it aligns the Z channels better. Also if you then use the Darken Filter Type on your Mix Node it will give a better visual Z channel which doesn't have to be blurred quite as much to produce the same results.

Over all the technique is very useful and may be easier than using SSS by the MakeHuman project! For more reading on the subject check out these links:

About the Author

Daniel LaBarge

Blender Artist & Contributor at ID Studios [] Web Designer & Programmer at MonsterWeb []


  1. woah, that was fast. Anyways, I am still perfecting the method, some members had some brilliant ideas to simplify the approach. I'll present it along with an example file.

    However, i have no clue where you pulled 'Wong Hua' from?! [british accent]Name's Pan, Mike Pan :D [\british accent] And no, it's Mike, not peter...

  2. The dropshadow around the object could be masked away by rendering the object by itself or by masking the the "Multiply" node with some data from an ID mask node.


  3. /damage control on
    Eh, there is a mistake
    """This novel approach by Wong Hua (mpan) uses Blender's Compositor to create a highlight mask based on the Z render pass."""

    mpan is not wong hua... :p (I know that, because I am Wong Hua a.ka aws357...)
    I just reported the thread as being interesting :D

    Give back to Caesar, what belongs to Caesar they say...
    /damage control off

  4. ... interresting ... the Z pass seems realy handy :)

    just a thought :

    why not combine Z-pass with a pass with an "emiting - semitransparent" version of the material on the object ?

    that should be more "realist " in the concept than masking the front light reflection ...

    Or did I completely misunderstood the mix ... ?

  5. ok ... forget my previous comment : it's obviously trickier than that... but playing with the Z-buffer pass is by the way realy interresting :)

  6. @mpan || wong hua
    Scratching my head on where your new came from too :) - must of have seen it somewhere and inserted the wrong name! Sorry about that man! :: blushes ::

    There are alot of ways of perfecting the approach although they often make it slightly more complex but definitely not impossible. The method of removing the shadow effect is simple but requires another pass which could get kind of complicated for a quick fix...

  7. I've problems to get the Z-Values!
    The Image, that's translated (checked with Viewer) got blank!
    pure white! If I'd multiply that, it would remain the same... and if I'd darken that, I've got the same either :(

    Can anyone help me?
    What shall the renderlayers have?
    Z, right? Do they need All Z, too? What's with combined?

    The rest seems to work...

  8. Ok, I tested it again and it worked fine^^ thanks!

    I've used the alternative solution with inversed Z values in one layer, as one suggested in the forums!

    What do you get? Try to add a viewer to every single node -> You can see, where there is a problem, if there is a problem ;)

  9. while its not easier than the makehuman project's version, i've created an addition to this method that can compute true forward scattering. and when coupled with the makhuman version, the forward scattering from this method, and multiscattering and backscattering from the makhuman method do create almost completely realistic sss effects, however, render nodes get pretty complicated.

  10. raducoc: only way you can have REAL sss is with an unbiased renderer or hybrid. in order to do it you need photon mapping. but there are ways of approximating sss based on realistic parimitars like in gelato, but thats generaly what this technique is getting closer too.

Leave A Reply

To add a profile picture to your message, register your email address with To protect your email address, create an account on BlenderNation and log in when posting a message.