LAB JOURNAL//Algorithms

Non-Linear Sellmeier Dispersion in Hardware Raytracing

Implementing wavelength-dependent refractive index equations directly inside GPU intersection kernels.

Marcus Vance
Marcus Vance
Spectral Algorithms Lead
Aug 20, 2026//8 min read
Non-Linear Sellmeier Dispersion in Hardware Raytracing

Refraction is not a single number. When white sunlight strikes a crown glass optic, every component wavelength experiences a distinct phase velocity through the dielectric lattice. This fundamental property—chromatic dispersion—governs everything from camera lens color fringing to prism spectroscopy.

Historically, offline raytracers simulated dispersion by splitting a ray into three separate RGB rays at every transmissive boundary. This approach results in exponential ray tree growth and severe Monte Carlo variance.

The Sellmeier Empirical Equation

For transparent optical media, the empirical Sellmeier formula provides an exact relationship between wavelength \lambda (in micrometers) and refractive index n:

SPECTRA // SNIPPET
n^2(\lambda) - 1 = \frac{B_1 \lambda^2}{\lambda^2 - C_1} + \frac{B_2 \lambda^2}{\lambda^2 - C_2} + \frac{B_3 \lambda^2}{\lambda^2 - C_3}

Where B_{1,2,3} and C_{1,2,3} are experimentally determined constants published in precision glass catalogs.

SPECTRA // SNIPPET
pub fn evaluate_sellmeier(lambda_um: f32, coeffs: &[f32; 6]) -> f32 {
    let l2 = lambda_um * lambda_um;
    let b1 = coeffs[0];
    let b2 = coeffs[1];
    let b3 = coeffs[2];
    let c1 = coeffs[3];
    let c2 = coeffs[4];
    let c3 = coeffs[5];

    let n_sq_minus_1 = (b1 * l2) / (l2 - c1) 
                     + (b2 * l2) / (l2 - c2) 
                     + (b3 * l2) / (l2 - c3);

    (1.0 + n_sq_minus_1).sqrt()
}

Hardware BVH Co-traversal

Instead of shooting separate rays per wavelength, Solis packages a bundled spectral packet containing 8 contiguous wavelength samples. When the packet traverses the bounding volume hierarchy (BVH), ray-box intersections share identical spatial trajectories until the physical transmission boundary is crossed.

CONCURRENT OBSERVATIONS