SYNOPSIS

DESCRIPTION

EXAMPLES

AUTHOR

SEE ALSO

pcomb - combine RADIANCE pictures

**pcomb** [
**-h** ][ **-w** ][ **−x xres** ][
**−y yres** ][ **−f file** ][ **−e
expr** ] [ [ **-o** ][ **−s factor** ][
**−c r g b** ] **input ..** ]

*Pcomb*
combines equal-sized RADIANCE pictures and sends the result
to the standard output. By default, the result is just a
linear combination of the input pictures multiplied by
*−s* and *−c* coefficients, but an
arbitrary mapping can be assigned with the *−e*
and *−f* options. Negative coefficients and
functions are allowed, and *pcomb* will produce color
values of zero where they would be negative.

The variables
*ro, go* and *bo* specify the red, green and blue
output values, respectively. Alternatively, the single
variable *lo* can be used to specify a brightness value
for black and white output. The predefined functions
*ri(n), gi(n)* and *bi(n)* give the red, green and
blue input values for picture *n.* To access a pixel
that is nearby the current one, these functions also accept
optional x and y offsets. For example, *ri(3,-2,1)*
would return the red component of the pixel from picture 3
that is left 2 and up 1 from the current position. Although
x offsets may be as large as width of the picture, y offsets
are limited to a small window (+/- 32 pixels) due to
efficiency considerations. However, it is not usually
necessary to worry about this problem -- if the requested
offset is not available, the next best pixel is returned
instead.

For additional
convenience, the function *li(n)* is defined as the
input brightness for picture *n.* This function also
accepts x and y offsets.

The constant
*nfiles* gives the number of input files present, and
*WE* gives the white efficacy (lumens/brightness) for
pixel values, which may be used with the *−o*
option or the le(n) values to convert to absolute
photometric units (see below). The variables *x* and
*y* give the current output pixel location for use in
spatially dependent functions, the constants *xmax* and
*ymax* give the input resolution, and the constants
*xres* and *yres* give the output resolution
(usually the same, but see below). The constant functions
*re(n), ge(n), be(n),* and *le(n)* give the
exposure values for picture *n,* and *pa(n)* gives
the corresponding pixel aspect ratio. Finally, for pictures
with stored view parameters, the functions *Ox(n),
Oy(n)* and *Oz(n)* return the ray origin in world
coordinates for the current pixel in picture *n,* and
*Dx(n), Dy(n)* and *Dz(n)* return the normalized
ray direction. In addition, the function *T(n)* returns
the distance from the origin to the aft clipping plane (or
zero if there is no aft plane), and the function *S(n)*
returns the solid angle of the current pixel in steradians
(always zero for parallel views). If the current pixel is
outside the view region, *T(n)* will return a negative
value, and *S(n)* will return zero.

The
*−h* option may be used to reduce the information
header size, which can grow disproportionately after
multiple runs of *pcomb* and/or *pcompos(1).* The
*−w* option can be used to suppress warning
messages about invalid calculations. The *−o*
option indicates that original pixel values are to be used
for the next picture, undoing any previous exposure changes
or color correction.

The
*−x* and *−y* options can be used to
specify the desired output resolution, *xres* and
*yres,* and can be expressions involving other
constants such as *xmax* and *ymax.* The constants
*xres* and *yres* may also be specified in a file
or expression. The default output resolution is the same as
the input resolution.

The
*−x* and *−y* options must be present
if there are no input files, when the definitions of *ro,
go* and *bo* will be used to compute each output
pixel. This is useful for producing simple test pictures for
various purposes. (Theoretically, one could write a complete
renderer using just the functional language...)

The standard input can be specified with a hyphen (’-’). A command that produces a RADIANCE picture can be given in place of a file by preceeding it with an exclamation point (’!’).

To produce a picture showing the difference between pic1 and pic2:

pcomb −e ’ro=ri(1)−ri(2);go=gi(1)−gi(2);bo=bi(1)−bi(2)’ pic1 pic2 > diff |

Or, more efficiently:

pcomb pic1 −s −1 pic2 > diff |

To precompute the gamma correction for a picture:

pcomb −e ’ro=ri(1)^.4;go=gi(1)^.4;bo=bi(1)^.4’ inp.hdr > gam.hdr |

To perform some special filtering:

pcomb −f myfilt.cal −x xmax/2 −y ymax/2 input.hdr > filtered.hdr |

To make a picture of a dot:

pcomb −x 100 −y 100 −e ’ro=b;go=b;bo=b;b=if((x-50)^2+(y-50)^2−25^2,0,1)’ > dot |

Greg Ward

getinfo(1), icalc(1), pcompos(1), pfilt(1), rpict(1)