Iridescent oil slick from thin-film interference
In your harnessProcedural textureMIT
Generate tileable maps of thin-film interference colours: oil on puddles in asphalt, a spill on harbour water, a soap film or heat tint on steel, with colours computed from film thickness, refractive indices and colour-matching functions. Use for wet streets, polluted water, bubbles and welded metal.

What it takes and gives
- Entry point
- generate
- Maps
- albedo, normal, roughness, metallic, height, ao
- Parameters
- pattern, film_min, film_max, scale, swirl, coverage, vividness, hue_shift and 2 more
- Presets
- default, harbour_water, soap_film, tempered_steel
- Tileable
- yes
- Command line
- python oil_slick_iridescent.py --size 1024 --seed 7 --preset NAME --out DIR [--width W --height H] [--set NAME=VALUE] [--directx-normal] [--orm]
- Godot material
- material.tres
- Blender builder
- blender_material.build_material(folder)
Limits. Two-beam interference at normal incidence: colours do not shift with viewing angle, multiple reflections and absorption are ignored, and a metal substrate is approximated by a negative real reflection amplitude instead of a complex index, so temper colours are close but not exact. The colour-matching functions are an analytic Gaussian fit and the grey part of the film reflectance is partly removed for clearer hues, so this is a stylized rendering of thin-film colour rather than a spectral measurement. Film thickness comes from noise or bands, not from flow or oxidation physics. One still frame.
Details
- Kind
- Procedural texture
- Engine
- Python 3.10 or later
- Files
- 12 files, 258.7 KB
- Licence
- MIT
- Declared effects
- runs commands, writes files
- Checked with
- Godot 4.7.2, gl_compatibility
- Checks
- command line generates declared maps, maps decode, maps have declared size and channels, maps tile without a seam, normal vectors unit length facing out, maps carry detail, godot imports the maps, godot material template loads every map, godot compatibility render, capture shows the textured surface, blender builds the material
- Techniques
- Two-beam thin-film interference with Fresnel amplitudes at normal incidence, Spectral integration against a multi-lobe Gaussian fit of the CIE 1931 colour-matching functions, CIE XYZ to linear sRGB conversion, Domain-warped fractional Brownian motion for film thickness, Puddles from flooding an asphalt height field to a quantile level, Height to tangent-space normal by central differences
- Tags
- texture, pbr, tileable, iridescent, oil, thin film, puddle, heat tint
- Identity
library.supply.creative_originals.438e4b09edf4fddd5d5c7cd0.b0d5a4fe3cf9a5a1- Version
b0d5a4fe3cf9a5a1767d7d252fe652977d452893b479f452e45ec909ffdc86c4
The version is the SHA-256 of the item your harness downloads; every file in it names its own checksum.
Something wrong with this item, its rights or its safety? Report it on the support page, or from your harness after a download.


