Fresnel (curve values)

Hello Guys and Girls,
I’ve seen this nice video from EVERMOTION http://vimeo.com/103108876.
And of course guys in comments are right. It should be connected to layer node as FACING not FRESNEL.
I did a test and it looks that this method works better then using just value of IOR in fresnel node.
I made quick plastic and chrome shader. On the left there is fresnel node and on the right is curve method.
In my opinion the right one looks more accurate (especially for chrome). Do I miss something or can I just from now create shaders in this way? :slight_smile:

https://dl.dropboxusercontent.com/u/33178660/fresne_and_curve.jpg

He can’t pronounce fresnel correctly (few can in this business it seems), do we want to trust him? :slight_smile:

Whatever gives you the results you’re looking for, that’s the “correct” approach. There is nothing wrong with using fresnel input (heck, even with a curve modifier) or face input (has to be curve driven, usually). Often I will exaggerate the “IOR” to raise reflections, or divide it a bit to lower it.

Do your own research and observe how well (or badly, quite often) the result vary from so-called “official” values. Buy a LEGO set and see how ABS plastics in this form isn’t quite as reflective at glancing angles as tables tend to suggest. Another thing I’ve often noticed is to raise “IOR” value significantly for the “main rough gloss of the actual plastic”, and have the “sharp shiny gloss of plastic” be a separate “coating layer”. If it looks coated, it often is :slight_smile: The “IOR” value of the “coat” would then depend on the thickness of the transparent coat. If thin, you’d get edge favored sharp reflections. If thick, sharp reflections would pay a more major part. In addition to the rougher gloss of the plastic material itself.

Also, you’re showing chrome. What is chrome? It’s a chemical element, hence a pure metal (assuming no contaminants, and thickly enough plated showing no signs of transmittance - the usual way of applying chromium plating at least), so where is your diffuse coming from? The thing that ruins the left image is the amount of diffuse coming through. Chrome isn’t as reflective as you’d think (although I often exaggerate as well for artistic purposes), it’s actually a bit absorbent (compared to aluminium, silver, gold), but it’s preferred for its durability/hardness, price, and protective abilities.

So, did you miss something? Not really, except chrome shouldn’t have a diffuse component (if pure). Even steel (alloy, not a pure metal) has such a low non metal content (carbon) that you could safely ignore diffuse. If anything, mix in another glossy shader with varying roughness to simulate imperfections caused by scratches or less perfect surface treatment (i.e. polished).

Can you use curves for everything? Sure, if it gives you the additional controls you need. It’s not “typically” needed though, and you might want to apply to a high recursive scene to test for speed differences (I haven’t tried yet myself). If it works, then it’s ok. Scientific values is an ok starting point, don’t get me wrong. But don’t trust them blindly if the results doesn’t seem to pan out, as the experiment might have other mistakes.

One exception to “not typically needed”, is that of glassy materials. Pretty much every time I need glass, I go with custom curves, or at least a custom node setup, because the builtin glass shader offer zero flexibility wrt control. Real life glass is never as perfect as using a glass shader on its own, or I just need to tweak glass properties that doesn’t exist in the shader version (like very transparent but using a layer of anti reflection coating, heck, even dust :)).

In the end, for me, the quickest to render solution that produces acceptable results, is what is good for me. That said, I othen tend to overdo complexity myself :smiley:

As an end note: Pure polished metals tend to be so reflective that you can safely ignore any kind of “IOR” or curved facing tricks. Not a soul would notice in the grand scheme of things.

Thank CarlG so so much for you answer. Of course you are right :slight_smile:
The thing is sometimes it’s hard to say if there is something wrong with the lighting or with the shaders.
What I would like to do is to create the library of basic realistic shaders and then start lighting the scene. I mean good shaders should be a solid base for lighting, not the opposite. I am sure you do understand me :slight_smile:

I believe the best approach is to build yourself a library of materials with different degrees of realism (btw, I hate that word :)), and then always start out using the simplest/fastest version unless you have specific reasons not to. Then choose more advanced versions if they offer more flexibility in control for the lighting setup and shading response you want in this lighting setup.

Why even bother complexifying things using custom glass with custom curves, dispersion effects, volumetrics, globally linked polarization effects, fake/real caustics control and so on, if all you want it glass for a vase on the kitchen or its windows, or these effects doesn’t apply at all for the render you need to do? It’s just a complete waste of rendering time and noise fighting.

Simple or advanced “real” shaders, this isn’t typically what sells the material. If the coloring and basic shading is “about right”, that’s usually sufficient, but you still need to pay attention to the actual surface finish. Polished, buffed, cast, milled etc, all produce different results. And then there is the scratches from wear and tear, do you want to apply them simplistically using a procedural approach sacrificing rendering speed, or manually laying out UVs for texture maps, sacrificing setup time?

At least for me, there typically isn’t one grand approach that meets all “realism” aspects, as well as render at acceptable speeds.