Cycles Development Updates

(Continued from the original topic, which reached the maximum number of replies).

4 Likes

For those who are new to this thread and looking for background information I highly recommend perusing the previous thread. It is a wealth of knowledge, resources, techniques and development.

6 Likes

Maybe it’s time to move on?

Can we rename this thread to “Cycles development updates”?

2 Likes

Well, it has your name in the title so by extension you should be given ownership of the thread anyway. But yeah it has little to do with easter or eggs, unless the subject of a cycles render.

Yes. Done. :slight_smile:

I’ve made @brecht owner of this topic

Speaking of the original thread, does anyone know if that original demo video is still up anywhere?

7 Likes

Yay! Thanks!

Ah yeah I remember this video and the excitement it brought!

1 Like

Has there been any updates on anisotropy for random walk? Ever since I’ve seen examples of forward scatter I can’t unsee it. For some materials, random walk without positive or negative anisotropy tends to look fake, like it’s missing a thin film of detail.

Random walk SSS renders relatively fast and with little noise compared to brute force SSS because it uses a diffuse surface. And because that already diffuses rays a lot before they enter the volume, anisotropy can’t really recover any sharp detail.

What I think you are really asking for is SSS which has both a glass-like surface and anisotropy, like this one.

And we could add support for that in the Principled BSDF or Glass BSDF, though unfortunately it’s not possible to optimize that kind of thing as well as random walk SSS with any algorithm I know. The basic implementation of that would still have similar noise/performance as a manual node setup.

I’ve done a lot of tests with the Principled BSDF SSS (random walk) while comparing it with reference photos of human skin. What I’ve noticed is that it cannot simulate a forward scattering effect, and so when compared to the photographic reference any skin rendered with Principled SSS appears to be slightly hollow, as if it’s missing a thin film of illumination from where the light is coming from. It’s not a glossy or specular effect, but something to do with light penetrating and illuminating the immediate surface area. It’s also a very distinct effect from radius; they’re not the same. The distinction is even more pronounced in low light scenes.

This guide for Arnold, under the Anisotropy section, closely describes the phenomenon that I’m seeing in the photographic reference of real people; a kind of highly directional brightness that’s seemingly distinct from the color of the radius. Maybe it’s nothing to do with sharpness or detail preservation. It’s more like the subtle film of illumination helps to convey even more of the overall form.

I’ve experimented with this for hours and hours, and I’m convinced that random walk + diffuse (via Principled BSDF) isn’t adequate enough to simulate photoreal human skin. I think it may require one more component: anisotropy.

2 Likes

I worked on both the Arnold and Cycles implementations of random walk SSS and I’m pretty sure it’s not anisotropy that will make a significant difference, and that you can get a very close match by adjusting the radius and color.

If it is very distinct it would be great to see a .blend file to demonstrate it. With a simple white Translucent BSDF as the surface and Volume Scatter + Volume Absorption as volume you can get results identical to random walk SSS with anisotropy.

Here’s an example render (left: render, right: photo).

noseRender_01a

It’s a sculpted head rendered with Principled BSDF (random walk). It’s not perfect yet, but that’s partly besides the point. What I did was create my own custom 8k HDRI with a photo of a real person standing where the 3D model would be. This ensures a nearly 1:1 match on most lighting conditions.

There’s more of a brightness in lighting coming from the right of the scene. I perceive a very subtle layer of extra directional brightness on the photo reference but not on the 3D model. At first I thought this had to do with the radius or diffuse color or specular… but even accounting for slight imperfections, and after so much testing and other custom HDRI scenes (with photo reference), I can never get that “subtle layer of directional brightness” to appear as it should…

…as if the surface illumination is far too evenly distributed rather than favoring the directionality of the light source.

My experiments with multiple custom HDRIs, in diverse lighting conditions with 1:1 reference of real faces, seem to confirm this. In all the reference photos there’s more of a surface difference between light areas and dark areas, a physical contrast of illumination, conveying more of the subject’s overall form.

It’s obviousness varies from scene to scene, and skin tone to skin tone (I think it’s more perceptible in darker skin). Without that extra film of directional brightness (anisotropic forward scattering?) the rendered skin always appears duller than the real thing, regardless of radius, diffuse color, specular, or even Photoshop.

All that said, I’ll look into your suggestion and experiment with the volume nodes. I just like Principled BSDF because it’s so convenient to use.

Where the use of true volumes fall down (noting Brecht’s volume node suggestion) is that the density cannot be controlled with a texture or with a mask that is mapped to the surface (which is the case with the SSS node).

So you can’t use an image texture, vertex colors, ect… to control the density value (and by extension the anisotropy value) of the volume absorption and the volume scatter node. Things can become quite complex if you have to model volumes inside of your character meshes too.

I was worried about that. Several months ago I tried using volumes to create skin detail, but then realized it couldn’t input any textures. I had assumed that maybe new features were added since then.

So it seems to me that anisotropic scatter is only possible with glass-like materials. Relative to other solutions out there, true photoreal skin is, it seems, out of reach in Blender. For now.

That’s a good point, but I doubt anisotropy has much to do with it. It’s more likely to be the diffusion at the exit point used by Cycles and the random walk papers, since that discards the scattering direction.

Perhaps there is something that can be done to improve Fresnel or to take the scattering direction into account to some extent without breaking the optimizations.

The shadows in those two images are also in quite different positions, so I’m not sure the HDRI was lined up correctly.

All these years I wondered why Brecht’s easter egg surprise thread is so popular. Now I finally get it :slight_smile: