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
Amiga is a family of personal computers introduced by Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and significantly improved graphi ...
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
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
, with the
source code available under the
AGPL-3.0-or-later license.
History
Sometime in the 1980s, David Kirk Buck downloaded the
source code for a
Unix ray tracer to his
Amiga
Amiga is a family of personal computers introduced by Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and significantly improved graphi ...
. 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
A bulletin board system (BBS), also called computer bulletin board service (CBBS), is a computer server running software that allows users to connect to the system using a terminal program. Once logged in, the user can perform functions such as ...
(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.
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
Forum or The Forum (plural forums or fora) may refer to:
Common uses
* Forum (legal), designated space for public expression in the United States
*Forum (Roman), open public space within a Roman city
**Roman Forum, most famous example
*Internet ...
on
CompuServe
CompuServe (CompuServe Information Service, also known by its initialism CIS) was an American online service provider, the first major commercial one in the world – described in 1994 as "the oldest of the Big Three information services (the oth ...
. 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),
a name inspired by
Dalí's painting, ''
The Persistence of Memory''.
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.
Features
POV-Ray has matured substantially since it was created. 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
Constructive solid geometry (CSG; formerly called computational binary solid geometry) is a technique used in solid modeling. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combi ...
* several kinds of
light sources
* atmospheric effects such as
fog
Fog is a visible aerosol consisting of tiny water droplets or ice crystals suspended in the air at or near the Earth's surface. Reprint from Fog can be considered a type of low-lying cloud usually resembling stratus, and is heavily influ ...
and ''media'' (
smoke,
clouds
In meteorology, a cloud is an aerosol consisting of a visible mass of miniature liquid droplets, frozen crystals, or other particles suspended in the atmosphere of a planetary body or similar space. Water or various other chemicals may com ...
)
*
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
JPEG ( ) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and imag ...
, among others
* extensive
user documentation
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.
Current version
The current official version of POV-Ray is 3.7. This version introduces:
* support for
symmetric multiprocessing
Symmetric multiprocessing or shared-memory multiprocessing (SMP) involves a multiprocessor computer hardware and software architecture where two or more identical processors are connected to a single, shared main memory, have full access to all ...
(SMP), to allow the renderer to take advantage of
multiple processors
* support for
high-dynamic-range imaging (HDRI), including the
OpenEXR
OpenEXR is a high-dynamic range, multi-channel raster file format, released as an open standard along with a set of software tools created by Industrial Light & Magic (ILM), under a free software license similar to the BSD license.
It is notabl ...
and
radiance file formats
* improved
bounding using
BSP trees
Some of the main introduced features of the previous release (3.6) are:
* extending
UV mapping to more primitives
* adding 16- and 32-bit integer data to a density file
* improving
64-bit compatibility
Compatibility may refer to:
Computing
* Backward compatibility, in which newer devices can understand data generated by older devices
* Compatibility card, an expansion card for hardware emulation of another device
* Compatibility layer, compon ...
In July 2006,
Intel Corporation
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 series ...
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.
Primitives
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
The quadriceps femoris muscle (, also called the quadriceps extensor, quadriceps or quads) is a large muscle group that includes the four prevailing muscles on the front of the thigh. It is the sole extensor muscle of the knee, forming a large ...
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 and should 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.
Examples of the scene description language
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.
#version 3.6;
// Includes a separate file defining a number of common colours
#include "colors.inc"
global_settings
// Sets a background colour for the image (dark grey)
background
// Places a camera
// direction: Sets, among other things, the field of view of the camera
// right: Sets the aspect ratio of the image
// look_at: Tells the camera where to look
camera
// Places a light source
// color: Sets the color of the light source (white)
// translate: Moves the light source to a desired location
light_source
// Places another light source
// color: Sets the color of the light source (dark grey)
// translate: Moves the light source to a desired location
light_source
// Sets a box
// pigment: Sets a color for the box ("Red" as defined in "colors.inc")
// finish: Sets how the surface of the box reflects light
// normal: Sets a bumpiness for the box using the "agate" in-built model
// rotate: Rotates the box
box
The following script fragment shows the use of variable declaration, assignment, comparison and the while loop construct:
#declare the_angle = 0;
#while (the_angle < 360)
box
#declare the_angle = the_angle + 45;
#end
Modeling
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 suit
Blender
A number of additional POV-Ray compatible modelers are linked fro
Povray.org: Modelling Programs
In 2007, POV-Ray acquired the rights t
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
ntp://news.povray.org/ news.povray.orgnews
News is information about current events. This may be provided through many different Media (communication), media: word of mouth, printing, Mail, postal systems, broadcasting, Telecommunications, electronic communication, or through the tes ...
server (with a
Web interfacebr>
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
Macintosh,
Windows and
Linux.
Support for
Intel Mac
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 series ...
s is not available in the
Macintosh version, but since
Mac OS X is a version of
Unix the Linux version can be
compiled
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
on it.
The 3.7 versions with
SMP
SMP may refer to:
Organisations
* Scale Model Products, 1950s, acquired by Aluminum Model Toys
* School Mathematics Project, UK developer of mathematics textbooks
* '' Sekolah Menengah Pertama'', "junior high school" in Indonesia
* Shanghai Mun ...
support are officially supported for Windows and Linux. Unofficial
Macintosh 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
A license (or licence) is an official permission or permit to do, use, or own something (as well as the document of that permission or permit).
A license is granted by a party (licensor) to another party (licensee) as an element of an agreeme ...
''. 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, but restricts 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
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
or
free software according to the
OSI
OSI may refer to:
Places
* Osijek Airport (IATA code: OSI), an airport in Croatia
* Ősi, a village in Veszprém county, Hungary
* Oši, an archaeological site in Semigallia, Latvia
* Osi, a village in Ido-Osi, Ekiti State, Nigeria
* Osi, Ekiti ...
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
License compatibility is a legal framework that allows for pieces of software with different software licenses to be distributed together. The need for such a framework arises because the different licenses can contain contradictory requirement ...
with
copyleft license
Copyleft is the legal technique of granting certain freedoms over copies of copyrighted works with the requirement that the same rights be preserved in derivative works. In this sense, ''freedoms'' refers to the use of the work for any purpose, ...
s.
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
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
SketchUp is a suite of subscription products that include SketchUp Pro Desktop, a 3D modeling Computer-Aided Design (CAD) program for a broad range of drawing and design applications — including architectural, interior design, industrial an ...
compatibility
*
Sunflow
Sunflow is an open-source global illumination rendering system written in Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to ...
– an open-source rendering system for photo-realistic image synthesis, written in Java
*
YafaRay – a popular free open-source ray-tracing engine
References
External links
*
*
{{DEFAULTSORT:Pov-Ray
3D graphics software
Amiga raytracers
Articles with example code
Cross-platform software
Domain-specific programming languages
Free 3D graphics software
Free graphics software
Free software programmed in C++
Global illumination software
Rendering systems
Software using the GNU AGPL license