Physical Fresnel (ND K) and the French Blue

Hello, sorry if my English is bad.

Personal work that ends with a diamond .

The basic idea is simple: is it possible to realize a Fresnel function supporting the imaginary part with the nodes?

Assuming that ND and K are = or greater than 0, the function can then be recalculated, giving a node like this:

I use this scene for the following examples

Basically, it produces the same result as the internal blender node.

The difference appears with the use of the imaginary part, I use the wavelengths 650,525,480 nm

The data used is taken from and .ior file





Gold White

Gold Rose

Gold Purple




The imaginary part can be converted into an absorption coefficient, and used directly in cycle

In addition, the function supports total reflectance: simply invert the ND/K value pairs into, a shortcut is made using backfacing
Diamond whith and without total relfectance

We get this



Beryl Yellow


Emerald Ural

Garnet Orange

Sapphire (medium blue)

Tourmaline Yellow




For the rest, I wanted to reproduce the blue diamond of France, the French blue

The modelling was simple, I use the ND of the diamond and the K of the sapphire, I did not find the data of the Hope diamond.

HDRI textures come from

the rendering is rather heavy, and the denoiser does not like it.

I hope I didn’t do anything wrong with the forum and my first post.


Looks interesting - can you make your node setup image larger - it doesn’t expand when you click on it and thus it’s difficult to see what nodes or node settings you have used.

Have you tried this setup with the new path guiding function available in 3.4 alpha?

Path guiding only works for diffuse brdf at the moment :

blender 3.3

blender 3.4 path guiding

Edite : I take back what I said: path guiding changes some elements
3.4 GPU

3.4 CPU Path Guiding

What we really need to see is what you added to the Node Group > U Physical Fresnel…in the node tree from above.

Thanks but that doesn’t really help…I don’t see what the K Complex IOR node has to do with your first node tree showing the Nd1 and K1 Nd2 K2 inputs…
and the K complex IOR also has several more group nodes nested with in it…

update : the new version uses the same approach as
The previous version did not support cases of the type (1-nd)² + K² < 1

This seems correct :