Generate a precomputed contribution photon map containing a fraction of
\fInphotons\fR photons (specified with the \fB\-apP\fR option, see
below), and output to file \fIfile\fR. Only light sources may contribute,
and are specified via their modifier(s) with a subsequent \fB-m\fR option
(see below). Each precomputed photon accumulates contributions from the
\fIbwidth\fR nearest photons into bins (specified with the \fB-bn\fR option,
see below). If \fIbwidth\fR is less than the number of bins, a warning is
issued, since some bins will be zero.
.IP
Ideally, \fIbwidth\fR should be a multiple of the number of bins. If too
many bins (default 50%) are still zero, a warning about an excessive empty
bin ratio is issued, indicating potentially biased contributions, and that
the number of photons and/or the bandwidth should be increased further.
However, if very small contributions are indeed expected in some bins,
this warning should be taken with a grain of salt.
.IP
Precomputed contribution photon maps can be used by \fIrcontrib(1)\fR to
very efficiently evaluate binned light source contributions (e.g. from sky
patches) at multiple points by looking up the single nearest precomputed
photon. In contribution mode, \fImkpmap\fR is therefore designed to behave
similarly to \fIrcontrib\fR. To ensure the latter obtains binning parameters consistent with those used in the precomputation, \fImkpmap\fR outputs an
option file \fIfile.opt\fR which must be passed to \fIrcontrib\fR
via its \fB@\fR option.
.IP
The \fIcomp\fR parameter specifies a compression ratio for the binned
contributions in the range [0, 1], where 1 corresponds to maximum compression,
and 0 implies no compression at all. Compression is recommended as it gives the
user control over the size of the binned contributions, which are saved in a
separate file for each modifier; depending on the number of photons and bins,
these files can become very large. Note however that \fImkpmap\fR uses a
\fBlossy\fR wavelet compression, which can introduce artefacts at
higher compression ratios if the lighting is complex (e.g. exhibits high
gradients). In typical scenarios, a compression ratio of 0.7-0.8 yields an
acceptable compromise between accuracy and space savings.
.IP
With this option, \fImkpmap\fR uses a modified photon distribution
algorithm that increases the odds that all selected light sources contribute
approximately the same number of photons. Because of this, \fImkpmap\fR cannot generate a contribution photon map in combination with others in a single run,
and other photon maps specified on the command line will be ignored.
.IP
\fBNOTE: This option requires out-of-core storage, which is currently not
enabled in the default build, nor is it supported on Windows. On platforms
that do support it, precomputed contribution photon mapping can be enabled at
Generate a transient photon map with the given propagation velocity.
This is a variant of the global photon map with the distinction that
photons can be located in space and time. When a transient photon interacts
with a surface, its time of flight, subject to its velocity, is recorded along with its position (technically, this is internally expressed as the photon path length to simplify the spatio-temporal distance metric used for photon
lookups).
The velocity is expressed in units of 1/sec in relation to the
scale of the simulation geometry. For reference, the speed of light in a
vacuum is 299792458 metres/sec (or 3e8 if you're not Stephen Hawking).
The velocity is currently treated as constant in all media, and is
consequently not adapted for the index of refraction in \fIdielectric\fR
and \fIinterface\fR materials. Relativistic effects are also not accounted
for, since Stephen Hawking doesn't use RADIANCE anyway.
Transient photon maps are particularly useful to study the propagation of
light in extreme slow motion. See also \fIrpict(1)\fR for details on how
transient photons can be rendered at specific points in time.
\fBNOTE: This option is experimental and requires in-core (kd-tree) storage,
which is enabled in the default build; it is currently not supported with