Experimentation Realistic Human Skin Rendering with Screen Space Subsurface Scattering

I tried to render the Realistic Human Skin while back ago, just use the bald head guys or wrinkled skin old man models that you properly saw them again and again. Finally I found a nice female 3D model “Emily” that she was 3D scanned with Paul Debevec’s Lightstage. The free model and references are from “Digital Emily 2.1” project which you can find here.

Screen Space Subsurface Scattering Shading technique is from Jorge Jimenez 2011 paper. Now UE4 is using it.

After I imported the model and textures, did some tweaking of the assets, at the end apply the Screen Space Subsurface Scattering Shading effects. Wa la, So far this is the result I got in Unity:




Model courtesy of the Wikihuman Project.

Basically I just used unity standard (specular setup) material with the Emily model only (included the eyes), no other fancy material or shader on the model it-self. At the end all the subsurface scattering effect is from the camera’s image effects.

That is my first try, may not looks perfect compares to the reference rendered pictures. Anyway lets me how you guys think.

2 Likes

Unity one looks a little bit like plastic. It lacks the detail of the maya one and looks washed out.

@Luckymouse : both rendering are in linear space?

Seems like a lot of the bump detail gets lost in in the unity version, also the effect in unity looks glowy which makes the shadows look too bright.
Still good work despite nitpicking :slight_smile:

The high detail bump map seems get lost in the normal mip. The rendering just can not pick up those micro level bump unless the camera is very closed to the surface.

@Pode Yes, all renders in linear color space.

Here is second try, tuned down the subsurface red color and reduced the scattering radius value. Also tweaked the shadow bias to get better self-shadowing inside the nose.

1 Like

Can you use the detail slot to provide another normalmap ?

I did try to use the detail normal slot. Again, it won’t show up in distance rendering. Or it may if I render like 4k image output, haven’t try that.

I can always increase the normal map scale value in the shader to get the detail bump for more specular hight light effect, but i will get horrible shading in jaw area.

In general there are still different result that using between displacement map in maya vs converted normal map in unity. Also like the eye lashes, I can’t render it as detail as the one rendered in maya vray, unless output in high definition rendering.

Nice work !

For the eylashes, if you are in defered mode, it’s always possible to use Screenspace shadows.

For the normal mapping problem, another possibility would be to create bumps in tangent spaces inside the fragment shader (something using dFdx() or dFdy()).

I think the provided asset is more suitable for non-realtime rendering, especially the displacement map they use.
There are solution for realtime photo realistic character rendering technical paper for unreal, the principle should be in unity. If someone interested it can check out their NEXT GENERATION CHARACTER RENDERING on pptx(323Mb) file.

They introduced the two lobes specular to render detail skin.
2867382--210025--Two-lobes-specular.gif

and other reference:

Actually this 2 lobes technique mentioned on original Digital Emily project, and included with their example OSL shader.

I’ve tried my self the sample with my implementation, and I agree. I had to make various changes on the maps plus create new one to fit my shader (base on latest Jimenez work paper).

The eyes in particular is not suitable for real time rendering. To me one mesh/one shader is the perfect solution.

Same asset in Marmoset toolbag 3 beta .Normal extracted from displacement .
At this time i am trying to remake it in Unity.

I don’t have Toolbag 3, is sss handle the same way as Toolbag 2 ?

My attempt in Unity 5 :

Have done some test long time ago with this asset and results were almost the same .

The Toolbag3 rendered image, I can only see the sss effect from backward translucency on the ear, didn’t see it in other area on her face. I don’t use Toolbag3, not sure what technique they use to render the sss.

By the way looki666 I think you may like to check this youtube video how they did on realistic eyes using arnold with maya. Basically you just need make a ramp gradient texture for the pupil transparent.

@Charkes
I can tell there are some subtle sss shading effect overall on her face, nice skin rendering.

Previous images that I made a custom spotlight effect skybox to mimic the lightstage environment to compare the reference photo and rendered image. I’m gonna test this character with variety lighting condition in unity, see how it goes. I maybe do some modification with the shader to render her skin surface details with 2 lobes technique later on.

1 Like

Hi.
Thanks , your unity one i also nice.
Btw for unity i am using this : https://github.com/CustomPhase/CP_SSSSS .
Screen Space SSS . It probably wont be as nice as Toolbag , but who knows ?
And yes there is wrong Translucency map in Toolbag ( my mistake ) .

Edit - Translucency :


Will post Unity version tomorrow .

1 Like

Hi .

Unity version :

3 Likes

@looki666 finally you get nice sss effect on both Toolbar and unity, good job!

I tried the CP_SSSSS, it produces pretty nicely sss effect too and easy to use.

In general screen space sss can get the subsurface scattering on the shadow area, that seems can not do it in texture space pre-integrated shading.

You can sample the pre-integrated texture using the shadow map, that’s what Penner did. It works pretty well.

1 Like