eon constant

DiffuseModel const eon

The energy-preserving Oren-Nayar lobe of Portsmouth, Kutz and Hill (EON, JCGT 2025, preprint 2024), rough by the material's own roughness.

A rough dielectric is a surface of tiny facets, and Lambert treats it as a flat one: its shading falls off with the angle to the light to a dark rim, where real clay, plaster and concrete stay brighter towards the rim and scatter back towards the light, so Lambert reads as plastic. EON flattens the falloff and lifts the side facing the light, as Oren-Nayar does, and then adds back the light that bounces between the facets, so a white surface under a white sky still reflects all of it. The colour saturates a little as it roughens, which is that interreflection too. A smooth surface is Lambert.

Arithmetic only: no table and no sampler. Direct light gets the whole lobe; the ambient, the environment's irradiance and a lightmap get its directional albedo at the view.

Implementation

static const DiffuseModel eon = DiffuseModel._('eon');