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, 10 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

# Content
1 .\" 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
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 .IP "\fB\-apC \fIfile nphotons\fR"
61 Generate a contribution photon map containing approximately
62 \fInphotons\fR photons, and output to file \fIfile\fR. This may then be
63 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 .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 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
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 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 \fInphotons\fR with a very low average reflectance.
102
103 .IP "\fB\-api \fIxmin ymin zmin xmax ymax zmax\fR"
104 Define a region of interest within which to store photons exclusively;
105 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
115 .IP "\fB\-apm \fImaxbounce\fR"
116 Synonymous with \fB\-lr\fR for backwards compatibility. May be removed in
117 future releases.
118
119 .IP "\fB\-apM \fImaxprepass\fR"
120 Maximum number of iterations of the distribution prepass before terminating
121 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 incompatibility with the specified photon map types (see \fBNOTES\fR below).
124
125 .IP "\fB\-apo\fR[\fB+\fR|\fB-\fR|\fB0\fR] \fImod\fR"
126 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 aperture (e.g. fenestration, skylight) acting as a port.
132 .IP
133 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 .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 .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 .IP "\fB\-apr \fIseed\fR"
165 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
169 .IP "\fB\-aps \fImod\fR"
170 Specifies a modifier \fImod\fR defined as \fIantimatter\fR material to act
171 as a virtual (i.e. invisible) receiver surface. Photons will be deposited on
172 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 height with \fIrtrace\fR's \fB-I\fR option. Without this workaround,
178 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 Read virtual receiver surface modifiers from the file \fImodfile\fR as a more
186 convenient alternative to multiple instances of \fB\-aps\fR.
187
188 .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 .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 .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 .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 .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 This option is currently not available on Windows.
288
289 .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 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 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 .SS Virtual Receiver Surfaces
338 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 virtual receiver surface using the \fIantimatter\fR material; see the \fB-aps\fR
343 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 with modifier \fIglazingMat\fR acting as photon port, with inward-facing
360 normal:
361 .IP
362 mkpmap \-apg refRoom.gpm 1m \-apo glazingMat refRoom.oct
363 .PP
364 Generate a contribution photon map containing 10 million photons to bin
365 light source contributions with \fIrcontrib(1)\fR:
366 .IP
367 mkpmap \-apC bonzo-contrib.gpm 10m bonzo.oct
368
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 (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
402 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
405 .SH "SEE ALSO"
406 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