Conniekat8 opened this issue on Mar 07, 2008 · 912 posts
bagginsbill posted Fri, 11 July 2008 at 12:04 PM
Hi people. Cool stuff here. I happened to see my name regarding Fresnel, so I popped in.
Don't use the Fresnel node for this - it does refraction as well as reflection, resulting in a cool effect for water or clear glass, but not what you want for shiny clothing.
Reflections alone will cause an increase in render time, but pretty mild. Refractions are terribly slow, but necessary for certain materials.
My thread on Fresnel reflections from way back is actually just an approximation of the Fresnel effect, and a rather poor one at that. Even the Fresnel node is not accurate. I recently constructed, from first principles (by using the actual Fresnel equations) a shader tree that accurately performs Fresnel reflection. I used it in my free Orb shaders.
http://market.renderosity.com/mod/forumpro/showthread.php?thread_id=2743322
http://sites.google.com/site/bagginsbill/free-stuff/orbs
The first shader in that set, Orb001_Opaque would actually make a pretty good shader for any glossy material such as latex. Just change the color in the Simple_Color node at the top of the shader. Or, set it to white and attach a color map.
Of course you don't have to use real reflection. You could use a reflection map with the sphere_map node instead. You'd still want the Fresnel effect with that, though. Go into the shader and find the Reflect node. Replace it with a Sphere_Map + Image_Map combination.
The amount of shininess is based on the Index of Refraction (IOR) of the material. I know, that sounds strange for materials that don't refract, but it still applies. I used an IOR of 1.54 for glass. There are four math nodes in the shader that have this value in them. You can change the IOR to any value you want. The IOR of metals is really high, like over 50. If you put 50 in there, you will get a really shiny material, with nearly uniform reflection across any angle. Values closer to 1 will produce less reflection, but still appear to have very strong reflection at the edges. It's all in the Fresnel equations - you only need to adjust that IOR for any realistic effect. The Edge_Blend trick I used to do just doesn't cut it any more.
Also - that shader implements Gamma correction, so the reflections blend correctly no matter what color the material is. Try white and black. Compare the results to other, more naive, reflection shaders that don't use gamma correction - resulting in non-linear math in your shader. You'll be surprised at the difference in realism.
If anybody wants to know more about accurate Fresnel, speak up.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)