Skip to content
This repository
branch: master
Snogray renderer

   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).

   For more information, see the documentation located in the "doc/"
   subdirectory of the source directory:

   * For information on how to build snogray, see the file "doc/building.txt"

   * For information on how to run snogray, see the file "doc/usage.txt"

   * For discussion of some snogray usage issues, see the file "doc/issues.txt"

   * For information on other tools included with snogray, see the file

Snogray development goals:

   Snogray's goals include:

   1. 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, efficient, and very
      friendly (for both beginners and experts).

   2. A wide variety of input and output formats, so the user can use
      input files directly without converting them.  In addition to
      scenes defined in Lua, one may 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).

   3. 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

      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.

   Further information on topics marked with an asterisk (*) above:


Current status

   Snogray currently works reasonably well, but is still a bit rough.


   Most of snogray was written by Miles Bader.

   There are a few files written by other people included with the
   distribution (in general, these are not modified from their original

     * Diego Nehab:
          RPly: load/mesh/rply.c and load/mesh/rply.h

     * Roberto Ierusalimschy:
	  LPeg: All C source and HTML files in the "liblpeg/" subdirectory.

     * Lua (if Lua is included in the distribution):  see


   Most of source files in snogray are licensed under the GNU GPL
   license, version 3 or greater; see the COPYING file for details.

   Some files from external sources have different licenses:

    * RPly source files use the "MIT" license

    * LPeg source files use a "BSD-like" license

    * If the Lua sources are included with this distribution, they use a
      "BSD-like" license

   All licenses are compatible with the GNU GPL v3 (and because most of
   the non-GPL licenses are more liberal than the GNU GPL, snogray as a
   whole may be considered to use the GNU GPL v3).

   NOTE ON COPYRIGHT YEARS:  In copyright notices where the copyright
   holder is "Miles Bader", then where a range of years appears, this
   is an inclusive range that applies to every year in the range.  For
   example: 2005-2008 represents the years 2005, 2006, 2007, and 2008.

Download / Sources


   Savannah project page:

   Browse source code:

   Clone source with Git:
Something went wrong with that request. Please try again.