---
name: "pcomb"
section: "1"
platform: "linux"
package: "radiance"
version: "4R1+20120125-1+b1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/pcomb"
---

# pcomb(1)

combine RADIANCE pictures

## NAME

pcomb - combine RADIANCE pictures

## SYNOPSIS

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

## DESCRIPTION

*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)](/pcompos/1.md).* 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 ('!').

## EXAMPLES

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

-

  pcomb -e 'ro=[ri(1)](/ri/1.md)-ri(2);go=[gi(1)](/gi/1.md)-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)](/ri/1.md)^.4;go=[gi(1)](/gi/1.md)^.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

## AUTHOR

Greg Ward

## SEE ALSO

[getinfo(1)](/getinfo/1.md), [icalc(1)](/icalc/1.md), [pcompos(1)](/pcompos/1.md), [pfilt(1)](/pfilt/1.md), [rpict(1)](/rpict/1.md)
