Browser-Based Light Pollution Simulator: Real Photometric Data Drives Accurate Skyglow Analysis
Browser-based tool simulates light pollution using real photometric data from luminaire files, renders 3D urban scenes with Bevy, and calculates skyglow in real time. Open-source.
Overview of IESNA.eu Light Pollution Simulator
Light pollution—particularly skyglow from urban street lighting—is a growing environmental concern. To help lighting designers, urban planners, and researchers understand and mitigate this issue, a new browser-based ecosystem called iesna.eu has been developed. This tool is not just a static viewer; it is a comprehensive platform for working with photometric data, running standard design calculations, and visualizing real-world light distributions in interactive 3D scenes—all within a web browser.
The core functionality includes parsing multiple luminaire file formats (LDT/EULUMDAT, IES LM-63, Oxytech, ATLA-S001) and performing calculations against major road lighting standards such as EN 13201, ANSI/IES RP-8, CJJ 45, and IES-IDA MLO. But the standout feature is its ability to render urban environments using Bevy, a Rust-based 3D engine, where photometric data directly drives streetlight behavior and skyglow contributions are simulated in real time.
How the Simulator Works
Photometric Data Parsing
The engine behind the scenes is a Rust core composed of about 20 crates under the eulumdat-rs family. These crates handle the complex task of reading and interpreting various photometric file formats. The data extracted—luminous intensity distribution, luminous flux, luminaire geometry—is then used as the backbone for all subsequent calculations and visualizations.
The Skyglow Analysis Demo
A dedicated demo showcases the system’s capabilities. It loads a real LDT file into a Bevy scene (based on the Khronos Bistro test asset). The luminaire’s intensity distribution directly drives the rendering of the streetlight—no approximation, no fudging. As the user adjusts the uplight percentage, the skyglow grade updates live, transitioning from F (Severe) to A (Excellent) when switching to a full-cutoff fixture. The visual impact is evident not only in the sky but also on the building surfaces, illustrating how light trespass and skyglow change with fixture design.
All calculations run client-side—no backend server is required. The entire simulation, including atmospheric scattering, runs in the browser via WebAssembly (WASM).
Technology Stack and Open-Source Availability
iesna.eu is built on a modern, efficient stack:
- Rust – for the photometric data crates (e.g.,
eulumdaton crates.io) and core logic. - Bevy – a Rust game engine used for 3D rendering and interactivity.
- WebAssembly – to compile the Rust code to run in the browser without a server.
About a thousand lines of new code were written to integrate Bevy with the existing photometric library. The entire project is open source on GitHub, with the crates published on crates.io under the name eulumdat.
Feedback and Open Questions
The developer invites community feedback on several aspects of the simulator. Below are the key points where input would be especially valuable.
Atmospheric Scattering Model: Single vs. Multi-Scattering
Currently, the skyglow simulation uses a single-scattering Rayleigh+Mie model. The question is whether this is adequate for the intended use case (evaluating light pollution from street lighting) or if a multi-scattering approach would yield significantly better accuracy. Multi-scattering is computationally heavier, but for urban scenes with strong artificial light sources, the error from ignoring secondary scattering may be noticeable.
Need for Standardized Urban Geometry Assets
The demo uses the Khronos Bistro test scene, which looks good visually but is not a controlled or realistic environment for road lighting evaluation. The developer is seeking recommendations for public urban geometry assets that are more typical of street scenes—for example, assets with roads, sidewalks, buildings, and vegetation that match real-world lighting evaluation conditions.
CJJ 45 Standard Implementation
The CJJ 45 (China's national road lighting standard) implementation was reverse-engineered from translated PDFs. The developer would appreciate a sanity check from anyone with primary-source experience with the standard to ensure the calculations are correct.
Conclusion and Next Steps
iesna.eu represents a significant step forward in accessible, browser-based light pollution analysis. By combining real photometric data with interactive 3D visualization, it empowers designers and planners to see the impact of their lighting choices before installation. The open-source nature invites collaboration and improvement. You can find the code on GitHub and the crates on crates.io under eulumdat.
Whether you are a lighting engineer, a researcher in urban ecology, or simply curious about light pollution, this tool offers a unique way to explore and quantify skyglow. The developer welcomes your feedback on the atmospheric model, urban geometry assets, and standard implementations.