NAME¶
rpiece - render pieces of a RADIANCE picture
SYNOPSIS¶
rpiece [
-v ][
-x xres ][
-y yres ][
-X xdiv
][
-Y ydiv ][
-F|R syncfile ][
-T timelim ] [
$EVAR ] [
@file ] [ rpict options ]
-o picture
octree
DESCRIPTION¶
Rpiece renders a RADIANCE picture a piece at a time, calling
rpict(1) to do the actual work. This is useful for running multiple
rpict processes on cooperating machines to render a single picture,
which is a shared file specified with the
-o option. The overall
picture dimensions will be
xres by
yres (or smaller, depending
on the
-pa option and other view options), and the picture will be
rendered in
xdiv by
ydiv pieces.
There are two basic methods for telling
rpiece which piece(s) of a
picture to render. The explicit method is to write on the standard input the
X and
Y position of the desired piece(s), where
X runs
from zero to
xdiv-1 and
Y runs from zero to
ydiv-1. (The
lower left piece of a picture corresponds to (0,0) in this system.)
Alternatively, the implicit specification method uses a synchronization file
to determine which piece is to be rendered next. Specified with the
-F
option,
syncfile initially contains the values for
xdiv and
ydiv, so the
-X and
-Y options are unnecessary. (However,
they are used if
syncfile does not exist.) The first
rpiece process puts a lock on
syncfile and modifies its contents
before starting work on the first piece of the image. It writes the
X
and
Y position of the piece it will work on, so the next
rpiece
process to modify
syncfile will start on the next piece. (When it
finishes with its piece, it appends the index to the end of
syncfile.)
This procedure continues until all the pieces are done, at which point all of
the
rpiece processes will terminate.
The
-R option may be used instead of
-F if some of the pieces were
not properly finished by previous (killed) runs of
rpiece. This option
should be used by at most one
rpiece process, which must be started
first and with
no other rpiece processes running or else it will
rerender the same pieces other processes have begun. Once the recover process
is started, you may start other
rpiece processes using the
-F
option to run simultaneously. If some processes die during execution, leaving
one or more half-finished pieces in the picture even though the other
processes think the work is done, you may run a single
rpiece with the
-R option by itself to repair the holes.
The
-v flag switches on verbose mode, where
rpiece reports to the
standard output after each piece begins and after each piece is finished.
Options may be given on the command line and/or read from the environment and/or
read from a file. A command argument beginning with a dollar sign ('$') is
immediately replaced by the contents of the given environment variable. A
command argument beginning with an at sign ('@') is immediately replaced by
the contents of the given file.
EXAMPLE¶
First
rpiece process is started on the machine "goober":
-
- goober% echo 1 8 > syncfile
goober% echo -F syncfile -x 1024 -y 1024 -vf view -o picture octree >
args
goober% rpiece @args &
Second
rpiece processes is started on the machine "sucker":
-
- sucker% rpiece @args &
NOTES¶
Due to NFS file buffering, the network lock manager is employed to guarantee
consistency in the output file even though non-overlapping writes are used.
This would tend to slow the process down if
rpiece were to wait for
this I/O to complete before starting on the next piece, so
rpiece forks
separate processes to hang around waiting for I/O completion. The number of
processes thus designated is set by the MAXFORK macro in the program (compiled
in the src/util directory). If the fork call is slow on a system, it may
actually be better to set MAXFORK to zero. In other cases, the network lock
manager may be so slow that this value should be increased to get the best
utilization.
The output picture is not run-length encoded, and can be quite large. The
approximate size (in kilobytes) can be computed by the simple formula:
-
- filesize = xres*yres/256
Make sure that there is enough space on the filesystem to hold the entire
picture before beginning. Once the picture is finished, the
ra_rgbe(1)
program with the -r option may be used to convert to a run-length encoded
picture for more efficient storage, although
pfilt(1) or any of the
other Radiance picture filters will do the same thing.
The ALRM signal may be used to gracefully terminate an
rpiece process
after it finishes the current piece. This permits other currently running or
subsequently started
rpiece process(es) to continue rendering the
picture without loss. The
-T option will send the ALRM signal to
rpiece after the specified number of (decimal) hours. This is the best
way to force a time limit on the computation, since information will not be
lost, though the process may continue for some time afterwards to finish its
current piece.
BUGS¶
This program may not work on some systems whose NFS lock manager is unreliable.
In particular, some System V derivative UNIX systems often have problems with
the network lock manager. If the output is scrambled or rpict aborts with some
ambient file related problem, you should just remove the ambient file and go
back to normal rendering.
AUTHOR¶
Greg Ward
SEE ALSO¶
getinfo(1),
pfilt(1),
ra_rgbe(1),
rpict(1),
ximage(1)