aeronautic

Light

The haze, the eye's glare, the exposure and a blackbody's colour, shared by the lights and the flares.

What a bright point of light needs to be drawn as the eye sees it, shared by @aeronautic/lights and @aeronautic/countermeasures.

The haze

exportwhat it is
extinction(visibility, density)The air's extinction per metre at 680, 550 and 440 nm: molecules and haze.
transmission(air, d)What a path of d metres lets through, per channel.
density_ratio(altitude)The air's density at an altitude over sea level's.
KOSCHMIEDER, RAYLEIGH_SEA_LEVEL3.912, and the molecules' extinction at sea level.
ANGSTROM_EXPONENT, AEROSOL_ALBEDO, _ASYMMETRYThe haze's spectral slope, and how it scatters.
WAVELENGTHS_NMThe three wavelengths the channels stand for.

The eye

exportwhat it is
glare_psf(θ, observer)CIE 146's glare spread function, per steradian per lux.
glare_scattered, glare_core, glare_radiusWhat the eye scatters, what is left in the light's disc, and how far the glare shows.
GLARE_MIN_DEG, GLARE_MAX_DEGWhere CIE 146 holds: a tenth of a degree to a hundred.
exposure_ev100(ev)The number a camera at an EV100 draws one cd/m² as.

Colour

exportwhat it is
planckian(T)A blackbody's chromaticity at a temperature.
chromaticity_rgb(xy)A chromaticity in linear sRGB, at a luminance of one.

Drawing the glare

One quad a light, sized to its glare's reach, in a mesh of create_glare_geometry(count) with create_glare_material(uniforms). Each frame, lay_glare(geometry, index, camera, light) lays one, hide_glare clears one, and glare_laid(geometry, count) sends them. glare_pixel gives a pixel's angle for the camera, the least a light's disc is drawn as.

On this page