Snogray is a program for rendering 3d scenes, using monte-carlo ray-tracing. It is "physically based", meaning that it tries to calculate light transport in a physically plausible way when that is practical. For instance, all light-falloff is inherently 1 / r2 (unlike some older ray-tracers) and reflection/refraction are calculated using Fresnel's formulas).
Snogray's goals include:
A "rich" scene description language which is easy and practical for humans (and especially programmers) to write, in the style of POVray. This is in contrast to many other modern renderers that use human-unfriendly scene description formats, and essentially require scenes to be created using a separate GUI modelling program.
To do this, snogray uses the Lua language as its main scene description language. Lua is elegant and very friendly (for both beginners and experts).
A wide variety of input and output formats, so the user can use input files directly (without conversion to some "native" format). In addition to describing scenes using Lua, one may also directly load PBRT, 3DS and NFF scene files, PLY and other mesh formats, and many image formats (including HDR formats such as OpenEXR and RGBE/.hdr/.pic).
Modern rendering features. Currently snogray supports such features as object instancing, area-lights, global-illumination, image-based lighting, depth-of-field, and both image-based and procedural texturing (including bump-mapping and opacity-mapping). Currently the only supported mechanisms for global illumination are path-tracing and photon-mapping (however the photon-mapping implementation is still not very robust or easy to use). It is planned to add many other features, most importantly better global illumination methods such as improved photon-mapping, instant-radiosity, and metropolis light-transport.
Snogray currently works reasonably well, but is still a bit rough. The current version is 0.5.3.
The snogray source code and development history is available on Github or savannah.nongnu.org.