ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/man/man1/mkpmap.1
Revision: 1.13
Committed: Fri Aug 7 01:22:59 2020 UTC (4 years, 9 months ago) by rschregle
Branch: MAIN
CVS Tags: rad5R3
Changes since 1.12: +65 -24 lines
Log Message:
docs(mkpmap): Documented extended -apo option to reorient photon ports,
updated acknowledgements and copyright.

File Contents

# User Rev Content
1 rschregle 1.13 .\" RCSid "$Id: mkpmap.1,v 1.12 2019/06/03 17:08:23 rschregle Exp $"
2     .TH MKPMAP 1 "$Date: 2019/06/03 17:08:23 $ $Revision: 1.12 $" RADIANCE
3 greg 1.1
4     .SH NAME
5     mkpmap - generate RADIANCE photon map
6    
7     .SH SYNOPSIS
8     mkpmap \fB\-apg\fR|\fB\-apc\fR|\fB\-apv\fR|\fB\-apd\fR|\fB\-app\fR|\fB\-apC\fR
9     \fIfile nphotons\fR [\fIbwidth\fR] ...
10     [options] \fIoctree\fR
11    
12     .SH DESCRIPTION
13     \fIMkpmap\fR takes a RADIANCE scene description as an octree and
14     performs Monte Carlo forward path tracing from the light sources,
15     depositing indirect ray hitpoints along with their energy (flux) as
16     "photons". The resulting localised energy distribution represents a
17     global illumination solution which is written to a file for subsequent
18     evaluation by \fIrpict(1), rtrace(1)\fR and \fIrvu(1)\fR in a backward
19     raytracing pass. The photon map(s) can be reused for multiple viewpoints
20     and sensor locations as long as the geometry remains unchanged.
21    
22     .SH OPTIONS
23     \fIMkpmap\fR can generate different types of photon maps depending on
24     the materials present in the scene. In most cases, these can be
25     specified independently or in combination on the command line. If
26     multiple photon maps of the same type are specified, the last instance
27     takes precedence.
28    
29     .IP "\fB\-apg \fIfile nphotons\fR"
30     Generate a global photon map containing approximately \fInphotons\fR
31     photons, and output to \fIfile\fR. This accounts for all
32     indirect illumination, from both specular and diffuse scattering, on
33     surfaces with a diffuse component. This is the most general type of
34     photon map and replaces the ambient calculation in \fIrpict(1),
35     rtrace(1)\fR and \fIrvu(1)\fR.
36    
37     .IP "\fB\-apc \fIfile nphotons\fR"
38     Generate a separate caustic photon map containing approximately
39     \fInphotons\fR photons, and output to file \fIfile\fR. This is a
40     subset of the global photon map intended for direct visualisation at
41     primary rays, This accounts for all indirect illumination on diffuse
42     surfaces from specular scattering, which usually exhibits a large
43     gradient and requires a higher resolution than the global photon map,
44     typically containing the tenfold number of photons.
45    
46     .IP "\fB\-apv \fIfile nphotons\fR"
47     Generate a volume photon map containing approximately \fInphotons\fR
48     photons, and output to file \fIfile\fR. These account for indirect
49     inscattering in participating media such as \fBmist\fR and complement
50     the direct inscattering computed by \fIrpict(1), rtrace(1)\fR and
51     \fIrvu(1)\fR. See also the \fB\-me\fR, \fB\-ma\fR and \fB\-mg\fR options
52     below.
53    
54     .IP "\fB\-apd \fIfile nphotons\fR"
55     Generate a direct photon map containing approximately \fInphotons\fR
56     photons, and output to file \fIfile\fR. This only accounts for direct
57     illumination and is intended for debugging and validation of photon emission
58     from the light sources, as the quality is too low for actual rendering.
59    
60 rschregle 1.4 .IP "\fB\-apC \fIfile nphotons\fR"
61 greg 1.1 Generate a contribution photon map containing approximately
62     \fInphotons\fR photons, and output to file \fIfile\fR. This may then be
63 rschregle 1.8 used by \fIrcontrib(1)\fR to compute light source contributions. When used
64     with \fIrtrace(1)\fR or \fIrpict(1)\fR, contribution photon maps behave as
65     regular global photon maps and yield cumulative contributions from all light
66     sources.
67 greg 1.1 .IP
68     With this option, \fImkpmap\fR uses a modified photon distribution
69     algorithm that ensures all light sources contribute approximately the
70     same number of photons. Each photon indexes a primary hitpoint, incident
71     direction, and emitting light source which can be used to bin
72     contributions per light source and direction.
73     .IP
74     \fIMkpmap\fR cannot generate a contribution photon map in combination with
75     others in a single run, as it uses a different distribution algorithm. Other
76     photon maps specified on the command line will be ignored.
77    
78     .IP "\fB\-app \fIfile nphotons bwidth\fR"
79     Generate a precomputed global photon map containing a fraction of
80     \fInphotons\fR photons (specified with the \fB\-apP\fR option, see
81     below), and output to file \fIfile\fR. This is a special case of the
82     global photon map where the irradiance is evaluated for a fraction of
83     the photon positions using \fIbwidth\fR nearest photons, and stored as
84     photon flux; the remaining photons are discarded as their contributions
85     have been accounted for.
86     .IP
87 rschregle 1.8 This obviates the explicit irradiance evaluation by \fIrpict(1),
88     rtrace(1)\fR and \fIrvu(1)\fR, thus providing a speedup at the expense of
89     accuracy. The resulting error is tolerable if the indirect illumination has
90     a low gradient, as is usually the case with diffuse illumination.
91 greg 1.1
92     .IP "\fB\-apD \fIpredistrib\fR"
93     Photon predistribution factor; this is the fraction of \fInphotons\fR
94     which are emitted in a distribution prepass in order to estimate the
95     remaining number of photons to emit in the main pass to approximately
96     yield a photon map of size \fInphotons\fR.
97     .IP
98 rschregle 1.8 Setting this too high may yield more than \fInphotons\fR in the initial pass
99     with highly reflective geometry. Note that this value may exceed 1, which
100     may be useful if the resulting photon map size greatly deviates from
101 greg 1.1 \fInphotons\fR with a very low average reflectance.
102    
103 rschregle 1.8 .IP "\fB\-api \fIxmin ymin zmin xmax ymax zmax\fR"
104 rschregle 1.10 Define a region of interest within which to store photons exclusively;
105 rschregle 1.8 photons will only be stored within the volume bounded by the given minimum
106     and maximum coordinates. Multiple instances of this option may be specified
107     with cumulative effect to define compound regions of interest. This is
108     useful for constraining photons to only the relevant regions of a scene, but
109     may increase the photon distribution time.
110     .IP
111     \fBWARNING: this is an optimisation option for advanced users (an elite
112     group collectively known as \fIZe Ekspertz\fB) and may yield biased results.
113     Use with caution!\fR
114 greg 1.1
115     .IP "\fB\-apm \fImaxbounce\fR"
116 rschregle 1.8 Synonymous with \fB\-lr\fR for backwards compatibility. May be removed in
117     future releases.
118 greg 1.1
119     .IP "\fB\-apM \fImaxprepass\fR"
120     Maximum number of iterations of the distribution prepass before terminating
121 rschregle 1.12 if some photon maps are still empty. This option is rarely needed as
122     an aborted prepass may indicate an anomaly in the geometry or an
123 greg 1.1 incompatibility with the specified photon map types (see \fBNOTES\fR below).
124    
125 rschregle 1.13 .IP "\fB\-apo\fR[\fB+\fR|\fB-\fR|\fB0\fR] \fImod\fR"
126 greg 1.1 Specifies a modifier \fImod\fR to act as a \fIphoton port\fR. All
127     objects using this modifier will emit photons directly in lieu of any
128     light sources defined with the \fIsource\fR material. This greatly
129     accelerates photon distribution in scenes where photons have to enter a
130     space which separates them from the emitting light source via an
131 rschregle 1.13 aperture (e.g. fenestration, skylight) acting as a port.
132 greg 1.1 .IP
133 rschregle 1.13 In a typical daylight simulation scenario, a fenestration acts as a port to
134     admit photons into an interior after emission from sky and solar sources.
135     Multiple instances of this option may be specified.
136     .IP
137     By default, ports are oriented to emit in the halfspace defined
138     by their associated surface normal. This can be overridden by
139     specifying a trivalent suffix as follows:
140     .RS
141     .IP \fB+\fR:
142     Forward emission; this is equivalent to the abovementioned default behaviour.
143     .IP \fB-\fR:
144     Backward emission; the port is reversed and photons are emitted into the
145     halfspace facing away from the surface normal.
146     .IP \fB0\fR:
147     Bidirectional emission; photons are emitted from both sides of the port.
148     .RE
149     .IP
150     Situations that call for a reversed photon port include, for
151     example, using fenestrations as ports that were (for whatever
152     reason) defined with outward facing normals, or using a \fBmist\fR
153     primitive as a port, since this requires outward facing normals in order to
154     register the photons as having entered the volume.
155    
156 greg 1.1 .IP "\fB\-apO \fImodfile\fR"
157     Read photon port modifiers from the file \fImodfile\fR as a more convenient
158     alternative to multiple instances of \fB\-apo\fR.
159    
160 rschregle 1.8 .IP "\fB\-apP \fIprecomp\fR"
161     Fraction of global photons to precompute in the range ]0,1] when using the
162     \fB\-app\fR option.
163    
164 greg 1.1 .IP "\fB\-apr \fIseed\fR"
165 rschregle 1.9 Seed for the random number generator. This is useful for generating
166     different photon distributions for the same octree and photon map size,
167     notably in progressive applications.
168 greg 1.1
169     .IP "\fB\-aps \fImod\fR"
170     Specifies a modifier \fImod\fR defined as \fIantimatter\fR material to act
171 rschregle 1.2 as a virtual (i.e. invisible) receiver surface. Photons will be deposited on
172 greg 1.1 all surfaces using this modifier, just like regular materials, but will then
173     be transferred through the surface without undergoing scattering; the
174     surface therefore does not affect the light transport and simply acts as an
175     invisible photon receiver. This is useful when photon irradiance is to be
176     evaluated at points which do not lie on regular geometry, e.g. at workplane
177 greg 1.6 height with \fIrtrace\fR's \fB-I\fR option. Without this workaround,
178 greg 1.1 photons would be collected from parallel but distant planes, leading to
179     underestimation. Note that photons are only deposited when incident from
180     the front side of the sensor surface, i.e. when entering the
181     \fIantimatter\fR, thus the surface normal is relevant. \fIMkpmap\fR reports
182     an error if the specified modifier is not an \fIantimatter\fR material.
183    
184     .IP "\fB\-apS \fImodfile\fR"
185 rschregle 1.2 Read virtual receiver surface modifiers from the file \fImodfile\fR as a more
186 greg 1.1 convenient alternative to multiple instances of \fB\-aps\fR.
187    
188 rschregle 1.10 .IP "\fB\-ae \fImod\fR"
189     Add \fImod\fR to the ambient exclude list, so that it will be ignored by the
190     photon map. Objects having \fImod\fR as their modifier will not have
191     photons deposited on them. Multiple modifiers may be given, each as separate
192     instances of this option.
193     .IP
194     \fBWARNING: this is an optimisation option for advanced users and may yield
195     biased results. It may also significantly increase photon distribution
196     times. Use with caution!\fR
197    
198     .IP "\fB\-aE \fIfile\fR"
199     Same as \fI-ae\fR, except modifiers to be exluded are read from \fIfile\fR,
200     separated by whitespace. The RAYPATH environment variable determines which
201     directories are searched for this file.
202    
203     .IP "\fB\-ai \fImod\fR"
204     Add \fImod\fR to the ambient include list, so that it will contribute to the
205     photon map. Only objects having \fImod\fR as their modifier will have
206     photons deposited on them. Multiple modifiers may be given, each as separate
207     instances of this option. Note that the ambient include and exclude options
208     are mutually exclusive.
209     .IP
210     \fBWARNING: this is an optimisation option for advanced users and may yield
211     biased results. It may also significantly increase photon distribution
212     times. Use with caution!\fR
213    
214     .IP "\fB\-aI \fIfile\fR"
215     Same as \fI-ai\fR, except modifiers to be included are read from \fIfile\fR,
216     separated by whitespace. The RAYPATH environment variable determines which
217     directories are searched for this file.
218    
219 greg 1.1 .IP "\fB\-bv\fR[\fB+\fR|\fB-\fR]"
220     Toggles backface visibility; enabling this causes photons to be stored and
221     possibly scattered if they strike the back of a surface, otherwise they
222     are unconditionally absorbed and discarded.
223    
224     .IP "\fB\-dp \fIsampleres\fR"
225     Resolution for sampling the spatial emission distribution of a modified
226     light source (e.g. via \fIbrightfunc\fR), in samples per steradian. This
227     is required for numerically integrating the flux emitted by the light
228     source and for constructing a probability density function for photon
229     emission. The accuracy of photon emission from modified sources
230     therefore depends on this parameter. This parameter may need increasing
231     with complex emission distributions in combination with caustics.
232    
233     .IP "\fB\-ds \fIpartsize\fR"
234     Light source partition size ratio; a light source object is spatially
235     partitioned to distribute the photon emission over its surface. This
236     parameter specifies the ratio of the size (per dimension) of each
237     partition to the scene cube, and may need increasing for modified light
238     sources (e.g. via \fIbrightfunc\fR) with high spatial variation.
239    
240     .IP "\fB\-e \fIfile\fR"
241     Redirect diagnostics and progress reports to \fIfile\fR instead of the
242     console.
243    
244     .IP "\fB\-fo\fR[\fB+\fR|\fB-\fR]"
245     Toggles overwriting of output files. By default, \fImkpmap\fR will not
246     overwrite an already existing photon map file. This is to prevent
247     inadvertently destroying the results of potentially lengthy photon
248     mapping runs.
249    
250 rschregle 1.8 .IP "\fB\-ld \fImaxdist\fR"
251     Limit cumulative distance travelled by a photon along its path to
252     \fImaxdist\fR. Photon hits within this distance will be stored, and the
253     photon is terminated once its path length exceeds this limit. This is
254     useful for setting radial regions of interest around emitting/reflecting
255     geometry, but may increase the photon distribution time.
256     .IP
257     \fBWARNING: this is an optimisation option for advanced users (an elite
258     group collectively known as \fIZe Ekspertz\fB) and may yield biased results.
259     Use with caution!\fR
260    
261     .IP "\fB\-lr \fImaxbounce\fR"
262     Limit number of bounces (scattering events) along a photon path to
263     \fImaxbounce\fR before being considered "runaway" and terminated. Photons
264     paths are normally terminated via \fIRussian Roulette\fR, depending on their
265     albedo. With unrealistically high albedos, this is not guaranteed, and this
266     option imposes a hard limit to avoid an infinite loop.
267     .IP
268     \fBWARNING: this is an optimisation option for advanced users (an elite
269     group collectively known as \fIZe Ekspertz\fB) and may yield biased results.
270     Use with caution!\fR
271    
272 greg 1.1 .IP "\fB\-ma \fIralb galb balb\fR"
273     Set the global scattering albedo for participating media in conjunction
274     with the \fB\-apv\fR option. See \fIrpict(1)\fR for details.
275    
276     .IP "\fB\-me \fIrext gext bext\fR"
277     Set the global extinction coefficient for participating media in conjunction
278     with the \fB\-apv\fR option. See \fIrpict(1)\fR for details.
279    
280     .IP "\fB\-mg \fIgecc\fR"
281     Set the global scattering eccentricity for participating media in conjunction
282     with the \fB\-apv\fR option. See \fIrpict(1)\fR for details.
283    
284 rschregle 1.3 .IP "\fB\-n \fInproc\fR"
285     Use \fInproc\fR processes for parallel photon distribution. There is no
286     benefit in specifying more than the number of physical CPU cores available.
287 rschregle 1.5 This option is currently not available on Windows.
288 rschregle 1.3
289 greg 1.1 .IP "\fB\-t \fIinterval\fR"
290     Output a progress report every \fIinterval\fR seconds. This includes
291     statistics about the currently emitting light source (including number of
292     partitions), the total number of photons emitted, the number of each type
293     stored, the percentage of the completed pass (pre or main), and the elapsed
294     time.
295    
296     .SH NOTES
297    
298     .SS Parametrisation
299     \fIMkpmap\fR recognises multiplier suffixes (k = 1000, m = 1000000) to
300     facilitate the specification of \fInphotons\fR, both in upper and lower
301     case.
302     .PP
303    
304     .SS Distribution Algorithm
305     The photon distribution algorithm estimates the number of required
306     photons to emit to arrive at the specified target count \fInphotons\fR
307     per photon map using a distribution prepass followed by a main pass.
308     As a result, \fImkpmap\fR generates the \fBapproximate\fR number of photons
309     specified, which can vary by up to 10% for typical scenes, but can be
310     higher for scenes with unusually high or low reflectance. In this case,
311     the predistribution factor \fB\-apD\fR should be increased for scenes
312     with low reflectance, and reduced for those with high reflectance.
313     .PP
314     There are situations which may prevent certain (or any)
315     photon types from being generated, depending on the light source and material
316     configuration. This typically occurs when attempting to generate a caustic
317     photon map without specular materials present in the scene, or a volume
318     photon map without participating media. Ill-configured light sources may also
319     prevent indirect rays from reaching a surface, and thus no photons being
320     deposited. In these cases, \fImkpmap\fR will make a number of distribution
321     attempts before terminating with an error. This can be adjusted with the
322     \fB\-apM\fR option.
323    
324     .SS Material Support
325 rschregle 1.11 Not all materials are fully supported by the photon map extension. The
326     \fIplasfunc\fR, \fImetfunc\fR, \fItransfunc\fR, \fIplasdata\fR,
327     \fImetdata\fR and \fItransdata\fR materials currently only scatter photons
328     diffusely, and will not produce caustics. The \fIbrtdfunc\fR material only
329     produces caustics via ideal (mirror) specular reflection and transmission.
330     For more realistic scattering behaviour, use the newer \fIbsdf\fR material
331 greg 1.1 instead.
332     .PP
333     Virtual light sources (normally enabled with the \fImirror\fR material) are
334     disabled with the photon map, as the resulting caustics are already accounted
335     for.
336    
337 rschregle 1.2 .SS Virtual Receiver Surfaces
338 greg 1.1 Since photons are surface bound, the density estimate is only asymptotically
339     correct when performed at points which lie on the scene geometry. The
340     irradiance is underestimated for arbitrarily placed points when photons are
341     collected from distant surfaces. \fIMkpmap\fR offers a workaround with a
342 rschregle 1.2 virtual receiver surface using the \fIantimatter\fR material; see the \fB-aps\fR
343 greg 1.1 and \fB-apS\fR options for details.
344    
345     .SH EXAMPLES
346     The following command generates a global photon map \fIbonzo.gpm\fR and a
347     caustic photon map \fIbonzo.cpm\fR containing approximately 10000 and 100000
348     photons, respectively, with progress report every 5 seconds:
349     .IP
350     mkpmap \-apg bonzo.gpm 10k \-apc bonzo.cpm 100k -t 5 bonzo.oct
351     .PP
352     Generate a global photon map containing 80000 photons, then precompute the
353     diffuse irradiance for 1/4 of these with a bandwidth of 40 photons:
354     .IP
355     mkpmap \-app bonzo-precomp.gpm 80k 40 \-apP 0.25 bonzo.oct
356     .PP
357     Generate 1 million global photons by emitting them from external light
358     sources of type \fIsource\fR into a reference room via a fenestration
359 rschregle 1.13 with modifier \fIglazingMat\fR acting as photon port, with inward-facing
360     normal:
361 greg 1.1 .IP
362     mkpmap \-apg refRoom.gpm 1m \-apo glazingMat refRoom.oct
363     .PP
364 rschregle 1.13 Generate a contribution photon map containing 10 million photons to bin
365     light source contributions with \fIrcontrib(1)\fR:
366 greg 1.1 .IP
367 rschregle 1.13 mkpmap \-apC bonzo-contrib.gpm 10m bonzo.oct
368 greg 1.1
369     .SH BUGS
370     The focus of a spotlight source, as defined by the length of its direction
371     vector, is ignored by the photon map; photons are unconditionally emitted
372     from the light source surface, which can lead to deviations from standard
373     RADIANCE.
374     .PP
375     Light sources simply absorb incoming photons.
376    
377     .SH AUTHOR
378     Roland Schregle (roland.schregle@{hslu.ch,gmail.com})
379    
380     .SH COPYRIGHT
381 rschregle 1.13 (c) Fraunhofer Institute for Solar Energy Systems,
382     .br
383     (c) Lucerne University of Applied Sciences and Arts,
384     .br
385     (c) Tokyo University of Science.
386    
387     .SH ACKNOWLEDGEMENTS
388     Development of the RADIANCE photon mapping extension was supported by:
389    
390     .RS
391     \fIFraunhofer Institute for Solar Energy Systems\fR funded by
392     the German Research Foundation (\fIDFG LU204/10-2\fR, "Fassadenintegrierte
393     Regelsysteme (FARESYS)"),
394    
395     \fILucerne University of Applied Sciences and Arts\fR funded by
396     the Swiss National Science Foundation (\fISNSF 147053\fR, "Daylight redirecting components"),
397    
398     \fITokyo University of Science\fR funded by the JSPS Grants-in-Aid for Scientific
399     Research Programme (\fIKAKENHI JP19KK0115\fR, "Three-dimensional light flow").
400     .RE
401 greg 1.1
402 rschregle 1.13 Many thanks also to the many individuals who tested the code and provided
403     valuable feedback. Special greetz to Don Gregorio, PAB and Capt.\~B!
404 greg 1.1
405     .SH "SEE ALSO"
406 rschregle 1.13 rpict(1), rtrace(1), rvu(1), rcontrib(1),
407     .br
408     \fIThe RADIANCE Photon Map Manual\fR,
409     .br
410     \fIDevelopment and Integration of the RADIANCE Photon Map Extension:
411     Technical Report\fR,
412     .br
413     \fIThe RADIANCE Out-of-Core Photon Map: Technical Report\fR,
414     .br
415     \fIBonzo Daylighting Tool a.k.a. EvilDRC [TM]\fR
416