POV-Ray

Lịch sử

Vào lúc nào đó giữa những năm 1980, David Kirk Buck đã tải mã nguồn dành cho một chương trình dò tia chạy trên Unix về chiếc máy tính Amiga của ông. Ông thực nghiệm với nó trong một thời gian, cuối cùng đi tới quyết định viết một trình dò tia của riêng mình, lấy tên DKBTrace từ các chữ cái đầu trong tên ông. Ông đã đăng nó trên một hệ thống bản thông tin trực tuyến, nghĩ rằng một ai khác có thể sẽ thích nó. Năm 1987, Aaron A. Collins đã tải xuống chương trình DKBTrace và bắt đầu thực hiện một hệ thống xuất dựa trên nền x86 của nó. Ông và David Buck đã hợp tác làm việc đề bổ sung thêm nhiều chức năng. Khi chương trình chứng tỏ được sự phô biến mạnh mẽ của nó hơn cả dự đoán, họ đã không thể giữ nguyên yêu cầu về các chức năng bổ sung. Thế nên, tháng 7 năm 1991 David chuyển cả dự án tới một nhóm các lập trình viên. Đồng thời, ông đã cảm thấy không thật thích đáng khi dùng các chữ cái viết tắt tên mình trong tên chương trình mà ông không còn tham gia phát triển. Cái tên "STAR" (Software Taskforce on Animation and Rendering) đã được cân nhắc, nhưng cuối cùng tên gọi chính thức là "Persistence of Vision Raytracer", hay gọi tắt là "POV-Ray".
POV-Ray là trình dò tia đầu tiên dùng để kết xuất một ảnh trong không gian, thực hiện bởi Mark Shuttleworth trong Trạm Vũ trụ Quốc tế.
Những đặc điểm của chương trình và tổng kết về lịch sử của nó đã được thảo luận ở một buổi phỏng vấn David Kirk Buck cùng với Chris Cason trong số 24 của tạp chí FLOSS Weekly (tuần san).

Ví dụ về ngôn ngữ mô tả cảnh 3D

Phía dưới là ví dụ về ngôn ngữ mà POV-Ray dùng để mô tả một cảnh để dựng. Đoạn mã này mô tả việc sử dụng màu nền, camera, ánh sáng, một hộp có bề mặt bình thường và hiệu ứng chuyển đổi khi quay

 #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> }
Đoạn mã dưới đây cho thấy việc khai báo biến, gán giá trị, so sánh và vòng lặp while trong dựng hình

 #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

Tạo hình

POV-Ray không đi kèm với chức năng tạo hình; nó chỉ là một trình dựng hình với ngôn ngữ tạo hình. Một số nhà phát triển bên thứ ba đã tạo ra nhiều chương trình tạo hình cho POV-Ray; một số dành riêng cho POV-Ray, một số cho phép nhập và xuất ra dữ liệu để POV-Ray dựng hình.
Một số trình tạo hình có thể được xem tại đây.

Quá trình phát triển và duy trì

Tất cả các thay đổi chính thức trong cây mã nguồn của POV-Ray đều được hoàn thành và/hoặc chấp thuận bởi POV-Team. Hầu hết các thao tác gửi bản vá và/hoặc báo cáo lỗi đều được thực hiện trong nhóm tin tức của POV-Ray tại  (hay giao diện web). Vì POV-Ray có phát hành mã nguồn nên có khá nhiều bản chỉnh sửa và vá lỗi không chính thức từ bên thứ ba, và chúng không được hỗ trợ từ POV-Team.
Phiên bản chính thức hiện tại của POV-Ray không hỗ trợ plug-in đổ bóng. Một số tính năng như radiosity và spline vẫn còn đang trong giai đoạn thử nghiệm và có thể bị thay đổi.

Nền tảng hỗ trợ

POV-Ray được phát hành dưới dạng đã biên dịch cho Windows, Macintosh và Linux. Phiên bản của Macintosh không hỗ trợ các máy Mac chạy bộ xử lý Intel nhưng vì Mac OS X chạy nhân UNIX nên có thể biên dịch phiên bản Linux để chạy. POV-Ray cũng có thể sử dụng trên bất kì các nền tảng nào có bộ biên dịch C++.
Các người dùng máy Mac chạy bộ xử lý Intel cũng có thể sử dụng MegaPOV, một phiên bản chỉnh sửa của POV-Ray.
Tuy nhiên, phiên bản 3.7 beta với sự hỗ trợ SMP mới chỉ hỗ trợ Windows và Linux.

Giấy phép

POV-Ray được phát hành dưới Giấy phép POV-Ray. Giấy phép này cho phép phát hành miễn phí mã nguồn và bản đã biên dịch, nhưng lại hạn chế về việc phân phối vì mục đích lợi nhuận và sự thay đổi mã nguồn để tạo ra các phiên bản khác so với phiên bản gốc.
Mặc dù mã nguồn được phát hành cho việc sửa đổi, nhưng do một số hạn chế nên phân mềm này không được coi là phần mềm mã nguồn mở theo luật định của OSI. Một trong các lý do mà POV-Ray không được phát hành dưới giấy phép GNU GPL hay một giấy phép mã nguồn mở khác là vì POV-Ray được phát hành trước khi các giấy phép kiểu GPL trở nên phổ biến nên nhà phát triển phải tự viết ra một giấy phép cho nó, và các người tham gia viết chương trình này với sự cho rằng đóng góp của họ sẽ được phát hành dưới giấy phép POV-Ray.
Một phiên bản mới của POV-Ray được viết lại hoàn toàn (POV-Ray 4.0) đang được thảo luận và sẽ phát hành dưới một giấy phép dễ chịu hơn và có khả năng nhất là GNU GPL v3.