Thin Film Shader
General
You might wonder why all colors of the spectrum shimmer in surfaces of soap bubbles, oil film on water, mother of pearl, etc. The reason this happens is a special physical effect referred to as ,thin film’ or ,interference’ effect. This effect occurs on very thin transparent surfaces whose thickness is approximately that of the wavelength of visible light (around 500 nm). The light is reflected by both front and back sides of the film:
Both reflected rays overlap (interfere) and the difference in paths produces an amplification and attenuation of the waves, i.e., changes in color.
These changes in color are dependent primarily on the following properties:
- The wave length of the reflected light, i.e., the light color
- The angle of view
- The thickness of the thin film
- The refraction index
Minor modifications to these properties will result in major changes to the rendered result.
The Thin Film shader, if implemented, works physically correct as described below, i.e., if you want to render realistic-looking results you have to create realistic lighting setups (e.g., by using a Physical Sky, luminous reflectors).
Implementation
The Thin Film shader can be loaded into any material channel, just as any other shader can. It will only work physically correct if it is loaded into a Reflectance channel's Texture field (preferably in a Beckmann or GGX layer) in the channel's Layer Color menu. Specular layers should be disabled.
For soap bubbles, the Transparency channel should also be enabled and its Additive enabled.
Open the following scene to see an example:
In General, the following applies: To get the most out of this effect you should make sure that suitable reflective objects are used; HDRI textures can be applied to a Sky Object or layers with luminous materials can be used.