604 |
|
\f[I]definitions\f[R]. |
605 |
|
Once a function or variable has been defined, it may be used in later |
606 |
|
definitions, along with predefined functions such as \f[C]sin(x)\f[R] |
607 |
< |
and \f[C]cos(x)\f[R] and constants such as PI \**. |
607 |
> |
and \f[C]cos(x)\f[R] and constants such as \f[C]PI\f[R]\**. |
608 |
|
.FS |
609 |
|
TBD - There once was a footnote here |
610 |
|
.FE |
799 |
|
.RE |
800 |
|
.LP |
801 |
|
The following are sometimes defined, depending on the program: |
802 |
< |
.IP "\f[B]PI\f[R]" 3 |
802 |
> |
.IP "\f[B]\f[CB]PI\f[B]\f[R]" 3 |
803 |
|
The ratio of a circle\[cq]s circumference to its diameter. |
804 |
|
.RS 3 |
805 |
|
.RE |
1972 |
|
differ from standard computer graphics images inasmuch as they contain |
1973 |
|
real physical data, namely radiance values at each pixel. |
1974 |
|
To do this, it is necessary to maintain floating point information, and |
1975 |
< |
we use a 4-byte/pixel encoding described in Chapter II.5 of Graphics |
1976 |
< |
Gems II [Arvo91,p.80]. |
1975 |
> |
we use a 4-byte/pixel encoding described in Chapter II.5 of |
1976 |
> |
\f[I]Graphics Gems II\f[R] [Arvo91,p.80]. |
1977 |
|
The basic idea is to store a 1-byte mantissa for each of three |
1978 |
|
primaries, and a common 1-byte exponent. |
1979 |
|
The accuracy of these values will be on the order of 1% (±1 in 200) over |
2018 |
|
.IP "\f[B]\f[CB]FORMAT\f[B]\f[R]" 3 |
2019 |
|
A line indicating the file\[cq]s format. |
2020 |
|
At most one \f[C]FORMAT\f[R] line is allowed, and it must be assigned a |
2021 |
< |
value of either \f[C]32- bit_rle_rgbe\f[R] or \f[C]32-bit_rle_xyze\f[R] |
2021 |
> |
value of either \f[C]32-bit_rle_rgbe\f[R] or \f[C]32-bit_rle_xyze\f[R] |
2022 |
|
to be a valid \f[I]Radiance\f[R] picture. |
2023 |
|
.RS 3 |
2024 |
|
.RE |
2067 |
|
or override old ones. |
2068 |
|
.RS 3 |
2069 |
|
.RE |
2070 |
< |
.LP |
2071 |
< |
\f[C]PRIMARIES\f[R] The CIE (x,y) chromaticity coordinates of the three |
2072 |
< |
(RGB) primaries and the white point used to standardize the |
2073 |
< |
picture\[cq]s color system. |
2070 |
> |
.IP "\f[B]\f[CB]PRIMARIES\f[B]\f[R]" 3 |
2071 |
> |
The CIE (x,y) chromaticity coordinates of the three (RGB) primaries and |
2072 |
> |
the white point used to standardize the picture\[cq]s color system. |
2073 |
|
This is used mainly by the \f[B]ra_xyze\f[R] program to convert between |
2074 |
|
color systems. |
2075 |
|
If no \f[C]PRIMARIES\f[R] line appears, we assume the standard primaries |
2076 |
|
defined in \f[C]src/common/color.h\f[R], namely |
2077 |
|
\f[C]0.640 0.330 0.290 0.600 0.150 0.060 0.333 0.333\f[R] for red, |
2078 |
|
green, blue and white, respectively. |
2079 |
< |
.PP |
2079 |
> |
.RS 3 |
2080 |
> |
.RE |
2081 |
> |
.LP |
2082 |
|
As always, the end of the header is indicated by an empty line. |
2083 |
|
.SH 4 |
2084 |
|
Resolution String |
2171 |
|
.IP "\f[B]New run-length encoded\f[R]" 3 |
2172 |
|
In this format, the four scanline components (three primaries and |
2173 |
|
exponent) are separated for better compression using adaptive run-length |
2174 |
< |
encoding (described by Glassner in Chapter II.8 of Graphics Gems II |
2175 |
< |
[Arvo91,p.89]). |
2174 |
> |
encoding (described by Glassner in Chapter II.8 of \f[I]Graphics Gems |
2175 |
> |
II\f[R] [Arvo91,p.89]). |
2176 |
|
The record begins with an unnormalized pixel having two bytes equal to |
2177 |
|
2, followed by the upper byte and the lower byte of the scanline length |
2178 |
|
(which must be less than 32768). |
2206 |
|
\f[C]luminance(col)\f[R]. |
2207 |
|
.PP |
2208 |
|
If the \f[C]FORMAT\f[R] string indicates XYZ data, then the units of the |
2209 |
< |
Y primary are already lm/st/m\*{2\*}, so the above conversion is |
2209 |
> |
Y primary are already lm/sr/m\*{2\*}, so the above conversion is |
2210 |
|
unnecessary. |
2211 |
|
.SH 3 |
2212 |
|
\f[BI]Radiance\f[B] programs |
2588 |
|
Here are the relevant calls for reading and copying information headers: |
2589 |
|
.IP "\f[B]\f[CB]int checkheader(FILE *fin, char *fmt, FILE *fout);\f[B]\f[R]" 3 |
2590 |
|
Read the header information from \f[C]fin\f[R], copying to |
2591 |
< |
\f[C]fou\f[R]t (unless fout is \f[C]NULL\f[R]), checking any |
2591 |
> |
\f[C]fout\f[R] (unless fout is \f[C]NULL\f[R]), checking any |
2592 |
|
\f[C]FORMAT\f[R] line against the string \f[C]fmt\f[R]. |
2593 |
|
The \f[C]FORMAT\f[R] line (if it exists) will not be copied to |
2594 |
|
\f[C]fout\f[R]. |
2722 |
|
.RS 3 |
2723 |
|
.RE |
2724 |
|
.IP "\f[B]\f[CB]scanlen(rs)\f[B]\f[R]" 3 |
2725 |
< |
Macro to get the scanline length from the \f[C]RESOL\f[R]U structure |
2725 |
> |
Macro to get the scanline length from the \f[C]RESOLU\f[R] structure |
2726 |
|
pointed to by \f[C]rs\f[R]. |
2727 |
|
.RS 3 |
2728 |
|
.RE |
2732 |
|
.RS 3 |
2733 |
|
.RE |
2734 |
|
.IP "\f[B]\f[CB]fscnresolu(slp,nsp,fp)\f[B]\f[R]" 3 |
2735 |
< |
Macro to read in a resolution string from \f[C]f\f[R]p and assign the |
2735 |
> |
Macro to read in a resolution string from \f[C]fp\f[R] and assign the |
2736 |
|
scanline length and number of scanlines to the integers pointed to by |
2737 |
|
\f[C]slp\f[R] and \f[C]nsp\f[R], respectively. |
2738 |
|
This call expects standard English-text ordered scanlines, and returns |
3137 |
|
access routines in \f[C]src/common/portio.c\f[R] for reading and writing |
3138 |
|
portable binary data. |
3139 |
|
The information header is handled by the routines in |
3140 |
< |
s\f[C]rc/common/header.c\f[R], similar to the method described for |
3140 |
> |
\f[C]src/common/header.c\f[R], similar to the method described for |
3141 |
|
\f[I]Radiance\f[R] picture files. |
3142 |
|
Here are the main calls from \f[C]src/rt/ambio.c\f[R]: |
3143 |
|
.IP "\f[B]\f[CB]putambmagic(FILE *fp);\f[B]\f[R]" 3 |