POV-Ray : Newsgroups : povray.advanced-users : Batch multi-core rendering server wrapper for povray : Batch multi-core rendering server wrapper for povray Server Time
30 Jun 2024 02:32:11 EDT (-0400)
  Batch multi-core rendering server wrapper for povray  
From: Stephen Pope
Date: 24 Feb 2010 23:20:01
Message: <web.4b85f8dcf96d13da5c2e077e0@news.povray.org>
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

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.