Does anyone have a basic explanation of why conductive materials change the color of their reflections, and why non-conductive materials don’t? I feel like I’d have less a struggle with glossy materials if I had some idea what’s going on here.
Also, what other optical properties does conductivity have?
The difference comes from the Fresnel equations: For dielectric (“regular”) materials, the Fresnel term is a simple factor, while for Conductors it depends on the wavelength (and therefore is different for the three color channels).
The Cycles Fresnel node implements the dielectric term, which just depends on a single IOR.
The conductive term depends on both IOR and an absorption coefficient, both of which are different for each color component. That’s what the NK data in e.g. LuxRender is.
If you need conductive Fresnel, you can use the “Fresnel Conductive” OSL template (as long as you render on the CPU). Just use the Color output of the node as the input of your Glossy shader.
As for the N and K values, I’ve converted some of the data from http://refractiveindex.com to RGB, the result is here.
The node setup there is an approximation of even another approximation (Schlick fresnel, from the linked paper), so it’s not really that accurate…
The claim that you can’t use NK values in Cycles is wrong - you can convert the measured values to RGB by multiplying the measured curve with each of the X, Y and Z reference curves and integrate over the products to get the XYZ value of N or K. From there, it’s a simple matrix multiplication to get RGB values. It’s not perfect, but it’s certainly not impossible.
I would like to add other metals
would be interesting to test how they render
do you know if there will be some new node added to do that in cycles ?
I think we need some new one
Fresnel does not seem to work very well in many cases