# Physical iridescence in Cycles?

Having recently seen the Siggraph paper A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence, I of course said to myself "I have to have this in Blenderrrrr!" and started to experiment with a node setup to at least simulate it.

The paper, while not too long, is quite technical and mathy, and over my head. But I did glean some basic information from it (please point out any mistakes):

Iridescence is the result of a phase shift during refraction.

The colors of iridescence can be represented by drawing a spiral curve through a color space.

The color banding changes with the incident angle. So, of course the good ol' Fresnel effect is at play here. Seems logical to assume we need to have physically accurate Fresnel if we want to have physically accurate iridescence.

It seems all this complex math can be represented in approximation by a color ramp! Heyyyy, I use color ramps all the time. Maybe this won't be so hard after all.

I don't know what $\mathcal{D}_\text{inc}$ is though... (no dinc jokes in the comments, please). If you know what it means, please comment or answer.

Could this approximation be perhaps close enough for our practical rendering purposes?

Let's take our screen shot of the gradient and crop it:

Instead of painstakingly setting hundreds of gradient stops for the color bands we can plug in the cropped image of the gradient with the vector data from a Layer Weight node like this:

Now we have fake iridescent color!

From here I've been experimenting with PBR node setups and trying to plug this gradient color data in in some meaningful way. I've made some neat looking materials, but as far as physical accuracy goes, I can't say I've made much progress. Since my understanding of the paper is incomplete, I'm asking the community: Can we create an iridescence shader like the one described in this paper, in Cycles?

• For Dinc check here: hal.archives-ouvertes.fr/hal-01518344/file/supp-mat-small.pdf Second paragraph. I'm totally dumb in maths (and physics with optics included) but Dinc (for me) looks like thin-film layer thickness. Don't take my word for it, I'm probably (mostly) wrong. Jul 3, 2017 at 16:17
• But there is it from @brecht: "Strictly speaking Cycles wouldn't need to be a spectral renderer to support dispersion, it can be fit in without that." Jul 3, 2017 at 18:28
• Please keep in mind that I was just playing here, but also tried to incorporate your efforts into the experiment. As far as the goal I was shooting for: I was referring to the chair material found in your provided link As requested, here is my experiments: Jul 11, 2017 at 5:09
• @RickRiggs Thanks for sharing your experimentation. :-) Jul 11, 2017 at 14:35
• blenderartists.org/forum/… Apr 5, 2018 at 13:25