Freebie: Complex-Fresnel Texture for Blender

Scroll down to content

We developed a Complex-Fresnel node-group for Blender, that allows simulating correct metallic reflection intensities and colors, and works in both CPU and GPU rendering in Cycles.

The CGL_RGB_Complex_Fresnel  node-group is in fact an incident-angle-dependent procedural color texture, that has complex-IOR inputs,
That is refractive index values and extinction coefficients for each of the 3 wavelengths R, G and B.
The CGL_RGB_Complex_Fresnel  node should be connected to the color input of a Glossy BSDF shader or an Anisotropic BSDF shader.

Some examples of Complex IOR values:

Gold:
n: 0.18299, 0.42108, 1.3734
k: 3.4242, 2.3459, 1.7704

Iron:
n: 2.9114, 2.9497, 2.5845
k: 3.0893, 2.9318, 2.767

Copper:
n: 0.10423, 0.79746, 1.0482
k: 3.7757, 2.5642, 2.4136

Such detailed optical surface data can be found at the https://refractiveindex.info database.

Download the CGL_Complex_Fresnel.zip file here:

CGL_Complex_Fresnel

How to use the CGL_Complex_Fresnel :

  1. Unzip it, and save the CGL_Complex_Fresnel.blend file.
  2. In your scene, choose File > Append,
    Locate the CGL_Complex_Fresnel.blend file, and click it to brouse its contents,
    Click ‘NodeTree’, and than double click CGL_RGB_Complex_Fresnel to append it to your scene.
  3. Create a new material with either a Glossy BSDF shader or Anisotropic BSDF shader.
  4. Press Shift + A to add nodes and choose Group > CGL_RGB_Complex_Fresnel.
  5. Connect the CGL_RGB_Complex_Fresnel node’s output to the color input of your Glossy BSDF shader.
  6. type in complex IOR values to the CGL_RGB_Complex_Fresnel input parameters.
    * by default, the CGL_RGB_Complex_Fresnel is set to simulate gold.

Enjoy! 🙂

And make sure you check out our Blender products at Blender-Market:
https://blendermarket.com/creators/cg-lion

7 Replies to “Freebie: Complex-Fresnel Texture for Blender”

  1. Nice work!
    But it doesn’t take into consideration that blender expects sRGB colors and the node outputs colors before sRGB transformation, right?
    This results in less saturated colors than what they should actually look like…

    Some years ago I set up my own metal colors as gradients according to the curves found on refractiveindex.info. Somewhere I stumbled across this sRGB issue (I think it was in some post on blenderartists), but unfortunately I can’t find that transformation formula anymore.

    I may look that up later this week and see if I can still find it. If yes, then I’ll let you know.

    Best regards
    jk

    1. Hi jk,
      Thanks for your feedback!
      I might be mistaken, But as far as I know Cycles shaders expect linear color, and Cycles processes and outputs linear color.
      Developing shaders would be very cumbersome if they had to process gamma corrected values,
      And also, there are times where your target color space isn’t sRGB, so it wouldn’t make sense to process shaders internally as sRGB.
      I also compared the CGL_RGB_Complex_Fresnel texture’s color output with output from V-Ray with a complex ior OSL shader,
      And for the same ior values the results are identical, as far as the eye can see.
      Prior to this, I also created metal shaders by reconstructing reflection curves from refractiveindex.info,
      And there was no problem with that (apart from the fact that editing the curves is time consuming).
      But I did find something worth mentioning:
      Cycles’s ‘Facing’ input value, that is found on the ‘Input > Layer Weight’ node, isn’t linear.
      It’s some sort of a curve, And for that reason, if you go the way of drawing reflection curves,
      You need to create your own incident angle calculation that progresses linearly.
      Best regards
      Oded

    1. Should work just the same as in Blender 2.83.
      You should double-click the CGL_Complex_Fresnel.blend file,
      And inside it there is a “NodeTree” folder, inside of which you’l find the “CGL_RGB_Complex_Fresnel” node.
      It works as expected in Blender 2.83.
      * I haven’t yet installed Blender 2.9

  2. Please explain how to derive the individual values to input from the info provided in the database – the formula. So if red is 650 nm, which numbers in the database are used with what calculation to get the values to input? Sorry, no math, chemistry, or physics background whatsoever here.

    1. Hi Josef,
      After you select the wanted material,
      Type the wavelength in the ‘Wavelength’ field in micrometers, so 650 nanometer will be 0.65 micrometers.
      Then, under ‘Refractive index’ the ‘n’ value will be your n and under ‘Extinction Coefficient’, the ‘k’ value will be your k.
      These values will change as you type in different wavelengths.

Leave a Reply to Oded ErellCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from CG LION Studio

Subscribe now to keep reading and get access to the full archive.

Continue reading