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 short but good 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),2 a name inspired by Dalí's painting, The Persistence of Memory.34
Features of the application, and a summary of its history, are discussed in a February 2008 interview with David Kirk Buck and Chris Cason on episode 24 of FLOSS Weekly.5
POV-Ray has matured substantially since it was created. Recent versions of the software include the following features:
One of POV-Ray's main attractions is its large collection of third-party-made assets and tools. A large number of tools, textures, models, scenes, and tutorials can be found on the web. It is also a useful reference for those wanting to learn how ray tracing and related 3D geometry and computer graphics algorithms work.
The current official version of POV-Ray is 3.7. This version introduces:
Some of the main introduced features of the previous release (3.6) are:
In July 2006, Intel Corporation started using the beta version of 3.7 to demonstrate their new dual-core Conroe processor due to the efficiency of the SMP (symmetric multiprocessing) implementation.
POV-Ray, in addition to standard 3D geometric shapes like tori, spheres, and heightfields, supports mathematically defined primitives such as the isosurface (a finite approximation of an arbitrary function), the polynomial primitive (an infinite object defined by a 15th order or lower polynomial), the julia fractal (a 3-dimensional slice of a 4-dimensional fractal), the superquadratic ellipsoid (an intermediate between a sphere and a cube), and the parametric primitive (using equations that represent its surface, rather than its interior).
POV-Ray internally represents objects using their mathematical definitions; all POV-Ray primitive objects can be described by mathematical functions. This is different from many computer programs that include 3D models, which typically use triangle meshes to compose all the objects in a scene.
This fact provides POV-Ray with several advantages and disadvantages over other rendering and modeling systems; POV-Ray primitives are more accurate than their polygonal counterparts: objects that can be described in terms of spheres, planar surfaces, cylinders, tori, and the like, are perfectly smooth and mathematically accurate in POV-Ray renderings, whereas polygonal artifacts may be visible in mesh-based modeling software. POV-Ray primitives are also simpler to define than most of their polygonal counterparts, e.g., in POV-Ray, a sphere is described simply by its center and radius; in a mesh-based environment, a sphere must be described by a multitude of small connected polygons (usually quads or triangles).
On the other hand, script-based primitive modeling is not always a practical method to create certain objects, such as realistic characters or complex man-made artifacts like cars. Those objects can be created first in mesh-based modeling applications such as Wings 3D and Blender, and then they can be converted to POV-Ray's own mesh format.
The following is an example of the scene description language used by POV-Ray to describe a scene to render. It demonstrates the use of a background colour, camera, lights, a simple box shape having a surface normal and finish, and the transforming effects of rotation.
The following script fragment shows the use of variable declaration, assignment, comparison and the while loop construct:
The POV-Ray program itself does not include a modeling feature; it is essentially a pure renderer with a sophisticated model description language. To accompany this feature set, third parties have developed a large variety of modeling software, some specialized for POV-Ray, others supporting import and export of its data structures, including the free and open-source 3D creation suite Blender.10
A number of additional POV-Ray compatible modelers are linked from Povray.org: Modelling Programs.
In 2007, POV-Ray acquired the rights to Moray Archived 2020-04-28 at the Wayback Machine,11 an interactive 3-D modeling program long used with POV-Ray. However, as of December 2016, Moray development is stalled.12
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 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.13 Some features, like radiosity and splines are still in development and may be subject to syntactical change.
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.14
POV-Ray can be ported to any platform which has a compatible C++ compiler.
Originally, POV-Ray was distributed under its own POV-Ray License; namely, the POV-Ray 3.6 Distribution License15 and the POV-Ray 3.6 Source License,16 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).17 Thus POV-Ray is since then free software according to the FSF definition and also open source software according to the Open Source Definition.
"Polyray v1.7". Alexander R. Enzmann. Retrieved 2016-07-05. http://paulbourke.net/dataformats/polyray/ ↩
"POV-Ray: News". povray.org. Retrieved 2018-12-19. http://www.povray.org/news/index.php#323 ↩
"Documentation: 1.1.5 The Early History of". POV-Ray. Retrieved 2014-05-05. http://www.povray.org/documentation/view/3.6.0/7/ ↩
"The TWiT Netcast Network with Leo Laporte". Twit.tv. 2008-02-07. Retrieved 2014-05-05. http://twit.tv/floss24 ↩
Paul Bourke: Supershape in 3D are examples of POV-Ray images made with very short code http://paulbourke.net/geometry/supershape/ ↩
"POV-Ray: Documentation: 2.1.2.2 General Output Options". www.povray.org. Retrieved 2023-09-08. https://www.povray.org/documentation/view/3.6.0/217/ ↩
"POV-Ray: Documentation: 2.1.2.8 Tracing Options". www.povray.org. Retrieved 2023-09-08. http://www.povray.org/documentation/view/3.6.2/223/ ↩
Blender https://en.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray ↩
"News: Moray Announcement". POV-Ray. 2007-02-01. Retrieved 2014-05-05. http://www.povray.org/news/moray-announcement.php ↩
"POV-Ray/povray: The persistence of Vision Raytracer". POV-Ray. 2013-09-06. Retrieved 2022-08-05. https://github.com/POV-Ray/povray#3d-modeller ↩
for such an implementation, see e.g., http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2 Archived 2007-02-07 at the Wayback Machine http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2 ↩
povrayunofficial_mac on megapov.inetart.net http://megapov.inetart.net/povrayunofficial_mac/index.html ↩
"POV-Ray 3.6 Distribution License". povray.org. Retrieved 2016-12-12. http://www.povray.org/distribution-license-3.6.html ↩
"POV-Ray 3.6 Source License". povray.org. Retrieved 2016-12-12. http://www.povray.org/source-license-3.6.html ↩
Cason, Chris (8 November 2013). "Download POV-Ray 3.7.0". Retrieved 11 November 2013. Starting with version 3.7, POV-Ray is released under the AGPL3 (or later) license and thus is Free Software according to the FSF definition. [...] Full source code is available, allowing users to build their own versions and for developers to incorporate portions or all of the POV-Ray source into their own software provided it is distributed under a compatible license (for example, the AGPL3 or – at their option – any later version). http://www.povray.org/download/ ↩