Computer Graphics · Shading Models

Layered Materials and the Fresnel Coupling Between Coats and Substrates

How a clear coat sits on a base material, why the transmitted share at each interface is not simply one minus the reflected share, and how internal reflection traps light inside a layer.

Car paint, varnished wood, glazed ceramic, and the laminated screen of a phone all share a structure: a thin, usually smooth, dielectric layer over a thicker base whose appearance differs. Rendering them as a single BRDF fails in a consistent way: either the specular highlight sits on top of a base that looks too bright underneath, or the base is correctly dark and the highlight looks pasted on. The two layers are exchanging energy, and the exchange is governed by the same Fresnel relations that describe a single interface, applied twice.

The stack and what each interface does

Consider three media in order: air, a coat of index n_c and thickness d, and a base with its own reflectance behavior. Light arriving from air meets the air–coat interface. A fraction F_ac reflects immediately; the rest transmits into the coat. Inside the coat, the light either reaches the coat–base interface or is absorbed by the coat’s own small absorption. At the base interface a fraction F_cb reflects back up into the coat, and the rest enters the base.

The reflected-back light travels up to the air–coat interface from below. There it meets the interface in the reverse direction, and two things can happen: it can transmit out into air, contributing to the visible specular reflection, or it can undergo total internal reflection and return into the coat. Which occurs depends on the angle relative to the interface normal and on the index ratio, exactly as described by the critical angle arcsin(n_air/n_c).

Total internal reflection is the part that a naive two-layer model omits entirely. In a coat with index 1.5 against air, the critical angle is about 41.8°. Any light inside the coat travelling steeper than that angle from the normal (closer to the plane of the surface) cannot escape. That light bounces between the two interfaces until it is absorbed or until scattering inside the coat redirects it into the escape cone. The consequence is that a high-index coat traps a substantial share of the light that entered it, and that trapped light eventually emerges at a location and angle unrelated to where it entered.

This is why a varnish layer visibly deepens the colour of the wood underneath. The light that would have left the base at a grazing angle is instead returned into the base, absorbed further, and re-emitted at a shallower angle where the base is darker.

Fresnel in both directions

The Fresnel coefficients for the two directions of travel across the same interface are not simply related by subtraction. The reflectance for light going from medium 1 to medium 2 at angle θ₁ equals the reflectance for light going from medium 2 to medium 1 at the transmitted angle θ₂; this is a consequence of the reversibility of the boundary-value problem, and it holds for both polarizations separately. What differs is the angle at which that reflectance is evaluated, because Snell’s law maps one angle to the other.

So a shader that computes the air-to-coat reflectance at the view angle and then uses 1 − F as the transmittance into the coat is correct for that direction. But it must not reuse the same F value for the light leaving the coat toward the eye from below: that light is at a different internal angle and sees a different reflectance. Reusing the same value is a common shortcut, and it produces an error that grows with the index contrast and with the viewing angle.

The transmittance across the interface also carries a geometric factor if the quantity being transported is radiance rather than power. Radiance is not conserved across a refractive interface: the transmitted radiance is scaled by (n₂/n₁)² multiplied by the transmittance. Ignoring that factor makes a coat look uniformly too bright or too dark by the square of the index ratio, which for a coat of index 1.5 against air is a factor of 2.25, large enough to see immediately if a reference is available, and easy to mistake for a material tuning issue if not.

/* Transport one radiance sample across an interface, both directions of the
   Fresnel term handled explicitly. n1: incident side, n2: transmitted side. */
static double transmit_radiance(double L, double cos_i, double n1, double n2,
                                double *cos_t_out) {
    double eta = n1 / n2;
    double sin_t2 = eta * eta * (1.0 - cos_i * cos_i);
    if (sin_t2 >= 1.0) {                    /* total internal reflection */
        *cos_t_out = cos_i;
        return 0.0;
    }
    double cos_t = sqrt(1.0 - sin_t2);
    double R = fresnel_unpolarized(cos_i, n1, n2);
    double T = 1.0 - R;
    *cos_t_out = cos_t;
    return L * T * (n2 * n2) / (n1 * n1);   /* radiance scaling */
}

The radiance scaling matters when the layer is being evaluated as a sequence of interfaces: each crossing changes the radiance that the next interface sees. For a thin coat the two crossings nearly cancel, which is why the effect is often invisible until someone checks a transmission-only material against a reference and finds the brightness off.

Energy accounting for the coat’s own reflections

The interface reflectance is not the coat’s whole contribution. Light that reflects inside the coat can reflect again at the other interface, and again, producing a geometric series of contributions to both the reflected and transmitted sides. Summing the series gives the coat’s effective reflectance, and the sum is what makes a thin film behave differently from a single surface.

For an interface with reflectance R and a base with reflectance R_b, the total reflectance of the stack, ignoring absorption, is

$$R_{\text{total}} = R + \frac{(1-R)^2 R_b}{1 - R R_b}$$

The first term is the direct reflection; the second is light that transmitted in, reflected off the base, and transmitted out, with the series of further round trips folded into the denominator. This is the Airy summation for the incoherent case. For a base that is a perfect absorber, R_b = 0 and the total is just R; the coat contributes nothing but its surface reflection, which is exactly what a glossy black surface looks like.

The coherent case, where the coat thickness is comparable to the wavelength, replaces the scalar sum with a phase-dependent interference term. The phase difference between the two reflected paths is 4π n_c d cos θ / λ, and the resulting reflectance oscillates with thickness and angle. A coat of a few hundred nanometers produces the coloured sheen seen on soap films and beetle shells; the same formula with an incoherent average produces the neutral reflection of a thick varnish. Using the coherent formula for a coat that is physically thick is wasteful and produces aliasing across the surface, because the oscillation period is far below a pixel.

Both cases must respect the same bound: total reflectance never exceeds one for any angle or wavelength. The Airy sum satisfies this automatically if the individual reflectances are valid Fresnel values; a fitted approximation that replaces the base reflectance with an arbitrary curve can violate it, and the violation appears as a coat that seems to glow at grazing angles.

Interaction with the base BRDF

The light that enters the base is not simply the incident light scaled by the transmittance, because it arrives at an angle inside the coat that differs from the external angle. A rough base BRDF evaluated at the external angle rather than the internal one is being asked the wrong question.

The usual approximation evaluates the base BRDF at the internal angle’s cosine, transformed by Snell’s law, and multiplies by the transmittance at both entry and exit. For a diffuse base the angular error is small because a Lambertian response does not depend on the angle. For a base with its own specular lobe, the error is large: the lobe direction is compressed toward the normal when seen through the coat, which is the effect that makes a wet surface’s reflections look different from a dry one, and it is not captured by treating the coat as a simple filter.

The base’s own energy budget must also survive the coat. If the base is a metal with a multiple-scattering energy correction, the correction’s albedo must be computed for the internal illumination, not the external. Applying an externally-tabulated correction inside a coat with a different index gives too much or too little compensation, which shows up most clearly on a rough metallic paint layer under a clear coat.

Failure modes worth checking

A model built this way tends to fail in four observable ways.

The coat is drawn with the wrong roughness scale. A physically thin coat is usually smooth, but if its microfacet distribution is given the base’s roughness, the highlight becomes a broad wash and the surface reads as painted rather than lacquered. Coat roughness should be a separate parameter, and it should be low unless the coat is deliberately degraded.

The base is visible through the coat’s specular lobe. Because the base’s specular component reflects back into the coat and can reflect again at the top interface, a base with a strong specular response produces a doubled highlight: one from the base seen through the coat, one from the coat’s own surface. Real materials show this, and a model that suppresses it by clamping the base’s specular to zero loses the depth that distinguishes a lacquered finish from a plastic one.

The coat’s absorption is applied per unit thickness or not at all. A coat with a small absorption coefficient over a tenth of a millimetre absorbs almost nothing; the same coefficient over a centimetre absorbs visibly. If the model stores a per-layer transmittance rather than a coefficient, the thickness is baked in and the material cannot be reused at a different scale.

The grazing behaviour is wrong because the internal path length grows. At grazing angles the light travels a longer distance inside the coat, so both the absorption and the accumulated phase depend strongly on the angle. This is the regime where the coherent thin-film colours shift most rapidly, and it is also where the Fresnel reflectance is highest, so the effect is partly masked. A model that interpolates the thin-film reflectance from a normal-incidence lookup gets the normal case right and the rim wrong, which is the most visually prominent error of the four.

References

  1. Theory for Off-Specular Reflection From Roughened Surfaces — K. E. Torrance, E. M. Sparrow, Journal of the Optical Society of America, 1967
  2. Optics — Eugene Hecht, Addison-Wesley
  3. Physically Based Rendering: From Theory to Implementation — Matt Pharr, Wenzel Jakob, Greg Humphreys