Persistence of Vision Ray-Tracer lub POV-Ray jest programem służącym do ray tracingu dla komputerów z systemami Windows, OS X lub GNU/Linux. Wykorzystywany jest głównie do tworzenia grafiki trójwymiarowej. Program udostępniany jest na zasadzie licencji freeware.
Cechą charakterystyczną programu jest wykorzystywanie zaawansowanego języka opisu sceny SDL (ang. Scene Description Language), który jest w zasadzie językiem programowania, zawierającym elementy takie jak m.in. zmienne, tablice, instrukcje warunkowe, pętle, funkcje. Geometrię obiektów definiuje się w nim w sposób parametryczny, dzięki czemu odwzorowanie ich kształtu jest bardzo dokładne, a także możliwe staje się uzyskanie obrazu powierzchni nieskończonych lub bardzo złożonych takich jak np. powierzchnie funkcyjne.
W programie wygląd sceny opisuje się w skrypcie, w którym umieszcza się informacje dotyczące:
Program umożliwia wygenerowanie sekwencji obrazów do celów animacji.
POV-Ray wykorzystuje obecnie wiele nowoczesnych technik ułatwiających tworzenie sceny i podnoszących realizm obrazu:
POV-Ray rozwijany jest stale od 1991 r. na bazie wcześniejszego programu o nazwie DKBTrace. Autorzy tworzą grupę POV Team, która dąży do ciągłego unowocześniania technik stosowanych w programie, zwiększenia jego wydajności i zachowania zgodności z poprzednimi wersjami, a także pomiędzy wersjami przeznaczonymi dla różnych systemów operacyjnych.
#include "colors.inc" global_settings { assumed_gamma 1.0 max_trace_level 5 } camera { location <0.0, 0.5, -4.0> //punkt umieszczenia kamery direction 1.5*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> //punkt na który patrzy (jest skierowana)kamera } sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] //określenie koloru (składowe r-czerwony,g-zielony,b-niebieski) [0.7 rgb <0.0,0.1,0.8>] } } } light_source { // wstawienie światła punktowego <0, 0, 0> // pozycja początkowa światła color rgb <1, 1, 1> // kolor światła translate <-30, 30, -30> // przemieszczenie x,y,z } plane { // podłoga w "szachownicę" y, -1 texture { pigment { checker color rgb 1 color blue 1 scale 0.5 } finish{ diffuse 0.8 ambient 0.1 } } } sphere { // błyszcząca kulka 0.0, 1 texture { pigment { color rgb <0.8,0.8,1.0> } finish{ diffuse 0.3 ambient 0.0 specular 0.6 reflection { 0.8 metallic } conserve_energy } } }