Show HN: Browser-based light pollution simulator using real photometric data
iesna.eu13 points by holg 2 hours ago
13 points by holg 2 hours ago
Hi HN — author here. iesna.eu is a browser-based ecosystem for working with photometric data: parsing standard luminaire files (LDT/EULUMDAT, IES LM-63, Oxytech, ATLA-S001), running design calculations against EN 13201 / ANSI/IES RP-8 / CJJ 45 / IES-IDA MLO, and (the part I most want to show off here) rendering real urban scenes in Bevy with the photometric data driving actual streetlight behavior, including sky-glow contribution. The Skyglow Analysis demo loads a real LDT file into a Bevy scene (Khronos Bistro test asset). The luminaire's intensity distribution drives the streetlight rendering directly — no fudging — and the sky-glow grade updates live as you adjust the uplight percentage. Swap to a full-cutoff fixture and the sky goes from F (Severe) back to A (Excellent). You can see the difference on the buildings as well as in the sky. Stack: Rust core (eulumdat-rs and friends, ~20 crates handling photometric formats), Bevy for the 3D rendering, WASM for browser deployment. No backend; everything runs client-side. About a thousand lines of new code on top of the existing photometric library to make the Bevy integration work. Things I'd love feedback on:
The atmospheric scattering model is currently single-scattering Rayleigh+Mie. Is that defensible for the use case, or should I move toward multi-scattering? The Bistro test scene works well visually but isn't a controlled environment. Anyone know of a public urban geometry asset that's more typical of real road-lighting evaluation? The CJJ 45 implementation (China's national road lighting standard) is the only one I've had to reverse-engineer from translated PDFs. If anyone has primary-source experience with it, I'd value a sanity check.
Open-source on GitHub (eulumdat-rs and the related crates).
Crates.io: eulumdat
I should have mentioned:
WebGPU is needed, on Safari there is a bug in the Bevy Overlay, so you only see flickering (very annoying!)
This is an upstream issue (on to it)
So FF and Chrome works fine (if WebGPU is enabled!) All I get is an empty, dark blue page after I hit Launch Demo. Perhaps that does look a bit like a night sky, but I don't think that's what you're going for :) Tested in Firefox/Brave/Chrome on Linux. Thanks for the information, i should have mentioned, webgpu is explicitly used here, and this might be the issue!
Bevy's usage of WebGL2 is not that mature, and i use Bindless rendering (from my own contribution)...
holg - 5 minutes ago
jeroenhd - 20 minutes ago
holg - 7 minutes ago