Another SSS shader
15618 17 2- Serg
- Member
- 511 posts
- Joined:
- Offline
here:
http://www.sidefx.com/index.php?option=com_wrapper&Itemid=139 [sidefx.com]
The reason for being is because, sometimes geometry or pcloud based sss shaders can be impractical. For example, you might need very densely packed points for accuracy like if you have lots of displacement but you need the sss to pick up the detail, or just a very large surface area to cover, or just want to try something that renders faster at the expense of physical accuracy.
The shader has the ability to scatter ambient occlusion light as well as regular light sources.
Here's the contents of the included Otl Help.
MAIN SSS
Iterations:
How many times the shader is evaluated. Each iteration accumulates and the results averaged for noise reduction.
Entry/Exit Color:
Tints the color according to the luminance value. We could say that the darker the luminance the more distance the
light has travelled through the medium thus getting more and more filtered/saturated. Not physically correct at all but
looks close enough.
Entry/Exit Scatter Radius:
Controls how deep light can penetrate the surface. Setting the Entry and Exit values to very different amounts looks more
realistic and can be interpreted as layered appearance. For each iteration the shader will ramp between Entry and Exit
values.
Enable Bias:
Turns On or Off a section of the shader that allows for a bias adjustment along the normal. Switching it On results in a
10% slowdown, hence the switch.
Normal Bias:
Moves the sample point along the normal, inside or outside the surface. This parameter affects the contrast between smaller
and bigger model features, i.e. setting a negative value darkens big shapes but retains brightness in the smaller features.
Setting a positive value will brighten big features whilst small features remain more or less the same.
Angle Limit:
This is an optimisation feature of the Illumination Loop node, from the help: “The range of angle (in radians) away from the
Surface Normal from which lights can influence the surface. Any light outside the cone defined by this value and the
Surface normal is not part of the illuminance loop. If no input is connected, the default is PI/2 (i.e. 90 degrees in
radians).”
I other words, no computation will take place if the angle between light and surface is greater than this limit.
Tweak carefully because it can result in sharp edged dark areas where if the surface is facing away from the light and
a large scatter radius is in use.
OCCLUSION SSS
This will compute SSS for Ambient light with occlusion using the Main SSS parameters. Use a regular Ambient Light to see effect.
The following are specific Occlusion parameters:
Occ Iterations:
Samples are gathered the same way as Main SSS.
Max distance:
Regular occlusion parameter. Occlusion will only consider geometry within this distance. -1 = infinite… smaller values
render faster.
Bias:
Regular occlusion parameter. Shifts the sample away or towards the surface.
Object Scope:
Regular occlusion parameter. Select which objects to be considered for occlusion
GENERAL
Rendering in Raytrace mode lets you use fewer iterations because it samples the shader multiple times for each aa sample, but
its usually faster to render if you use more iterations rather than AA samples. Try both RT and MP renderers, one ot the other
may be faster depending on the scene.
The Shader has three outputs, either the combined Light and Ambient SSS or seperate outputs so that you may use output
variables, or check what each is doing seperately.
When rendering with multiple lights, their contribution is blended using a screen blend rather than Add (I'll probably add a choice)
Ambient Light is also screened…I found that using screen helps to avoid annoying diffult to control overexposure issues.
32 samples seems to be enough for noise free results in Raytrace mode and 3x3 AA samples.
It's a vopnet, jump in and mess around!
the renders bellow are using 2 lights, amb occ, 32 shader iterations and raytrace renderer. They took around 200 seconds each on a quad Opteron 280 (2.4ghz) using all 4 processors.
http://www.sidefx.com/index.php?option=com_wrapper&Itemid=139 [sidefx.com]
The reason for being is because, sometimes geometry or pcloud based sss shaders can be impractical. For example, you might need very densely packed points for accuracy like if you have lots of displacement but you need the sss to pick up the detail, or just a very large surface area to cover, or just want to try something that renders faster at the expense of physical accuracy.
The shader has the ability to scatter ambient occlusion light as well as regular light sources.
Here's the contents of the included Otl Help.
MAIN SSS
Iterations:
How many times the shader is evaluated. Each iteration accumulates and the results averaged for noise reduction.
Entry/Exit Color:
Tints the color according to the luminance value. We could say that the darker the luminance the more distance the
light has travelled through the medium thus getting more and more filtered/saturated. Not physically correct at all but
looks close enough.
Entry/Exit Scatter Radius:
Controls how deep light can penetrate the surface. Setting the Entry and Exit values to very different amounts looks more
realistic and can be interpreted as layered appearance. For each iteration the shader will ramp between Entry and Exit
values.
Enable Bias:
Turns On or Off a section of the shader that allows for a bias adjustment along the normal. Switching it On results in a
10% slowdown, hence the switch.
Normal Bias:
Moves the sample point along the normal, inside or outside the surface. This parameter affects the contrast between smaller
and bigger model features, i.e. setting a negative value darkens big shapes but retains brightness in the smaller features.
Setting a positive value will brighten big features whilst small features remain more or less the same.
Angle Limit:
This is an optimisation feature of the Illumination Loop node, from the help: “The range of angle (in radians) away from the
Surface Normal from which lights can influence the surface. Any light outside the cone defined by this value and the
Surface normal is not part of the illuminance loop. If no input is connected, the default is PI/2 (i.e. 90 degrees in
radians).”
I other words, no computation will take place if the angle between light and surface is greater than this limit.
Tweak carefully because it can result in sharp edged dark areas where if the surface is facing away from the light and
a large scatter radius is in use.
OCCLUSION SSS
This will compute SSS for Ambient light with occlusion using the Main SSS parameters. Use a regular Ambient Light to see effect.
The following are specific Occlusion parameters:
Occ Iterations:
Samples are gathered the same way as Main SSS.
Max distance:
Regular occlusion parameter. Occlusion will only consider geometry within this distance. -1 = infinite… smaller values
render faster.
Bias:
Regular occlusion parameter. Shifts the sample away or towards the surface.
Object Scope:
Regular occlusion parameter. Select which objects to be considered for occlusion
GENERAL
Rendering in Raytrace mode lets you use fewer iterations because it samples the shader multiple times for each aa sample, but
its usually faster to render if you use more iterations rather than AA samples. Try both RT and MP renderers, one ot the other
may be faster depending on the scene.
The Shader has three outputs, either the combined Light and Ambient SSS or seperate outputs so that you may use output
variables, or check what each is doing seperately.
When rendering with multiple lights, their contribution is blended using a screen blend rather than Add (I'll probably add a choice)
Ambient Light is also screened…I found that using screen helps to avoid annoying diffult to control overexposure issues.
32 samples seems to be enough for noise free results in Raytrace mode and 3x3 AA samples.
It's a vopnet, jump in and mess around!
the renders bellow are using 2 lights, amb occ, 32 shader iterations and raytrace renderer. They took around 200 seconds each on a quad Opteron 280 (2.4ghz) using all 4 processors.
- circusmonkey
- Member
- 2624 posts
- Joined: Aug. 2006
- Offline
- jjstanley
- Member
- 124 posts
- Joined: July 2005
- Offline
- Serg
- Member
- 511 posts
- Joined:
- Offline
seems the uploads or downloads are getting corrupted
maybe it works through the forum. If not get it from odforce.net here:
http://forums.odforce.net/index.php?showtopic=2262&st=168&start=168 [forums.odforce.net]
cheers
maybe it works through the forum. If not get it from odforce.net here:
http://forums.odforce.net/index.php?showtopic=2262&st=168&start=168 [forums.odforce.net]
cheers
- jjstanley
- Member
- 124 posts
- Joined: July 2005
- Offline
- Serg
- Member
- 511 posts
- Joined:
- Offline
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
it would be awesome if you could post an example of how you setup the shader.
Im about to start guessing but usually end up making the wrong connections. Its just better if i have a starting off point.
and thanks again for taking the time to write this, as i have seen how hard creating such shaders is.
-andrew
Im about to start guessing but usually end up making the wrong connections. Its just better if i have a starting off point.
and thanks again for taking the time to write this, as i have seen how hard creating such shaders is.
-andrew
- Serg
- Member
- 511 posts
- Joined:
- Offline
You can just plug the first output into Cf and you will get a result.
To replicate my scene is very easy:
Add a couple of spotlights (lights must have shadows On) and an ambient light, the shader does the Occlusion for this internally.
The Happy Buddha model in my scene is about 20 units tall, so if your model is of similar scale the results should be the same.
I've also added a lighting model for specular and 0.2 of diffuse, to do this plug the output of the sss shader and the Lighting model node into an “Add” node, then the output of the Add into Cf.
Set Mantra to render in Raytrace mode… You can use Micropolygon but you'll have to increase the samples a lot to get rid of the noise.
Btw the shader isnt written, you can press i to go inside it and see that it is all regular Houdini nodes, and see see exactly how it works
I'll post the scene anyway later.
Hope this helps
S
To replicate my scene is very easy:
Add a couple of spotlights (lights must have shadows On) and an ambient light, the shader does the Occlusion for this internally.
The Happy Buddha model in my scene is about 20 units tall, so if your model is of similar scale the results should be the same.
I've also added a lighting model for specular and 0.2 of diffuse, to do this plug the output of the sss shader and the Lighting model node into an “Add” node, then the output of the Add into Cf.
Set Mantra to render in Raytrace mode… You can use Micropolygon but you'll have to increase the samples a lot to get rid of the noise.
Btw the shader isnt written, you can press i to go inside it and see that it is all regular Houdini nodes, and see see exactly how it works
I'll post the scene anyway later.
Hope this helps
S
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
thanks Serg, exactly what i needed to know.
I didnt even think to see if this was a nested OTL, wow all nodes. Crazy. though without looking i think it will take me more than a while to understand it…. but i can give it a try i guess.
thank you for sharing and i hope to provide some cool renders for ya.
-andrew
I didnt even think to see if this was a nested OTL, wow all nodes. Crazy. though without looking i think it will take me more than a while to understand it…. but i can give it a try i guess.
thank you for sharing and i hope to provide some cool renders for ya.
-andrew
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
- jjstanley
- Member
- 124 posts
- Joined: July 2005
- Offline
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
- symek
- Member
- 1390 posts
- Joined: July 2005
- Offline
phrenzy84
well i had a play with it and followed all the instructions .
But no luck.
The object with the SSS material comes out white. Ajusting intensity of everything i cant get any other result.
That example file would come in might handy about now cause i cant find a single thing wrong.
Note that some older builds of Houdini 9.1 had a few VOPs broken (fitVOP for sure maybe something more). 9.1.81.7 is the one for instance. This shader won't work under such a build. Dive inside a VOP to check if some of its operators are marked red…
cheers,
sy.
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
- michael
- Member
- 66 posts
- Joined: July 2005
- Offline
- phrenzy84
- Member
- 249 posts
- Joined:
- Offline
holy s..
this shader is amazing. All is good now.
Three attempts, thats all it took to get something going.
Attempt 1 (plug a unfished texture into the lighting model, kept SSS vop at default, HULK )
Attempt 2 (Plugged the texture into the SSS Vop Entry , and also adjusted the color for the Exit, but i forgot to adjust the light so it would shine on the eyes)
Attempt 3 (Just adjust the light, everything the same)
Thats all it took. Really easy for people like me to use. Plus i could expand so much on it. Cant wait to play with cavity, spec, bump, displacement.
Thank you so much.
-andy
ps oh and any white bits in the last render is because i havent finished the texture.
this shader is amazing. All is good now.
Three attempts, thats all it took to get something going.
Attempt 1 (plug a unfished texture into the lighting model, kept SSS vop at default, HULK )
Attempt 2 (Plugged the texture into the SSS Vop Entry , and also adjusted the color for the Exit, but i forgot to adjust the light so it would shine on the eyes)
Attempt 3 (Just adjust the light, everything the same)
Thats all it took. Really easy for people like me to use. Plus i could expand so much on it. Cant wait to play with cavity, spec, bump, displacement.
Thank you so much.
-andy
ps oh and any white bits in the last render is because i havent finished the texture.
- Serg
- Member
- 511 posts
- Joined:
- Offline
Thanks for the coments guys
phrenzy84.
A better way to do that would be to multiply your color texture with the output of the shader, leaving the color controls for tinting purposes.
I would probably set the entry color white with a tiny hint of blue and the exit to some shade of red. It should start to mimic a layered look, specially if you use a small entry radius.
phrenzy84.
A better way to do that would be to multiply your color texture with the output of the shader, leaving the color controls for tinting purposes.
I would probably set the entry color white with a tiny hint of blue and the exit to some shade of red. It should start to mimic a layered look, specially if you use a small entry radius.
- jjstanley
- Member
- 124 posts
- Joined: July 2005
- Offline
-
- Quick Links