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?