Enhanced Fresnel (node group)

In addition to Fresnel, this group has enhancements for roughness and color.

Fresnel:
I developed a way to take roughness into account. It mixes two Fresnel nodes.
An RGB Curves node remaps roughness values to precisely control reflectance.

Grazing Reflectivity:
Roughness values are darkened at grazing angles to enhance reflectivity.

Color Correction:
This addresses the issue of color being too dark at grazing angles.

The first render was made with this group.
For comparison, the second render was made with the CynicatPro Fresnel.




Roughness is squared in the group. There are two roughness outputs.
One is for 2.79, and the other is for 2.8. The 2.8 output reduces the power.

A separate “Grazing Reflectivity” group is included to use with the Principled shader.

Enhanced_Fresnel.blend (89.4 KB)

7 Likes

Thanks for sharing.
I will experiment with it and check if this nodegroup fits in a particular collection I am working on. Who can I credit? (Twitter, Facebook, website, disOrder66 on Blenderartists etc?)

Regards,

Robert

Sounds like it’s trying to achieve something similar to what myself and a few others worked on a little while back:

You can credit “disOrder66 on Blenderartists”.

It is the same idea, but I use a different approach.

Thanks. Both yours and moony’s are very interesting additions to roughness and fresnel.

In the viewport I get some fire-flies in EEVEE on that what sharper edges under a particular angle with light source and when the grazing reflection is on.

When rendering the fireflies are gone but got a reflection, way to bright, like in screenshot here: (right eyebrow)

BrightPixels

I didn’t experience this before in EEVEE and it only happens only when I use this nodegroup and turn on grazing reflection. (correction, it’s also there when turning off grazing reflection, but very light / not that obvious).

Any idea what it could be?

Update: Strange. I thought let’s try it with a very simple node-setup I did before, but it gives exactly the same issue / artefacts. Must be something else then.

LayerWeight

I tried to figure out what it was and switched on/of (contact) shadows, screenspace reflections, delete bake, point/area/spot, vsm/esm, but the only thing that helped was to turn down the radius of a point light completely. Cycles doesn’t show this issue.

@disOrder66 Hey, can you tell about making the graph you posted? How can you tell the reflectance value and plot it?

Afaik the roughness values get squared at all shader roughness inputs now (Disney roughness).so you dont need to pre square the values with the new Blender versions.at least with Cycles.

Here you can read
https://developer.blender.org/rB7613ffc

What math do you use for your Fresnel? any source? I know the CynicatPro videos,i mean the enhanced math.

I don’t have experience with EEVEE. Someone else may have a solution.

I rendered the edge of a sphere using only the factor output of the group.
In the Image Editor, I enlarged the Sample Line scope and set it to display lines.
I dragged a Sample Line through the image to display the highest reflectance value.
I took a screenshot of the scope. I increased roughness at increments of 0.05 and
took a screenshot for each setting.
The images were imported as layers in Gimp and cropped into a thin vertical strip.
The layers were positioned on a grid according to their roughness values.
I imported that image into Inkscape and drew a curve by placing a point on each peak.

This group is designed to also be used with the official 2.79 build, which needs squaring.
The Fresnel requires the original roughness, so it can’t be squared before the group.
With the group set up like it is, the results are consistent between 2.79 and 2.8.
Even if this group was made just for 2.8, I would use the same configuration because
it produces the best results with the default Grazing Reflectivity setting of 0.5.

I didn’t use any sources.
I adjusted the points in the RGB Curves node to get a response that looked good.

The response can be changed easily by inserting another RGB Curves node directly after
the existing one. Adjust the top right point, or add points to the curve to reshape it.

Sorry for the noob question. But how do I use these two node groups? Can you show an example of a material with them in action?

Sorry to bump this yet again. I’m just wondering if these custom fresnel setups are still useful or needed with the Principled BSDF shader? I’m also a little confused what to do with the “Enhanced_Fresnel” node groups. Can anyone point me in the right direction? Where do I plug these groups in?

I looked up Cynicat Pro’s tutorials and they are all 5 years old and use blender 2.7. I heard fresnel is built in to the Principled shader now. Am I wrong?

Thanks for any help or guidance at all.

Yes, principled does include Fresnel effects, but there is no compulsion to use the Principled BDSF, it’s just another tool in the box. Personally I don’t like it and still prefer to build my materials the individual nodes.

There are however some effects that Principled doesn’t include, such as microroughness - so if you want that effect, the only option is to use an external node group (which of course can be plugged into Principled if you so wish).

2 Likes

Thanks so much moony. I was reading through your megathread and I’m left wondering what the latest microroughness node group looks like. What is your goto setup when working with microroughness?

To be honest - I haven’t really changed it since that thread. It seems to work.

I use it in pretty much any material that has rough glossy reflections.

1 Like

Sorry for the late reply. Here are the ways to connect the groups.

2 Likes

What’s happening to the color (-> diffuse) in the top one?

At the time I developed that group, I wanted to match the results from
the Principled shader by increasing the color value at grazing angles.
Since then I learned that the Principled shader doesn’t conserve energy.

Color Correction breaks energy conservation.
It should only be used for artistic enhancement.

I discovered a way to make the Principled shader more energy-conserving.
Set Clearcoat to 0.001 and Clearcoat Roughness to 1.
This is only for dielectrics.

1 Like