The Persistence of Vision Ray Tracer, most commonly acronymed as POV-Ray, is a cross-platform ray-tracing program that generates images from a text-based scene description. It was originally based on DKBTrace, written by David Kirk Buck and Aaron A. Collins for Amiga computers. There are also influences from the earlier Polyray raytracer because of contributions from its author, Alexander Enzmann. POV-Ray is free and open-source software, with the source code available under the AGPL-3.0-or-later license.
History
thumb|A vase on a pedestal rendered with DKBTrace 2.12
Sometime in the 1980s, David Kirk Buck downloaded the source code for a Unix ray tracer to his Amiga. He experimented with it for a while and eventually decided to write his own ray tracer named DKBTrace after his initials. He posted it to the "You Can Call Me Ray" bulletin board system (BBS) in Chicago, thinking others might be interested in it. In 1987, Aaron A. Collins downloaded DKBTrace and began working on an x86 port of it. He and David Buck collaborated to add several more features. POV also had/has similarities with (and borrows from) Rayshade, another BBS era raytracer, including the Rayshade book.
When the program proved to be more popular than anticipated, they could not keep up with demand for more features. Thus, in July 1991, David turned over the project to a team of programmers working in the "GraphDev" forum on CompuServe. At the same time, David felt that it was inappropriate to use his initials on a program he no longer maintained. The name "STAR-Light" (Software Taskforce on Animation and Rendering) was initially used, but eventually the name became "PV-Ray", and then ultimately "POV-Ray" (Persistence of Vision Ray Tracer),
Features
thumb|Glass scene rendered by POV-Ray in 2006 demonstrating [[Radiosity (computer graphics)|radiosity, photon mapping, focal blur, and other photorealistic capabilities (image created by Gilles Tran)]]
POV-Ray has matured substantially since its creation. Recent versions of the software include the following features:
- a Turing-complete scene description language (SDL) that supports macros and loops
- a library of ready-made scenes, textures, and objects
- support for a number of geometric primitives and constructive solid geometry
- several kinds of light sources
- atmospheric effects such as fog and media (smoke, clouds)
- reflections, refractions, and light caustics using photon mapping
- surface patterns such as wrinkles, bumps, and ripples, for use in procedural textures and bump mapping
- radiosity
- support for textures and rendered output in many image formats, including TGA, PNG, and JPEG, among others
- extensive user documentation
- support for custom output resolutions (This includes extreme resolutions such as 16K)
- two types of SSAA: Type 1 is an adaptive, non-recursive, super-sampling method. It is adaptive because not every pixel is super-sampled. Type 2 is an adaptive and recursive super-sampling method. It is recursive because the pixel is sub-divided and sub-sub-divided recursively. The adaptive nature of type 2 is the variable depth of recursion.
A number of additional POV-Ray compatible modelers are linked from Povray.org: Modelling Programs.
In 2007, POV-Ray acquired the rights to Moray, an interactive 3-D modeling program long used with POV-Ray. However, as of December 2016, Moray development is stalled.
Software
Development and maintenance
Official modifications to the POV-Ray source tree are done and/or approved by the POV-Team. Most patch submission and/or bug reporting is done in the POV-Ray newsgroups on the [nntp://news.povray.org/ news.povray.org] news server (with a Web interface also available). Since POV-Ray's source is available there are unofficial forks and patched versions of POV-Ray available from third parties; however, these are not officially supported by the POV-Team.
Official POV-Ray versions currently do not support shader plug-ins. Some features, like radiosity and splines are still in development and may be subject to syntactical change.
Platform support
POV-Ray 3.6 is distributed in compiled format for Mac, Windows and Linux.
Support for Intel Macs is not available in the Mac version, but since Mac OS X is a version of Unix the Linux version can be compiled on it.
The 3.7 versions with SMP support are officially supported for Windows and Linux. Unofficial Mac versions for v3.7 can be found.
POV-Ray can be ported to any platform which has a compatible C++ compiler.
Licensing
Originally, POV-Ray was distributed under its own POV-Ray License; namely, the POV-Ray 3.6 Distribution License and the POV-Ray 3.6 Source License, which permitted free distribution of the program source code and binaries, while restricting commercial distribution and the creation of derivative works other than fully functional versions of POV-Ray.
Although the source code of older versions is available for modification, due to the above 3.6 and prior license restrictions, it was not open source or free software according to the OSI or the FSF definition of the term. This was a problem as source code exchange with the greater FOSS ecosystem was impossible due to license incompatibility with copyleft licenses.
One of the reasons that POV-Ray was not originally licensed under the free software GNU General Public License (GPL), or other open source licenses, is that POV-Ray was developed before the GPL-style licenses became widely used; the developers wrote their own license for the release of POV-Ray, and contributors to the software worked under the assumption their contributions would be licensed under the POV-Ray 3.6 Licenses.
In 2013, with version 3.7, POV-Ray was relicensed under the GNU Affero General Public License version 3 (or later). Thus POV-Ray is since then free software according to the FSF definition and also open source software according to the Open Source Definition.
See also
- Blender – a free and open-source software program for 3D modeling, animation, and rendering
- Kerkythea – a freeware ray-tracing program with enhanced Sketchup compatibility
- Sunflow – an open-source rendering system for photo-realistic image synthesis, written in Java
