Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
C++ Lua C HTML Other
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
camera Cleanup includes in camera subdir
color Cleanup includes in color subdir
doc snoghilite.c: Add -u/--upper-portion-only option
geometry Implement Surface::transform method
image image-ppm.h: Clean up some more cruft defined by ppm.h
liblpeg Move libsnogloaders.a into a new subdirectory "loaders"
load stl.lua: Properly handle extra facet vertices
lua-util Require SWIG "disown" support
lua Move scene-cmdline.lua into top directory
material material.lua: Handle float-textures in is_color_val
old Move Surface rendering interface into Surface::Renderable
photon Move scene.{h,cc,lua,swg} code into render subdir
render-mgr Add missing include
render Fix russian-roulette probability in PathInteg::Li
space Cleanup Space interface a bit
surface Some whitespace and include cleanup in and mesh.h
texture Merge nested transform-textures
AUTHORS Update references to files imported from other packages
COPYING Update COPYING to GPLv3 Remove scene subdir
NEWS Disable use of "extern template" by default
all-in-one.lua Pass "foreign" option to AM_INIT_AUTOMAKE Use -pthread for configuration too Move documentation into a new subdirectory "doc"
limit-cmdline.lua Fix and cleanup limit_cmdline.bounds Record more information about build in snogray executable
scene-cmdline.lua Parse negative rotations for -B/--background-orientation Merge imagecli subdirectory into image Make sure C++ dtors get run before exiting snoghilite.c: Scale all color components equally Move libsnoglua.a into a new subdirectory "lua"
snogray.lua Correctly implement -s/--size option with a single value


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.