Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
POV-Ray
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Text-based ray-tracing program}} {{Infobox software | name = POV-Ray | logo = Povray logo sphere.png | logo size = 140px | screenshot = | author = David Kirk Buck, Aaron A. Collins, Alexander Enzmann | developer = The POV-Team | released = {{Nowrap|{{Start date and age|1991|7|29}}<ref name="History">{{Cite web |url=http://www.povray.org/documentation/view/3.6.1/10/ |title=POV-Ray: Documentation: 1.1.5.3 A Historic 'Version History' |website=povray.org |access-date=2018-12-19}}</ref><ref name="POV-Ray 25">{{Cite web |url=http://www.povray.org/news/index.php#323 |title=POV-Ray: News |website=povray.org |access-date=2018-12-19}}</ref>}} | latest release version = {{wikidata|property|edit|reference|P348}} | latest release date = {{wikidata|qualifier|P348|P577}} | latest_preview_version = <!-- Used by Template:Latest preview software release/POV-Ray --> | programming language = [[C++]] | operating_system = [[Cross-platform]] | genre = [[Ray tracing (graphics)|Ray tracer]] | license = [[GNU Affero General Public License|AGPL-3.0-or-later]]<ref>{{cite web|url=http://www.povray.org/povlegal.html |title=POV-Ray License |publisher=povray.org |access-date=2014-05-05}}</ref> | website = {{url|https://www.povray.org/|povray.org}} }} The '''Persistence of Vision Ray Tracer''', most commonly acronymed as '''POV-Ray''', is a [[Cross-platform software|cross-platform]] [[ray tracing (graphics)|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<ref>{{cite web|url=http://paulbourke.net/dataformats/polyray/ |title=Polyray v1.7 |publisher=Alexander R. Enzmann |access-date=2016-07-05}}</ref> raytracer because of contributions from its author, Alexander Enzmann. POV-Ray is [[free and open-source software]], with the [[source code]] available under the [[GNU Affero General Public License|AGPL-3.0-or-later]] license. ==History== [[File:Vase on a pedestal, rendered with DKBTrace 2.12.png|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 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" [[Online forum|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),<ref name="POV-Ray 25"/> a name inspired by [[Salvador Dalí|Dalí]]'s painting, ''[[The Persistence of Memory]]''.<ref>{{cite web|url=http://www.povray.org/documentation/view/3.6.0/7/ |title=Documentation: 1.1.5 The Early History of |publisher=POV-Ray |access-date=2014-05-05}}</ref><ref name="flossweekly2008"/> 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]].<ref name="flossweekly2008">{{cite web|url=http://twit.tv/floss24 |title=The TWiT Netcast Network with Leo Laporte |publisher=Twit.tv |access-date=2014-05-05 |date=2008-02-07}}</ref> ==Features== [[Image:Glasses 800 edit.png|thumb|Glass scene rendered by POV-Ray demonstrating [[Radiosity (computer graphics)|radiosity]], [[photon mapping]], [[focal blur]], and other photorealistic capabilities (image created by [[Gilles Tran]])]] POV-Ray has matured substantially since it was created. Recent versions of the software include the following features: * a [[Turing-completeness|Turing-complete]] scene description language (SDL) that supports macros and loops<ref>[http://paulbourke.net/geometry/supershape/ Paul Bourke: Supershape in 3D] are examples of POV-Ray images made with very short code</ref> * a library of ready-made scenes, textures, and objects * support for a number of [[geometric primitive]]s and [[constructive solid geometry]] * several kinds of [[light source]]s * atmospheric effects such as [[fog]] and ''media'' ([[smoke]], [[clouds]]) * [[Reflection (physics)|reflection]]s, [[refraction]]s, and light [[caustic (optics)|caustics]] using [[photon mapping]] * surface patterns such as [[wrinkle]]s, bumps, and [[Capillary wave|ripples]], for use in [[procedural texture]]s and [[bump mapping]] * [[Radiosity (computer graphics)|radiosity]] * support for [[Texture (computer graphics)|textures]] and rendered output in many image formats, including [[Truevision Targa file format|TGA]], [[Portable Network Graphics|PNG]], and [[JPEG]], among others * extensive [[user documentation]] * support for custom output resolutions<ref>{{Cite web |title=POV-Ray: Documentation: 2.1.2.2 General Output Options |url=https://www.povray.org/documentation/view/3.6.0/217/ |access-date=2023-09-08 |website=www.povray.org}}</ref> (This includes extreme resolutions such as [[16K resolution|16K]]) * two types of [[Supersampling|SSAA]]<ref name=":0">{{Cite web |title=POV-Ray: Documentation: 2.1.2.8 Tracing Options |url=http://www.povray.org/documentation/view/3.6.2/223/ |access-date=2023-09-08 |website=www.povray.org}}</ref> 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.<ref name=":0" /> 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 (graphics)|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]] (SMP), to allow the renderer to take advantage of [[Multiprocessing|multiple processors]] * support for [[high-dynamic-range imaging]] (HDRI), including the [[OpenEXR]] and [[Radiance (software)|radiance]] file formats * improved [[Bounding volume|bounding]] using [[Binary space partitioning|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 computing|64-bit]] [[computer compatibility|compatibility]] In July 2006, [[Intel Corporation]] started using the [[beta version]] of 3.7 to demonstrate their new [[dual-core]] [[Conroe (microprocessor)|Conroe processor]] due to the efficiency of the SMP (symmetric multiprocessing) implementation. ===Primitives=== [[File:Venn 0000 0001 0001 0110.png|thumb|Rendering of the [[Venn diagram]] of four spheres created with [[constructive solid geometry]], or CSG. The source is [[commons:File:Venn 0000 0001 0001 0110.png#POV-Ray source|on the description page]] of the image.]] [[Image:PNG transparency demonstration 1.png|thumb|Some colored [[dice]] rendered in POV-Ray. [[Constructive solid geometry|CSG]], [[refraction]] and [[focal blur]] are demonstrated.]] POV-Ray, in addition to standard [[3d geometry|3D geometric]] shapes like [[torus|tori]], [[sphere]]s, and [[heightfield]]s, supports mathematically defined ''[[Primitives (computer graphics)|primitives]]'' such as the [[isosurface]] (a finite approximation of an arbitrary function), the [[polynomial]] primitive (an [[Infinity|infinite]] object defined by a [[Degree of a polynomial|15th order or lower polynomial]]), the [[julia set|julia fractal]] (a 3-dimensional slice of a [[Four-dimensional space|4-dimensional]] fractal), the [[superellipse|superquadratic ellipsoid]] (an intermediate between a sphere and a cube), and the [[parametric feature based modeler|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]] [[polygon mesh|mesh]]es 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 [[UV sphere|quads]] or [[Icosphere|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 (software)|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. [[Image:I example povray scene rendering.png|thumb|right|POV-Ray image output based on the script]] <syntaxhighlight lang="pov"> #version 3.6; // Includes a separate file defining a number of common colours #include "colors.inc" global_settings { assumed_gamma 1.0 } // Sets a background colour for the image (dark grey) background { color rgb <0.25, 0.25, 0.25> } // 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 { location <0.0, 0.5, -4.0> direction 1.5*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> } // Places a light source // color: Sets the color of the light source (white) // translate: Moves the light source to a desired location light_source { <0, 0, 0> color rgb <1, 1, 1> translate <-5, 5, -5> } // 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 { <0, 0, 0> color rgb <0.25, 0.25, 0.25> translate <6, -6, -6> } // 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 { <-0.5, -0.5, -0.5>, <0.5, 0.5, 0.5> texture { pigment { color Red } finish { specular 0.6 } normal { agate 0.25 scale 1/2 } } rotate <45,46,47> } </syntaxhighlight> The following script fragment shows the use of variable declaration, assignment, comparison and the while loop construct: [[Image:I example povray scene rendering2.png|thumb|right|POV-Ray image output based on the script]] <syntaxhighlight lang="pov"> #declare the_angle = 0; #while (the_angle < 360) box { <-0.5, -0.5, -0.5> <0.5, 0.5, 0.5> texture { pigment { color Red } finish { specular 0.6 } normal { agate 0.25 scale 1/2 } } rotate the_angle } #declare the_angle = the_angle + 45; #end </syntaxhighlight> ==Modeling== The POV-Ray program itself does not include a [[3D modeling|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 (software)|Blender]].<ref>[https://en.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray Blender]</ref> A number of additional POV-Ray compatible modelers are linked from [http://www.povray.org/resources/links/3D_Programs/Modelling_Programs/ Povray.org: Modelling Programs]. In 2007, POV-Ray acquired the rights to [http://www.stmuc.com/moray/medown.html Moray] {{Webarchive|url=https://web.archive.org/web/20200428230409/http://www.stmuc.com/moray/medown.html |date=2020-04-28 }},<ref>{{cite web|url=http://www.povray.org/news/moray-announcement.php |title=News: Moray Announcement |publisher=POV-Ray |date=2007-02-01 |access-date=2014-05-05}}</ref> an interactive 3-D modeling program long used with POV-Ray. However, as of December 2016, Moray development is stalled.<ref>{{cite web|url=https://github.com/POV-Ray/povray#3d-modeller |title=POV-Ray/povray: The persistence of Vision Raytracer|publisher=POV-Ray |date=2013-09-06 |access-date=2022-08-05}}</ref> ==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] [[Usenet|news]] server (with a [[Web interface]] [http://news.povray.org/groups/ also available]). Since POV-Ray's source is available there are unofficial [[Fork (software)|fork]]s 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.<ref>for such an implementation, see e.g., http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2 {{Webarchive|url=https://web.archive.org/web/20070207122812/http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2 |date=2007-02-07 }}</ref> Some features, like [[Radiosity (computer graphics)|radiosity]] and [[spline (mathematics)|spline]]s are still in development and may be subject to syntactical change. ===Platform support=== POV-Ray 3.6 is distributed in compiled format for [[Mac (computer)|Mac]], [[Microsoft Windows|Windows]] and [[Linux]]. Support for [[Apple–Intel architecture|Intel Mac]]s is not available in the [[Mac (computer)|Mac]] version, but since [[Mac OS X]] is a version of [[Unix]] the Linux version can be [[Compiler|compiled]] on it. The 3.7 versions with [[Symmetric multiprocessing|SMP]] support are officially supported for Windows and Linux. Unofficial [[Mac (computer)|Mac]] versions for v3.7 can be found.<ref>[http://megapov.inetart.net/povrayunofficial_mac/index.html povrayunofficial_mac] on megapov.inetart.net</ref> POV-Ray can be [[Source port|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<ref>{{cite web|url=http://www.povray.org/distribution-license-3.6.html |title=POV-Ray 3.6 Distribution License |publisher=povray.org |access-date=2016-12-12}}</ref> and the POV-Ray 3.6 Source License,<ref>{{cite web|url=http://www.povray.org/source-license-3.6.html |title=POV-Ray 3.6 Source License |publisher=povray.org |access-date=2016-12-12}}</ref> 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 software|open source]] or [[free software]] according to the [[Open Source Initiative|OSI]] or the [[Free Software Foundation|FSF]] definition of the term. This was a problem as [[source code]] exchange with the greater [[Free and open-source software|FOSS]] ecosystem was impossible due to [[license incompatibility]] with [[copyleft license]]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 [[GNU Affero General Public License]] version 3 (or later).<ref>{{cite web | url=http://www.povray.org/download/ | title=Download POV-Ray 3.7.0 | last=Cason |first=Chris | date=8 November 2013 | quote=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). | access-date=11 November 2013}}</ref> Thus POV-Ray is since then [[free software]] according to the [[Free Software Foundation|FSF]] definition and also [[open source software]] according to the [[Open Source Definition]]. ==See also== {{Portal|Amiga|Free and open-source software}} {{commons|POV-Ray}} * [[Blender (software)|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 ==References== {{Reflist|30em}} ==External links== {{commons category|POV-Ray}} * {{Official website|www.povray.org}} {{3D software}} {{DEFAULTSORT:Pov-Ray}} [[Category:3D graphics software]] [[Category:Amiga raytracers]] [[Category:Articles with example code]] [[Category:Cross-platform software]] [[Category:Domain-specific programming languages]] [[Category:Free 3D graphics software]] [[Category:Free graphics software]] [[Category:Free software programmed in C++]] [[Category:Global illumination software]] [[Category:Rendering systems]] [[Category:Software using the GNU Affero General Public License]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:3D software
(
edit
)
Template:Cite web
(
edit
)
Template:Commons
(
edit
)
Template:Commons category
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Template other
(
edit
)
Template:Webarchive
(
edit
)