A real physical light source can never have zero size as the source here (aside from discretization issues) does. As a result, you can't get an arbitrarily narrow beam from it. There's a quantity called "etendue" that measures a sort of combination of spatial and angular spread-out-ness, and no combination of optical elements can decrease it except by absorbing some of the light.
I think this can work:
On one side place a parabolic reflector to direct the light in one direction.
On the other side place a circular reflector to direct the light back to the source. And place a tiny hole in this half circle to let the light out.
Quick drawing: http://zenphoton.com/#AAQAAkACAAEgWwAzALEBEwC0AO4A/wAAtADxAL...
I had obviously expected that, but the large number of reflective surfaces [1] greatly reduces the performance. The author explained in the blog post [2] that it is a path tracing (Monte Carlo simulation of multiple random rays incrementally averaged) and probably it is hard to limit the number of bounces small while maintaining the image quality. Indeed, the source code [3] says a hard limit of 1000 bounces, not big but not that small either.
[1] Something like http://is.gd/cFDlq5
[2] http://scanlime.org/2013/04/zen-photon-garden/
[3] https://github.com/scanlime/zenphoton/blob/bea23c1/hqz/src/z...
My one issue - the diffuse/reflective/transmissive sliders don't seem to cause the image to update?
I like the shareable URLs, but I don't like how it breaks the back button.
Use `location.replace` to avoid this.
Zen Photon Garden is always a nice thing to play around with.
I even wrote a patch that made the rays deterministic when you draw extra walls. It reduced the flickering, but I learned that this was part of the aesthetics, so it was less fun to play with.