Jump to content

Question about RGB/Spectral SSS


Recommended Posts

I've been working the last couple days on rendering SSS in a more convincing way, and to hopefully (after some more work still) beat the outputs coming from Arnold, VRay, etc.


My first day was mostly spent messing around with different color grades and textures plugging into the physical_sss diffuse color and attenuation color, tweaking attenuation depth, and trying a lot of setups with a triple SSS node setup. Honestly it was more or less a wasted day, and at this point I don't think anything incredible is going to be achieved from physical_sss through the magic of the texture inputs you use.


The best solution seems to be that you strip it completely down to the bare elements, do separate physical_sss nodes so you can have different attenuation depths for R, G, and B, and add them all up. I found it to be a much better look than just trying to pick an attenuation color, because it begins to simulate the way white light enters a surface and slowly gets filtered as it passes through.




Then you multiply this "Raw SSS" by your skin texture map:




My question in all of this is how hard would it be to edit the physical_sss so that attenuation_density becomes a vector instead of a float, allowing you to achieve this result with a single phys_sss node? I'm not too experienced with that kind of thing, but if anyone's willing to help, I'm more than willing to test!


I also tried to do a second set of three more sss nodes, shift them to C, M, Y and mix them into the RGB calcs, then I'm able to set the scatter density of the entire RGBCMY spectrum. It works, and it looks nice, but without some kind of importance logic added to what I'm doing, it gets hard to do something like crank the red scattering way up because now R is watered down from the averaging process.


Here's my .hip file if you want a look at how it's setup. If you spot anything wrong or have any suggestions, I'd love to know. Head on over to /img/Spectral_Testing/SPECTRAL_OUT if you want to quickly fiddle around with the RGBCMY attenuation and visualize it.





Link to comment
Share on other sites

Edit: Nevermind, the physical_sss node performs this exact function if your diffuse_color is something like 0.9,0.9,0.9. I didn't catch that because I'd always been plugging a texture map into that slot when I was trying to fiddle with attenuation_color.


So the workflow would just be to run a physical_sss node with 80-90% white in the diffuse color, maps controlling attenuation_depth, and your desired scatter depths for R, G, and B plugged into attenuation_color. Then multiply by your texture afterward.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...