|
|
Hello all,
I'd like to share a useful utility I developed for running povray on a set of
scripts in parallel on multi-core servers. It's a simple C++ program (*nix &
MacOSX) that can be run in parallel from makefiles to render successive frames
of a scene with many threads of povray.
The source code is at:
http://FASTLabInc.com/pov-render.cpp
Here's the header of the source.
stp
-----
POV-Renderer -- Batch multi-core rendering server wrapper for povray
(i.e., run povray on a set of scripts in parallel on multi-core servers)
Stephen Pope - stp### [at] heaveneverywherecom - Dec, 2009, Feb, 2010
This program can be run from a make file in multiple threads to schedule
batch rendering with povray on multi-core machines. Each thread runs through
the frames in sequence using a frame# lock file for synchronization.
The typical Makefile entry is,
# 2 renderer threads, each makes 600 out of 1200 frames for t = 0 to 1
t4:
echo 0 > frame_num
nohup ./pov-render -n 600 -f 0 1200 -t 0.0 1.0 &
sleep 2
nohup ./pov-render -n 600 -f 0 1200 -t 0.0 1.0 &
The cmd "make t4" will now fork 2 processes, which the OS will allocate to their
own cores.
You can run more threads on multi-core machines by editing the Makefile.
The povray command generated to render frames in a thread has format:
/opt/local/bin/povray +W1920 +H1080 +FN +Q9 +KC
+I/home/stp/POV/Sc12.pov +O/scratch/stp/Sc1200
+L/opt/local/lib/povray-3.6.1/include +L/home/stp/POV
+KFI0 +KFF1000 +KI0.0 +KF1.0 +SF81 +EF81
The details of the command options are in the C++ code below, and can be
overridden from the render command.
pov-render command flags
-c command
-n # frames to make
-s starting frame
-i in file
-o out file
-q quality
-f F0 F1 -- start/end frame
-t t0 t1 -- start/end time
-x # threads
-u print usage
Compile this program like, (in Makefile),
# target to compile renderer
re:
g++ -o pov-render pov-render.cpp # add -lpthread on Linux
-----
Post a reply to this message
|
|