Repository navigation
Expand file tree
/
Copy pathhdr-photography.html
More file actions
503 lines (403 loc) · 211 KB
/
Copy pathhdr-photography.html
File metadata and controls
503 lines (403 loc) · 211 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
<!doctype html>
<!-- Generated from content/hdr-photography/ by the local content build. Edit the Markdown source. -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="ES1 course reader, Chapter 06: HDR photography. Luminance and illuminance, camera setup, exposure brackets, spot and illuminance measurements, calibration and validation, an iPhone workflow, a field checklist and a short self-test.">
<meta name="author" content="Timur Dogan">
<meta name="theme-color" content="#ffffff">
<title>HDR photography · ES1 Course Reader</title>
<link rel="icon" href="./assets/course-logo.png" type="image/png">
<script src="./src/theme.js"></script>
<link rel="stylesheet" href="./styles.css">
<link rel="stylesheet" href="./theme.css">
<link rel="stylesheet" href="./solar.css">
<link rel="stylesheet" href="./hdr.css">
<script defer src="./assets/hdr.bundle.js"></script>
</head>
<body>
<a class="skip-link" href="#main">Skip to chapter</a>
<div class="mobile-bar"><a href="#top" class="wordmark"><img class="course-logo" src="./assets/course-logo.png" alt="ES1" width="372" height="123"><span>Course reader</span></a><div class="mobile-actions"><button type="button" class="theme-toggle" data-theme-toggle aria-label="Switch to dark mode" aria-pressed="false"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 1 0 16Z" fill="currentColor" stroke="none"/></svg></button><button id="menu-toggle" aria-expanded="false" aria-controls="sidebar">Contents <span aria-hidden="true">☰</span></button></div></div>
<aside class="sidebar" id="sidebar" aria-label="Chapter navigation">
<a class="brand" href="#top"><img class="course-logo" src="./assets/course-logo.png" alt="ES1" width="372" height="123"><span class="brand-sub">ES1 / COURSE READER</span></a>
<p class="sidebar-intro">Environmental systems<br>as a design material.</p>
<div class="chapter-label">THE CHAPTERS</div><div class="course-chapters"><a href="./site-climate.html"><span>01</span>Site + climate</a><a href="./index.html"><span>02</span>Solar geometry</a><a href="./shadow-drawing.html"><span>03</span>Drawing shadows</a><a href="./sun-paths-shading.html"><span>04</span>Sun paths and shading</a><a href="./solar-radiation.html"><span>05</span>Solar radiation</a><a href="./hdr-photography.html" aria-current="page"><span>06</span>HDR photography</a><a href="./heat-transfer.html"><span>07</span>Heat transfer</a><a href="./heat-balance.html"><span>08</span>Heat balance</a><a href="./psychrometrics.html"><span>09</span>Psychrometrics</a></div>
<nav aria-label="On this page">
<a href="#light" class="active"><span>01</span>What the image measures</a>
<a href="#study"><span>02</span>Choose the study</a>
<a href="#setup"><span>03</span>Camera setup</a>
<a href="#brackets"><span>04</span>Exposure brackets</a>
<a href="#measure"><span>05</span>Reference readings</a>
<a href="#process"><span>06</span>Calibrate, validate</a>
<a href="#design"><span>07</span>Using HDR in design</a>
<a href="#iphone"><span>08</span>iPhone workflow</a>
<a href="#checklist"><span>09</span>Field checklist</a>
<a href="#quiz"><span>10</span>Mini quiz</a>
</nav>
<div class="sidebar-bottom"><button type="button" class="theme-toggle" data-theme-toggle aria-label="Switch to dark mode" aria-pressed="false"><span data-theme-label>Dark mode</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 1 0 16Z" fill="currentColor" stroke="none"/></svg></button><div class="reading-label"><span>Reading position</span><span id="progress-number">0%</span></div><div class="progress-track"><div id="reading-progress"></div></div><a href="./index.html#author">About the instructor <span aria-hidden="true">↗</span></a><a href="#figures">Figure files (SVG) <span aria-hidden="true">↗</span></a><a href="#references">Sources and further reading <span aria-hidden="true">↗</span></a><p>Environmental Systems I<br>Cornell AAP</p></div>
</aside>
<main id="main">
<header class="hero" id="top">
<div class="topline"><span>ENVIRONMENTAL SYSTEMS I</span><span>LUMINANCE · EXPOSURE · CALIBRATION · GLARE</span></div>
<div class="hero-heading"><div><p class="eyebrow">CHAPTER 06</p><h1>HDR photography<span class="title-dot">.</span></h1></div></div>
<p class="hero-lead">A calibrated photograph is a measuring instrument. It maps <b class="sym alt">luminance</b> across a whole view, so you can compare daylight designs, check a physical model or analyze glare from an occupant's position. This chapter covers camera setup, exposure brackets, the reference readings that give the image a physical scale, and the checks that tell you whether to trust it.</p>
<div class="hero-bottom"><p>Adapted from the <a href="https://lumisnap.io/guide.html" target="_blank" rel="noreferrer">LumiSnap field guide</a>. LumiSnap merges, calibrates and analyses the captures on desktop and iPhone; the method applies to any HDR tool. About 20 minutes. Section 07 turns the image into design evidence: seven design questions, each with its metric. A field checklist and a short quiz close the chapter.</p>
<a href="#light" class="text-link">Start <span aria-hidden="true">↓</span></a>
</div>
</header>
<noscript><p class="notice">The text, equations and figures work without JavaScript. Enable JavaScript for the exposure explorer and the quiz.</p></noscript>
<section id="light" class="reader-section">
<div class="section-heading"><span class="section-number">01</span><div><p class="eyebrow">FIRST PRINCIPLES</p><h2>Luminance and illuminance</h2></div></div>
<p class="section-lead">Think of a window lighting a desk. <b class="sym azi">Illuminance</b> describes how much light arrives at the desk. <b class="sym alt">Luminance</b> describes how bright the desk, the wall or the window is in a particular direction. A calibrated photograph maps luminance across the view.</p>
<dl class="defs">
<div><dt><b class="sym alt">Luminance L</b> · cd/m²</dt><dd>Light traveling from a surface or source toward the camera or eye. A spot luminance meter measures one small part of the view; a calibrated HDR records many directions at once.</dd></div>
<div><dt><b class="sym azi">Illuminance E</b> · lx</dt><dd>Light arriving on a plane. A lux meter on a desk faces up; at the eye it faces forward. The position and orientation are part of the measurement. <b class="sym azi">Ev</b> is the vertical illuminance at the eye.</dd></div>
<div><dt>Dynamic range</dt><dd>The ratio between the brightest and darkest values a scene or a sensor can hold. A daylit room with a view of the sky easily exceeds the range of a single exposure.</dd></div>
<div><dt>Clipping</dt><dd>A pixel whose signal has saturated. Its true value is unknown; it only says “at least this bright”.</dd></div>
</dl>
<!-- FIG:hdr-quantities_START -->
<figure class="fig" id="fig-hdr-quantities"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 440" class="diagram" role="img" aria-label="Illuminance on a desk and luminance of a wall seen by a camera"><title>Illuminance on a desk and luminance of a wall seen by a camera</title><defs><marker id="hq-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hq-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hq-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hq-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hq-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hq-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hq-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hq-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hq-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hq-room"><rect x="40" y="76" width="900" height="14" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="40" y="380" width="900" height="14" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="40" y="90" width="20" height="70" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="40" y="300" width="20" height="80" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="46" y="160" width="8" height="140" fill="url(#hq-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="920" y="90" width="20" height="290" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="190" y="292" width="260" height="9" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M200,298.75 Q200.27,340.44 200,382.12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M440,297.61 Q440,340.43 440,383.25" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="300" y="282" width="34" height="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M326,282 A9,9 0 0 0 308,282" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></g><g id="hq-illuminance"><line x1="14" y1="160" x2="300" y2="276" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-azi)"/><line x1="14" y1="196" x2="316" y2="270" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-azi)"/><line x1="14" y1="232" x2="330" y2="276" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-azi)"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="140" y="132" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">ILLUMINANCE E [lx]</text><text x="140" y="150" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Light arriving on a plane,</text><text x="140" y="166" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">from every direction above it.</text><text x="210" y="330" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">Lux sensor on the desk,</text><text x="210" y="345" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">diffuser facing up.</text></g><g id="hq-luminance"><rect x="618" y="207" width="34" height="26" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="652" y="211" width="9" height="18" fill="url(#hq-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M635.41,232.22 Q618.06,307.16 600.52,382.06" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M635,232.84 Q635.09,307.35 635,381.87" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M634.5,231.84 Q651.94,306.34 669.21,380.88" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="913" y="170" width="7" height="70" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><line x1="910" y1="178" x2="669" y2="216.76" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-alt)"/><line x1="910" y1="205" x2="669" y2="220" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-alt)"/><line x1="910" y1="232" x2="669" y2="223.24" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hq-arrow-alt)"/><line x1="661" y1="220" x2="912" y2="112" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="4 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="661" y1="220" x2="912" y2="330" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="4 4" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="700" y="132" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">LUMINANCE L [cd/m²]</text><text x="700" y="150" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Light leaving one surface</text><text x="700" y="166" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">toward the lens or the eye.</text><text x="680" y="300" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">A calibrated HDR records L</text><text x="680" y="315" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">for every pixel of the view.</text></g><g id="hq-note"><text x="40" y="425" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">The same daylight gives one E on the desk, but a different L for each surface, depending on its reflectance and the direction of view.</text></g></g></svg></div><figcaption><span><strong>Figure 1.</strong> Illuminance arrives at a plane; luminance leaves a surface toward the eye</span><a href="./assets/diagrams/hdr/hdr-quantities.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-quantities_END -->
<h3 class="sub">High dynamic range imaging</h3>
<p class="measure">A camera sensor has a limited usable range: weak signals disappear into noise, while strong signals saturate, or <em>clip</em>. One photograph may preserve the room but lose the window, or preserve the window but lose the room. A bracket records the same scene at several exposure times. The merge combines the useful parts into a <strong>high dynamic range (HDR)</strong> image.</p>
<p class="measure">A <strong>linear HDR</strong> preserves ratios: twice the value represents twice the light signal. Calibration gives that signal a physical scale. A screen preview compresses the range to make it visible; a false-color view assigns colors to numbers. Neither a pleasing preview nor a phone's ordinary “HDR photo” proves that the data are calibrated. Keep the numerical Radiance HDR as well as any presentation images [1].</p>
</section>
<section id="study" class="reader-section">
<div class="section-heading"><span class="section-number">02</span><div><p class="eyebrow">STUDY AND VIEW SELECTION</p><h2>Choose the study</h2></div></div>
<p class="section-lead">The question decides the lens, the position and the measurements. Decide it before you set up the tripod.</p>
<div class="study-grid"><article><p class="control-kicker">DAYLIGHT AND MODEL STUDIES</p>
<p class="measure">Compare light distribution on ceilings, walls and work surfaces, or test a shading or rooflight design. A normal lens can document a selected area. Keep the camera view and false-color legend consistent between alternatives.</p>
<p class="measure">In a physical model, put the lens at the equivalent occupant position. Document materials, glazing, model scale and sky conditions, and keep the camera from blocking openings. Lux readings on a workplane answer a different question from surface luminances in the image.</p>
</article>
<article><p class="control-kicker">GLARE FROM AN OCCUPANT'S VIEW</p>
<p class="measure"><strong>The glare workflow requires a fisheye lens and a complete 180° hemispheric view.</strong> Put the lens at the observer's eye position and aim along the intended gaze direction. A narrow image omits light sources and changes their apparent sizes and positions.</p>
<p class="measure">A standard iPhone Ultra Wide lens is not a 180° fisheye. Phone captures remain useful for luminance studies; use a characterized fisheye setup for glare. An add-on lens also needs its projection, field of view and vignetting checked.</p>
</article>
</div>
<ul class="facts">
<li><strong>DGP</strong> (Daylight Glare Probability) assesses discomfort from a daylit view. <strong>UGR</strong> (Unified Glare Rating) is primarily an electric-lighting metric. Interpret each within its intended application.</li>
<li>Section 07 pairs each design question with its metric: glare, perceived brightness, contrast, change over time, reflectance, model validation and eye illuminance.</li>
<li>A single view at one time does not describe a room's annual daylight performance. Combine it with the climate-based metrics and the sun-path studies of <a href="./sun-paths-shading.html">Chapter 04</a>.</li>
<li>A separately calibrated <strong>sky capture</strong> can provide input to a daylight simulation. It needs the sky hemisphere, orientation and a treatment of the sun; an interior photograph alone is not an annual sky model [5].</li>
</ul>
</section>
<section id="setup" class="reader-section">
<div class="section-heading"><span class="section-number">03</span><div><p class="eyebrow">THE FIELD SETUP</p><h2>Camera setup and position</h2></div></div>
<p class="section-lead">Bring a tripod, a remote release or timer, a matte neutral target and a calibrated spot luminance meter. A separate illuminance meter is strongly recommended for validation. For glare, add a fisheye that covers the full forward hemisphere on your camera's sensor.</p>
<!-- FIG:hdr-capture-setup_START -->
<figure class="fig" id="fig-hdr-capture-setup"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 510" class="diagram" role="img" aria-label="Camera setup for a lighting study, in plan and section"><title>Camera setup for a lighting study, in plan and section</title><defs><marker id="hcs-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hcs-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hcs-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hcs-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hcs-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hcs-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hcs-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hcs-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hcs-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hcs-plan"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · PLAN: THE VIEW IN FRONT OF THE OBSERVER</text><rect x="60" y="70" width="400" height="14" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="160" y="70" width="200" height="14" fill="url(#hcs-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="60" y="84" width="14" height="330" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="446" y="84" width="14" height="330" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="60" y="414" width="400" height="14" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M90,330 A170,170 0 0 1 430,330 Z" fill="url(#hcs-hatch-screen)" stroke="none"/><path d="M90,330 A170,170 0 0 1 430,330" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-dasharray="7 5" stroke-linecap="round" stroke-linejoin="round"/><line x1="90" y1="330" x2="430" y2="330" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="4 4" stroke-linecap="round" stroke-linejoin="round"/><rect x="242" y="324" width="36" height="26" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="260" cy="324" r="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><line x1="260" y1="308" x2="260" y2="190" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hcs-arrow-ink)"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="268" y="214" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">view direction</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="260" y="372" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">Lens at the observer position</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="260" y="388" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">180° in plan; the full forward hemisphere in 3D</text><circle cx="120" cy="240" r="13" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="120" y="274" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle">matte target</text><text x="260" y="104" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle" font-weight="700" letter-spacing="1.2">WINDOW</text></g><g id="hcs-section"><text x="540" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · SECTION: THE LENS AT EYE HEIGHT</text><rect x="540" y="414" width="420" height="14" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="540" y="70" width="420" height="14" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="946" y="84" width="14" height="110" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="946" y="300" width="14" height="114" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="950" y="194" width="6" height="106" fill="url(#hcs-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="678" y="281" width="34" height="26" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="712" y="285" width="9" height="18" fill="url(#hcs-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M695.48,306.5 Q678.17,361.12 660.48,415.62" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M695,305.95 Q695.19,360.86 695,415.77" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M694.43,306.23 Q712.17,360.88 729.53,415.65" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="721" y1="294" x2="930" y2="294" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hcs-arrow-ink)"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="800" y="284" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">level axis</text><rect x="722" y="312" width="6" height="22" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><line x1="725" y1="334" x2="712" y2="348" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="740" y="328" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">Lux sensor: same position,</text><text x="740" y="343" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">vertical, facing the view</text><line x1="600" y1="414" x2="600" y2="294" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hcs-arrow-alt)"/><line x1="592" y1="294" x2="608" y2="294" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="608" y="358" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" font-weight="600">eye height</text><text x="556" y="120" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Use the real eye height:</text><text x="556" y="136" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">about 1.2 m seated, 1.6 m standing.</text><text x="556" y="152" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Record it with the capture.</text></g><g id="hcs-note"><text x="40" y="468" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Keep the operator behind the lens during capture. Record location, date, time, view direction and sky conditions.</text><text x="40" y="486" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">In a scale model, place the lens at the equivalent eye position and keep the camera opening from blocking daylight.</text></g></g></svg></div><figcaption><span><strong>Figure 2.</strong> Camera position and view direction, in plan and section</span><a href="./assets/diagrams/hdr/hdr-capture-setup.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-capture-setup_END -->
<div class="table-wrap"><table class="nomenclature hdr-table"><caption>Camera controls: what to fix, and why</caption><thead><tr><th scope="col">Control</th><th scope="col">Practical starting point</th><th scope="col">Why it matters</th></tr></thead><tbody>
<tr><th scope="row">Shutter time</th><td>Change it for each exposure.</td><td>A longer exposure collects more light without changing the lens geometry.</td></tr>
<tr><th scope="row">Aperture (f-number)</th><td>Fix it for the whole bracket. On an interchangeable-lens camera, f/8 is a starting point to test, not a universal optimum.</td><td>Aperture affects depth of field, vignetting and flare. Use corrections measured at the aperture you actually choose.</td></tr>
<tr><th scope="row">ISO</th><td>A fixed, low native ISO, often 100, when the setup permits.</td><td>ISO changes signal gain; it does not collect more photons. More gain can reduce highlight headroom.</td></tr>
<tr><th scope="row">Focus, white balance</th><td>Focus once and lock it. Use a fixed white balance.</td><td>Refocusing and changing color processing make exposures harder to combine consistently.</td></tr>
<tr><th scope="row">Image processing</th><td>For JPEGs, use consistent settings; disable automatic contrast, HDR, local tone changes and automatic lens corrections.</td><td>A global response curve cannot undo changing local edits. Keep JPEG picture settings tied to their response calibration.</td></tr>
</tbody></table>
</div>
<p class="measure"><strong>RAW or JPEG.</strong> RAW stores sensor data before most of the camera's picture processing. Bayer sensors sample red, green and blue through a filter mosaic; software reconstructs a color image. RAW still needs correct black-level, exposure and color handling, followed by physical validation. JPEG has already been processed and compressed, so its nonlinear brightness response must be accounted for [1].</p>
<p class="measure"><strong>On iPhone,</strong> LumiSnap manages adaptive Bayer RAW brackets on supported devices and lenses. Most phone lenses have a fixed aperture. Stabilize the phone, keep one supported lens, and inspect the saved coverage view after capture (<a href="#iphone">Section 08</a>). LumiSnap Desktop merges camera JPEG brackets; it does not develop arbitrary camera RAW files.</p>
</section>
<section id="brackets" class="reader-section">
<div class="section-heading"><span class="section-number">04</span><div><p class="eyebrow">THE CAPTURE STRATEGY · EQ. 6.1</p><h2>Exposure brackets</h2></div></div>
<p class="section-lead">One exposure stop (1 EV) doubles or halves the collected light. At fixed aperture and ISO, 1/30 s collects about twice as much as 1/60 s. Start with overlapping exposures roughly 1–2 stops apart, then extend the range to suit the scene. The number of frames is a consequence of coverage, not a target.</p>
<div class="eq" id="eq-6-1"><span class="eq-math"><span class="eq-line"><span class="eq-label">stops between two exposures, same aperture and ISO</span><math><mi mathvariant="normal">Δ</mi><mo>=</mo><msub><mi>log</mi><mn>2</mn></msub><mo lspace="0" rspace="0.1667em">⁡</mo><mrow><mo>(</mo><mfrac><msub><mi>t</mi><mtext>long</mtext></msub><msub><mi>t</mi><mtext>short</mtext></msub></mfrac><mo>)</mo></mrow></math><span class="eq-unit">stops</span><span class="eq-note">t = shutter time in s</span></span></span><span class="eq-n">(6.1)</span></div>
<!-- FIG:hdr-exposure-overlap_START -->
<figure class="fig" id="fig-hdr-exposure-overlap"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 465" class="diagram" role="img" aria-label="Exposure bracket: overlapping usable ranges merge into one linear HDR"><title>Exposure bracket: overlapping usable ranges merge into one linear HDR</title><defs><marker id="hex-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hex-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hex-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hex-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hex-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hex-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hex-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hex-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hex-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hex-axis"><line x1="230" y1="72" x2="940" y2="72" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hex-arrow-ink)"/><text x="230" y="60" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">darker surfaces</text><text x="930" y="60" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">brighter sources</text><text x="580" y="60" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">scene luminance, log scale</text><path d="M230,66.38 Q230,71.77 230,77.16" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M300,65.69 Q300.03,71.44 300,77.18" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M370,66.74 Q370.01,71.97 370,77.19" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M440,66.59 Q440.01,72.29 440,77.98" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M510,65.8 Q510,71.36 510,76.92" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M580,66.67 Q579.98,72.11 580,77.55" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M650,66.06 Q650.03,72.12 650,78.18" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M720,66.88 Q720.03,72.01 720,77.13" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M790,65.93 Q790.02,71.82 790,77.71" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M860,66.05 Q860,71.95 860,77.85" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M930,66.52 Q929.98,72.02 930,77.51" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></g><g id="hex-exposures"><text x="40" y="123" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">Long exposure</text><text x="40" y="139" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">e.g. 1/30 s</text><rect x="230" y="110" width="290" height="30" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="375" y="130" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">usable signal</text><rect x="520" y="110" width="410" height="30" fill="url(#hex-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="40" y="193" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">Middle exposure</text><text x="40" y="209" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">e.g. 1/125 s · 2 stops shorter</text><rect x="230" y="180" width="140" height="30" fill="url(#hex-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="370" y="180" width="320" height="30" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="530" y="200" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">usable signal</text><rect x="690" y="180" width="240" height="30" fill="url(#hex-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="40" y="263" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">Short exposure</text><text x="40" y="279" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">e.g. 1/500 s · 2 stops shorter</text><rect x="230" y="250" width="310" height="30" fill="url(#hex-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="540" y="250" width="320" height="30" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="700" y="270" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">usable signal</text><rect x="860" y="250" width="70" height="30" fill="url(#hex-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><line x1="370" y1="142" x2="370" y2="178" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"/><line x1="520" y1="142" x2="520" y2="178" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="445" y="165" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="middle" font-weight="600">overlap</text><line x1="540" y1="212" x2="540" y2="248" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"/><line x1="690" y1="212" x2="690" y2="248" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="615" y="235" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="middle" font-weight="600">overlap</text></g><g id="hex-merge"><text x="40" y="353" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">Merged HDR</text><text x="40" y="369" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">one linear image</text><rect x="230" y="340" width="630" height="30" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="545" y="360" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle" font-weight="600">ratios preserved → calibrate to cd/m²</text><rect x="860" y="340" width="70" height="30" fill="url(#hex-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><line x1="895" y1="340" x2="895" y2="312" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="895" y="304" font-size="10.5" style="--fs:10.5" fill="light-dark(#b13d4c, #ff9daa)" text-anchor="end" font-weight="600">clipped in every frame: unknown</text></g><g id="hex-key"><rect x="40" y="404" width="26" height="14" fill="url(#hex-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="74" y="415" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">below the noise floor</text><rect x="250" y="404" width="26" height="14" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="284" y="415" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">usable signal</text><rect x="460" y="404" width="26" height="14" fill="url(#hex-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="494" y="415" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">clipped (saturated)</text><text x="40" y="448" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Conceptual ranges. Each important area needs one frame above noise and below clipping; the frame count follows from coverage.</text></g></g></svg></div><figcaption><span><strong>Figure 3.</strong> Overlapping exposures merge into one linear HDR</span><a href="./assets/diagrams/hdr/hdr-exposure-overlap.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-exposure-overlap_END -->
<ol class="facts">
<li><strong>Check the short exposure.</strong> Important bright sources must remain below clipping in every color channel in at least one frame. Inspect source pixels and coverage, not just the overall histogram.</li>
<li><strong>Check the long exposure.</strong> Dark surfaces you intend to measure need usable signal above noise. Keep enough intermediate frames to overlap.</li>
<li><strong>Watch the scene.</strong> Clouds, moving blinds, flickering lights and people break the assumption that only the exposure changed. Capture promptly and repeat if conditions change.</li>
</ol>
<h3 class="sub">Explore a real fisheye bracket</h3>
<p class="measure">These are JPEGs from a lecture-hall capture: Canon EOS 6D Mark II, 8 mm fisheye, f/4, ISO 200. The 11 frames run from 1.3 s to 1/50 s, about six stops between the endpoints (Eq. 6.1: log₂(1.3 / 0.02) ≈ 6.02), with uneven spacing. They span about a minute. Use it as an example to inspect, not as a recommended bracket or a certified measurement.</p>
<div class="lab lab-wide is-interactive exposure-lab" id="exposure-explorer" hidden>
<div class="lab-canvas"><div class="canvas-heading"><span class="small-label">ELEVEN ORIGINAL EXPOSURES</span><span class="small-label" id="exposure-position" aria-live="polite">5 / 11</span></div>
<figure class="exposure-frame"><img id="exposure-image" src="./assets/hdr/fisheye-0422.webp" alt="Example fisheye exposure IMG_0422.JPG at 1/4 s" width="1200" height="800" loading="lazy"><figcaption><span id="exposure-label">IMG_0422.JPG · 1/4 s · f/4 · ISO 200</span><span id="exposure-stops"></span></figcaption></figure>
<div class="diagram-inputs"><p class="inputs-label">INPUTS</p><div class="input-wide"><label for="exposure-range">Shutter time, long to short</label><input id="exposure-range" type="range" min="0" max="10" value="4" step="1" aria-describedby="exposure-help"><div class="range-ends"><span>longer · brighter</span><span>shorter · darker</span></div></div><p id="exposure-help" class="control-note input-wide">Use the arrow keys or drag. Compare the front desks with the ceiling lights, and look for people who move between frames.</p></div>
</div>
</div>
<div class="bracket-contact"><figure><img src="./assets/hdr/fisheye-0418.webp" alt="Long exposure: front desks are bright and some highlight detail is lost" width="1200" height="800" loading="lazy">
<figcaption>1.3 s · room detail</figcaption>
</figure>
<figure><img src="./assets/hdr/fisheye-0422.webp" alt="Middle exposure with darker desks and ceiling" width="1200" height="800" loading="lazy">
<figcaption>1/4 s · intermediate overlap</figcaption>
</figure>
<figure><img src="./assets/hdr/fisheye-0428.webp" alt="Short exposure preserving more detail near the bright ceiling lights" width="1200" height="800" loading="lazy">
<figcaption>1/50 s · highlight check</figcaption>
</figure>
</div>
<div class="callout"><span>LIMIT</span>
<p class="measure"><strong>HDR cannot repair missing measurements.</strong> A source clipped in every exposure remains unknown. Direct sun and strong reflections can exceed an ordinary bracket's range; they can also create flare that spreads light across the image. A characterized neutral-density filter can help capture brighter sources, but it changes transmission and color and needs its own correction. A darker-looking preview does not show that the sun is measured [2, 3].</p>
</div>
</section>
<section id="measure" class="reader-section">
<div class="section-heading"><span class="section-number">05</span><div><p class="eyebrow">MEASURE WHILE YOU CAPTURE · EQ. 6.2</p><h2>Reference readings</h2></div></div>
<p class="section-lead">Recognize the sensor, check the unit, then choose how to position it. <strong>A white diffuser is placed</strong> where you want to measure arriving light: an illuminance meter reads lux. <strong>A lens and viewfinder are aimed</strong> at the surface you want to measure: a spot luminance meter reads cd/m².</p>
<!-- FIG:hdr-meters_START -->
<figure class="fig" id="fig-hdr-meters"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 990 515" class="diagram" role="img" aria-label="An illuminance meter reads lux on a plane; a spot luminance meter reads cd/m² from a patch"><title>An illuminance meter reads lux on a plane; a spot luminance meter reads cd/m² from a patch</title><defs><marker id="hm-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hm-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hm-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hm-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hm-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hm-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hm-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hm-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hm-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hm-illuminance-meter"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · ILLUMINANCE METER</text><text x="40" y="56" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">e.g. Konica Minolta T-10A</text><text x="40" y="96" font-size="34" style="--fs:34" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">lx</text><rect x="208" y="150" width="84" height="170" rx="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="250" cy="136" r="38" fill="url(#hm-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="250" cy="136" r="24" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="218" y="180" width="64" height="40" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="260" y="207" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">500</text><text x="264" y="207" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)">lx</text><rect x="224" y="232" width="14" height="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="244" y="232" width="14" height="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="264" y="232" width="14" height="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="218" y="252" width="64" height="22" fill="url(#hm-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M148.03,119.7 Q188.5,125.68 228.89,132.14" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="60" y="112" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">white diffuser</text><text x="60" y="127" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">collects light</text><path d="M148.31,200 Q183.01,199.76 217.71,200" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="60" y="204" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">reads lux</text><text x="308" y="170" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">no viewfinder</text><text x="40" y="360" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700" letter-spacing="1">LIGHT ARRIVING AT A PLANE</text><text x="40" y="380" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">How much light reaches this position?</text><text x="40" y="398" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">PLACE the sensor on the measurement plane:</text><text x="40" y="416" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">· desk: diffuser faces up</text><text x="40" y="434" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">· eye plane: diffuser faces the view direction</text><text x="40" y="452" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Use: workplane E or eye illuminance Ev.</text></g><g id="hm-luminance-meter"><text x="520" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · SPOT LUMINANCE METER</text><text x="520" y="56" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">e.g. Konica Minolta LS-150</text><text x="520" y="96" font-size="34" style="--fs:34" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">cd/m²</text><g transform="translate(640 110)"><path d="M 0 0 H 148 Q 179 0 179 28 V 96 Q 179 122 153 125 L 116 128 L 99 239 H 47 L 59 129 H 7 Q -17 129 -17 105 V 25 Q -17 0 0 0 Z" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="-41" y="38" width="25" height="43" fill="url(#hm-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="178" y="15" width="62" height="96" fill="url(#hm-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="212" y="15" width="28" height="96" fill="url(#hm-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="20" y="42" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">LS-150</text><path d="M5.64,57 Q79.09,56.5 152.53,57" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M57.98,211 Q76.11,211.04 94.25,211" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/></g><path d="M568.74,223.03 Q587.23,207.78 605.75,192.56" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="520" y="238" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">viewfinder: look here</text><path d="M850,106.93 Q850.01,115.89 850,124.86" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="850" y="100" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">lens: aim at a patch</text><line x1="880" y1="170" x2="960" y2="160" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="880" y1="170" x2="960" y2="180" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="958" y="205" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="end" font-weight="600">1° spot</text><rect x="800" y="270" width="120" height="46" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="866" y="300" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">150</text><text x="870" y="300" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)">cd/m²</text><text x="800" y="332" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">rear display (example)</text><text x="520" y="360" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" font-weight="700" letter-spacing="1">LIGHT FROM A SELECTED PATCH</text><text x="520" y="380" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">How bright is that surface from here?</text><text x="520" y="398" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">AIM the lens through the viewfinder:</text><text x="520" y="416" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">· keep the central circle on one patch</text><text x="520" y="434" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">· the spot is 1°, not the whole viewfinder</text><text x="520" y="452" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Use: spot readings for HDR calibration.</text></g><g id="hm-divider"><line x1="490" y1="24" x2="490" y2="470" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/></g><g id="hm-note"><text x="40" y="500" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Only cd/m² spot readings belong in an HDR calibration. Simplified drawings; the display values are examples, not a lux-to-cd/m² conversion.</text></g></g></svg></div><figcaption><span><strong>Figure 4.</strong> Illuminance meter and spot luminance meter</span><a href="./assets/diagrams/hdr/hdr-meters.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-meters_END -->
<!-- FIG:hdr-methods_START -->
<figure class="fig" id="fig-hdr-methods"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 990 425" class="diagram" role="img" aria-label="Three measurements: spot luminance, eye illuminance and workplane illuminance"><title>Three measurements: spot luminance, eye illuminance and workplane illuminance</title><defs><marker id="hmm-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hmm-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hmm-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hmm-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hmm-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hmm-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hmm-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hmm-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hmm-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hmm-spot-luminance"><text x="30" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · SPOT LUMINANCE</text><text x="30" y="64" font-size="20" style="--fs:20" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">L cd/m²</text><text x="30" y="290" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Aim from near the lens position.</text><text x="30" y="308" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Keep the whole spot inside one</text><text x="30" y="326" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">uniform matte surface. Repeat</text><text x="30" y="344" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">on several targets.</text><text x="30" y="372" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" font-weight="600">Sets the image scale.</text><rect x="40" y="130" width="46" height="24" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="86" y="134" width="14" height="16" fill="url(#hmm-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M60,152.51 Q59.87,202.1 60,251.7" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="100,142 250,124 250,160" fill="light-dark(#ffffff, #202124)" stroke="none"/><polygon points="100,142 250,124 250,160" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="250" y="100" width="18" height="84" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><rect x="268" y="80" width="10" height="170" fill="url(#hmm-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="250" y="205" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="end">matte target</text></g><g id="hmm-eye-illuminance"><text x="350" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · EYE ILLUMINANCE</text><text x="350" y="64" font-size="20" style="--fs:20" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">Ev lx</text><text x="350" y="290" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Sensor vertical at the lens, facing</text><text x="350" y="308" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">the view direction. Do not shade</text><text x="350" y="326" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">it. Read before and after the</text><text x="350" y="344" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">bracket.</text><text x="350" y="372" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="600">Checks the hemispheric total.</text><rect x="430" y="120" width="9" height="50" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M434,167.79 Q433.84,209.42 434,251.06" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="600" y1="90" x2="446" y2="128.5" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/><line x1="620" y1="145" x2="446" y2="145" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/><line x1="600" y1="200" x2="446" y2="161.5" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="560" y="80" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)" text-anchor="middle">incoming light</text></g><g id="hmm-workplane-illuminance"><text x="670" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">C · WORKPLANE ILLUMINANCE</text><text x="670" y="64" font-size="20" style="--fs:20" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">E lx</text><text x="670" y="290" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Sensor horizontal, facing up, on</text><text x="670" y="308" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">a documented grid at the desk or</text><text x="670" y="326" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">model workplane. Record its</text><text x="670" y="344" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">height and positions.</text><text x="670" y="372" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="600">Tests daylight reaching the task.</text><rect x="690" y="200" width="260" height="8" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M700,205.81 Q700.01,229.35 700,252.89" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M940,205.23 Q939.91,228.72 940,252.22" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="800" y="191" width="40" height="9" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="760" y1="100" x2="812.8" y2="186" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/><line x1="820" y1="90" x2="820" y2="186" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/><line x1="880" y1="100" x2="827.2" y2="186" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hmm-arrow-azi)"/></g><g id="hmm-ground"><path d="M25.91,250 Q164.73,249.87 303.55,250" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><path d="M348.26,250 Q490.24,250.57 632.22,250" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><path d="M667.04,250 Q815.43,250.19 963.83,250" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><line x1="325" y1="24" x2="325" y2="380" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="650" y1="24" x2="650" y2="380" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/></g><g id="hmm-note"><text x="30" y="412" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">A lux reading cannot go into a cd/m² calibration field. Match each reading to its image, position, orientation and time.</text></g></g></svg></div><figcaption><span><strong>Figure 5.</strong> Three measurements, three questions</span><a href="./assets/diagrams/hdr/hdr-methods.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-methods_END -->
<h3 class="sub">A · Spot luminance: set the image scale</h3>
<p class="measure">Measure several matte, evenly lit patches visible in the image, covering darker and brighter surfaces. Aim from near the camera position and record exactly which patch you measured. Avoid glossy surfaces, edges, shadows and clipped areas. A gray card is convenient, but “18% gray” does not specify its luminance: you still need the meter reading.</p>
<p class="measure">The target must fill the meter's acceptance cone. For a meter with acceptance angle θ at distance D, the measured spot has the diameter:</p>
<div class="eq" id="eq-6-2"><span class="eq-math"><span class="eq-line"><span class="eq-label">diameter of the measured spot</span><math><mi>d</mi><mo>=</mo><mn>2</mn><mi>D</mi><mo>·</mo><mrow><mi>tan</mi><mo lspace="0" rspace="0.1667em">⁡</mo><mrow><mo>(</mo><mfrac><mi>θ</mi><mn>2</mn></mfrac><mo>)</mo></mrow></mrow></math><span class="eq-note">1° at 3 m → d ≈ 5.2 cm</span></span></span><span class="eq-n">(6.2)</span></div>
<p class="measure">Use a uniform patch clearly larger than <em>d</em>. In LumiSnap Desktop, choose the matching meter angle; on iPhone, choose an image sampling region contained in the same patch. Take repeat readings and reserve at least one target as an independent check.</p>
<!-- FIG:hdr-calibration-targets_START -->
<figure class="fig" id="fig-hdr-calibration-targets"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 640" class="diagram" role="img" aria-label="Portrait capture with five spot-luminance targets"><title>Portrait capture with five spot-luminance targets</title><defs><marker id="hcal-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hcal-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hcal-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hcal-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hcal-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hcal-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hcal-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hcal-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hcal-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hcal-photo"><image x="30" y="40" width="380" height="569.6" href="./assets/hdr/portrait-2043.webp" preserveAspectRatio="xMidYMid slice"/><rect x="30" y="40" width="380" height="569.58" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></g><g id="hcal-targets"><circle cx="175.9" cy="492.8" r="12" fill="none" stroke="#ffffff" stroke-width="4"/><circle cx="175.92" cy="492.81" r="12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="197.9" cy="478.8" r="11" fill="#ffffff" stroke="#26333e" stroke-width="1.2"/><text x="197.9" y="482.8" font-size="12" font-weight="700" fill="#26333e" text-anchor="middle">A</text><circle cx="57.4" cy="441.6" r="12" fill="none" stroke="#ffffff" stroke-width="4"/><circle cx="57.36" cy="441.55" r="12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="79.4" cy="427.6" r="11" fill="#ffffff" stroke="#26333e" stroke-width="1.2"/><text x="79.4" y="431.6" font-size="12" font-weight="700" fill="#26333e" text-anchor="middle">B</text><circle cx="153.9" cy="351.0" r="12" fill="none" stroke="#ffffff" stroke-width="4"/><circle cx="153.88" cy="350.99" r="12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="175.9" cy="337.0" r="11" fill="#ffffff" stroke="#26333e" stroke-width="1.2"/><text x="175.9" y="341.0" font-size="12" font-weight="700" fill="#26333e" text-anchor="middle">C</text><circle cx="207.1" cy="348.1" r="12" fill="none" stroke="#ffffff" stroke-width="4"/><circle cx="207.08" cy="348.14" r="12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="229.1" cy="334.1" r="11" fill="#ffffff" stroke="#26333e" stroke-width="1.2"/><text x="229.1" y="338.1" font-size="12" font-weight="700" fill="#26333e" text-anchor="middle">D</text><circle cx="283.1" cy="110.1" r="12" fill="none" stroke="#ffffff" stroke-width="4"/><circle cx="283.08" cy="110.06" r="12" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="305.1" cy="96.1" r="11" fill="#ffffff" stroke="#26333e" stroke-width="1.2"/><text x="305.1" y="100.1" font-size="12" font-weight="700" fill="#26333e" text-anchor="middle">E</text></g><g id="hcal-readings"><text x="460" y="52" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">SPOT READINGS, SAME CAPTURE</text><line x1="460" y1="68" x2="960" y2="68" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="96" font-size="22" style="--fs:22" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">A</text><text x="500" y="90" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">67 cd/m²</text><text x="500" y="108" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">timber floor</text><line x1="460" y1="124" x2="960" y2="124" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="152" font-size="22" style="--fs:22" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">B</text><text x="500" y="146" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">165 cd/m²</text><text x="500" y="164" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">timber floor</text><line x1="460" y1="180" x2="960" y2="180" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="208" font-size="22" style="--fs:22" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">C</text><text x="500" y="202" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">77 cd/m²</text><text x="500" y="220" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">painted wall</text><line x1="460" y1="236" x2="960" y2="236" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="264" font-size="22" style="--fs:22" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">D</text><text x="500" y="258" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">415 cd/m²</text><text x="500" y="276" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">painted wall</text><line x1="460" y1="292" x2="960" y2="292" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="320" font-size="22" style="--fs:22" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">E</text><text x="500" y="314" font-size="16" style="--fs:16" fill="light-dark(#26333e, #edf4fa)" font-weight="700">65 cd/m²</text><text x="500" y="332" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">ceiling panel</text><line x1="460" y1="348" x2="960" y2="348" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="460" y="390" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Choose matte, evenly lit patches that the meter spot fills.</text><text x="460" y="408" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Cover darker and brighter surfaces (here 65–415 cd/m²).</text><text x="460" y="426" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Avoid edges, gloss, shadows and clipped pixels.</text><text x="460" y="444" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Keep one target out of the fit as an independent check.</text><text x="460" y="486" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Course notes: Oct 5, 2026, 4:30 pm. Photo EXIF: 4:45:53 pm.</text><text x="460" y="504" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">The times differ, so these readings illustrate target</text><text x="460" y="522" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">selection; they are not a validated calibration of this frame.</text><text x="460" y="540" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Marker positions are approximate.</text></g></g></svg></div><figcaption><span><strong>Figure 6.</strong> Spot targets on the supplied portrait capture (ARCH 5611 course readings)</span><a href="./assets/diagrams/hdr/hdr-calibration-targets.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-calibration-targets_END -->
<h3 class="sub">B · Vertical illuminance: check the whole view</h3>
<p class="measure">Place a cosine-corrected lux sensor at the lens position, vertical and facing along the camera axis for a level view. Measure before and after the bracket without shading it. This records <b class="sym azi">Ev</b>, the illuminance arriving on the eye plane. Compare it with the illuminance integrated from the corrected hemispheric HDR; a narrow view misses part of that total. Before and after readings also reveal changing daylight; if conditions change appreciably, repeat the sequence [2].</p>
<h3 class="sub">C · Workplane illuminance: test the design</h3>
<p class="measure">For a desk or physical daylight model, place the lux sensor horizontally, facing up, on a documented grid at the intended workplane. This measures light reaching the task. It does not replace a spot luminance reference or a vertical eye-plane reading. There is no universal lux-to-cd/m² conversion: even the ideal diffuse-surface relationship depends on reflectance.</p>
<details class="math-details"><summary>What to measure once per setup, and once per capture</summary><p class="measure"><strong>Characterize the camera and lens:</strong> JPEG response, usable luminous range, projection, field of view, image circle and vignetting. Vignetting is the lens's gradual darkening toward the edge. Under stable controlled lighting, a lab can track the same target at different off-axis positions by rotating the camera about the lens's entrance pupil; the measured fall-off gives a correction for that lens and aperture. Recheck after changing relevant settings, filters or equipment.</p>
<p class="measure"><strong>For each scene:</strong> record the spot readings, before and after Ev, timestamps and view, together with clipping and movement checks. Workplane readings are additional evidence for a daylight study. A global scale factor cannot correct spatially varying lens fall-off, flare or missing highlights [1, 2, 4].</p>
</details>
</section>
<section id="process" class="reader-section">
<div class="section-heading"><span class="section-number">06</span><div><p class="eyebrow">IMAGE PROCESSING AND VALIDATION · EQ. 6.3–6.4</p><h2>Calibrate and validate</h2></div></div>
<p class="section-lead">Merge, correct the lens, scale to the spot readings, then test the result against measurements that were not used to make it. Only then interpret the image.</p>
<!-- FIG:hdr-workflow_START -->
<figure class="fig" id="fig-hdr-workflow"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 990 515" class="diagram" role="img" aria-label="Processing and validation workflow for a calibrated HDR"><title>Processing and validation workflow for a calibrated HDR</title><defs><marker id="hwf-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="hwf-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="hwf-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="hwf-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="hwf-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="hwf-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="hwf-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hwf-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="hwf-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="hwf-workflow"><rect x="30" y="30" width="280" height="132" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="46" y="58" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">1 · MERGE</text><text x="46" y="84" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Read the exposure metadata.</text><text x="46" y="102" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Align the frames; undo the</text><text x="46" y="120" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">JPEG response curve.</text><rect x="355" y="30" width="280" height="132" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="371" y="58" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">2 · LENS</text><text x="371" y="84" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Set projection and field of view.</text><text x="371" y="102" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Check the image circle.</text><text x="371" y="120" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Apply measured vignetting.</text><rect x="680" y="30" width="280" height="132" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="696" y="58" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" font-weight="700" letter-spacing="1.2">3 · CALIBRATE</text><text x="696" y="84" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Select the measured targets.</text><text x="696" y="102" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Enter spot readings in cd/m².</text><text x="696" y="120" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Inspect the fit and residuals.</text><line x1="314" y1="96" x2="350" y2="96" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hwf-arrow-ink)"/><line x1="639" y1="96" x2="675" y2="96" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hwf-arrow-ink)"/><path d="M820,166 V196 H490 V222" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hwf-arrow-ink)"/><rect x="260" y="226" width="460" height="98" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="276" y="254" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700" letter-spacing="1.2">4 · CHECK INDEPENDENT MEASUREMENTS</text><text x="276" y="280" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Hold out a spot target; compare image Ev with the measured Ev.</text><text x="276" y="298" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Check clipping, movement, flare and changes in the scene.</text><path d="M400,326 V350 H170 V372" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hwf-arrow-ink)"/><path d="M580,326 V350 H810 V372" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#hwf-arrow-ink)"/><rect x="30" y="376" width="400" height="92" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="46" y="404" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">DAYLIGHT / LUMINANCE STUDY</text><text x="46" y="430" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Compare surfaces and design alternatives.</text><text x="46" y="448" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Match view, sky and false-color scale.</text><rect x="560" y="376" width="400" height="92" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="576" y="404" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">GLARE · FISHEYE REQUIRED</text><text x="576" y="430" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Calibrated 180° view at the eye position.</text><text x="576" y="448" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Inspect the sources; DGP with evalglare.</text></g><g id="hwf-note"><text x="30" y="500" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Archive the original exposures, measurement log, lens profile, calibrated HDR, view and analysis settings together.</text></g></g></svg></div><figcaption><span><strong>Figure 7.</strong> From exposures to evidence</span><a href="./assets/diagrams/hdr/hdr-workflow.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-workflow_END -->
<ol class="facts">
<li><strong>Merge and inspect.</strong> Import JPEG brackets with correct exposure metadata, or open a completed iPhone session. Check alignment, coverage and bright-source detail. Do not merge tone-mapped screenshots.</li>
<li><strong>Prepare the lens.</strong> For a fisheye, confirm the image circle, true field of view and projection. Apply the relevant measured vignetting correction. LumiSnap can resample to the angular fisheye used by Radiance and evalglare; the camera's own fisheye projection may differ.</li>
<li><strong>Add spot readings.</strong> Select the same patches in the HDR and enter cd/m². Each point gives a scale factor (Eq. 6.3); LumiSnap combines multiple valid points and shows their deviations.</li>
<li><strong>Validate separately.</strong> Compare a held-out target and the measured Ev with the image. A target used to fit the scale is not an independent validation. Report disagreements; do not keep rescaling until every check appears to pass [4].</li>
</ol>
<div class="eq" id="eq-6-3"><span class="eq-math"><span class="eq-line"><span class="eq-label">scale factor from one spot reading</span><math><mi>k</mi><mo>=</mo><mfrac><msub><mi class="sym alt">L</mi><mtext>meter</mtext></msub><msub><mi class="sym alt">L</mi><mtext>image</mtext></msub></mfrac></math><span class="eq-note">e.g. 150 cd/m² ÷ 120 = 1.25</span></span><span class="eq-line"><span class="eq-label">residual of each point after the fit</span><math><mi>r</mi><mo>=</mo><mfrac><mrow><mi>k</mi><mo>·</mo><msub><mi class="sym alt">L</mi><mtext>image</mtext></msub><mo>−</mo><msub><mi class="sym alt">L</mi><mtext>meter</mtext></msub></mrow><msub><mi class="sym alt">L</mi><mtext>meter</mtext></msub></mfrac></math></span></span><span class="eq-n">(6.3)</span></div>
<div class="eq" id="eq-6-4"><span class="eq-math"><span class="eq-line"><span class="eq-label">luminance of a linear Radiance HDR pixel</span><math><mi class="sym alt">L</mi><mo>=</mo><mi>k</mi><mo>·</mo><mn>179</mn><mo>·</mo><mo>(</mo><mn>0.265</mn><mi>R</mi><mo>+</mo><mn>0.670</mn><mi>G</mi><mo>+</mo><mn>0.065</mn><mi>B</mi><mo>)</mo></math><span class="eq-unit">cd/m²</span><span class="eq-note">179 lm/W: Radiance's luminous efficacy</span></span></span><span class="eq-n">(6.4)</span></div>
<div class="table-wrap"><table class="nomenclature hdr-table"><caption>When a check disagrees, look for a cause</caption><thead><tr><th scope="col">Observation</th><th scope="col">What to investigate</th></tr></thead><tbody>
<tr><th scope="row">One spot is far from the others</th><td>Wrong target, aiming error, glossy material, too-small patch, shadow, movement or changed light.</td></tr>
<tr><th scope="row">Errors grow near the image edge</th><td>Vignetting, an incorrect projection, field of view or image circle.</td></tr>
<tr><th scope="row">Spot checks agree, image Ev is low</th><td>Missing or clipped sources, cropped hemisphere, lens correction, sensor orientation or a time mismatch.</td></tr>
<tr><th scope="row">Bright halos or duplicate people</th><td>Lens flare or motion between exposures. Alignment cannot turn a changing scene into a static measurement.</td></tr>
</tbody></table>
</div>
<ul class="facts">
<li><strong>For glare,</strong> use the calibrated full fisheye at the intended viewpoint, inspect the source-detection image, and compare with evalglare on desktop. Source luminance, angular size, position and eye illuminance all matter. Any replacement of clipped source values is an estimate; keep its method and measured inputs in the report [3].</li>
<li><strong>For a design comparison,</strong> keep common units and color limits, matched views, sky conditions and light settings. Save the original bracket, measurement log, lens corrections, calibrated HDR and processing settings. Report the moment and viewpoint the image represents; a false-color PNG communicates, but does not keep the HDR data.</li>
</ul>
</section>
<section id="design" class="reader-section">
<div class="section-heading"><span class="section-number">07</span><div><p class="eyebrow">DESIGN QUESTIONS AND METRICS · EQ. 6.5–6.9</p><h2>Using HDR in design</h2></div></div>
<p class="section-lead">A calibrated HDR is not a diagnostic picture of a finished room. It is a way to calibrate your intuition and to test design moves. Start from the design question, change one design variable, capture again from the same position, and compare the metric that answers the question.</p>
<div class="table-wrap"><table class="nomenclature hdr-table usecase-table"><caption>Seven design questions, what they test and what to measure</caption><thead><tr><th scope="col">Question</th><th scope="col">Design variables</th><th scope="col">Metric</th><th scope="col">Capture</th></tr></thead><tbody>
<tr><th scope="row"><a href="#use-glare">1 · Will this be uncomfortable?</a></th><td>Window position, shading, desk orientation, glazing transmittance</td><td>DGP, UGR; source <b class="sym alt">Ls</b> and ωs</td><td>180° fisheye at the eye</td></tr>
<tr><th scope="row"><a href="#use-brightness">2 · Bright or gloomy?</a></th><td>Wall and ceiling reflectance; where light lands</td><td>Mean <b class="sym alt">L</b> in the 40° horizontal band</td><td>Fisheye or wide view, level</td></tr>
<tr><th scope="row"><a href="#use-contrast">3 · Calm or dramatic?</a></th><td>Aperture size and distribution, depth, material contrast</td><td>Luminance ratios, spatial contrast, histogram spread</td><td>Fixed view</td></tr>
<tr><th scope="row"><a href="#use-dynamics">4 · How does it change?</a></th><td>Orientation, seasonal sun penetration, atmosphere</td><td>Band mean and contrast over time; hours above a glare threshold</td><td>Time-lapse, fixed camera</td></tr>
<tr><th scope="row"><a href="#use-reflectance">5 · What is this material doing?</a></th><td>Finish selection; inputs for digital models</td><td>ρ ≈ π<b class="sym alt">L</b> / <b class="sym azi">E</b></td><td>Sample with lux reading or gray card</td></tr>
<tr><th scope="row"><a href="#use-validation">6 · Does my model tell the truth?</a></th><td>Trust in physical models and simulation</td><td>Per-region log ratio; histogram comparison</td><td>Same view in model, space and rendering</td></tr>
<tr><th scope="row"><a href="#use-eye">7 · What does the eye receive?</a></th><td>Daylight access at the occupant’s position</td><td><b class="sym azi">Ev</b> from the image; melanopic estimate</td><td>180° fisheye at the eye</td></tr>
</tbody></table>
</div>
<h3 class="sub" id="use-glare">1 · “Will this be uncomfortable?” Glare</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Window position, shading, desk orientation, glazing transmittance.</dd></div>
<div><dt>Metric</dt><dd>DGP and UGR from evalglare, on a calibrated 180° fisheye at eye position (Section 02). Also report each glare source’s luminance <b class="sym alt">Ls</b> and solid angle ωs, and the threshold that defined it: a fixed 2,000 cd/m², or 5× the task-zone mean luminance.</dd></div>
<div><dt>Read it as</dt><dd>DGP below 0.35 imperceptible, 0.35–0.40 perceptible, 0.40–0.45 disturbing, 0.45 and above intolerable. UGR is primarily for electric lighting; 19 is a common limit for offices.</dd></div>
</dl>
<div class="eq" id="eq-6-5"><span class="eq-math"><span class="eq-line"><span class="eq-label">daylight glare probability (Wienold and Christoffersen)</span><math><mtext>DGP</mtext><mo>=</mo><mn>5.87</mn><mo>·</mo><msup><mn>10</mn><mrow><mo>−</mo><mn>5</mn></mrow></msup><msub><mi class="sym azi">E</mi><mi>v</mi></msub><mo>+</mo><mn>9.18</mn><mo>·</mo><msup><mn>10</mn><mrow><mo>−</mo><mn>2</mn></mrow></msup><msub><mi>log</mi><mn>10</mn></msub><mo lspace="0" rspace="0.1667em">⁡</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><munder><mo>∑</mo><mi>s</mi></munder><mfrac><mrow><msubsup><mi class="sym alt">L</mi><mi>s</mi><mn>2</mn></msubsup><msub><mi>ω</mi><mi>s</mi></msub></mrow><mrow><msubsup><mi class="sym azi">E</mi><mi>v</mi><mn>1.87</mn></msubsup><msubsup><mi>P</mi><mi>s</mi><mn>2</mn></msubsup></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mn>0.16</mn></math></span><span class="eq-line"><span class="eq-label">unified glare rating, background luminance L<sub>b</sub></span><math><mtext>UGR</mtext><mo>=</mo><mn>8</mn><msub><mi>log</mi><mn>10</mn></msub><mo lspace="0" rspace="0.1667em">⁡</mo><mrow><mo>(</mo><mfrac><mn>0.25</mn><msub><mi class="sym alt">L</mi><mi>b</mi></msub></mfrac><munder><mo>∑</mo><mi>s</mi></munder><mfrac><mrow><msubsup><mi class="sym alt">L</mi><mi>s</mi><mn>2</mn></msubsup><msub><mi>ω</mi><mi>s</mi></msub></mrow><msubsup><mi>P</mi><mi>s</mi><mn>2</mn></msubsup></mfrac><mo>)</mo></mrow></math><span class="eq-note">P: Guth position index, larger away from the line of sight</span></span></span><span class="eq-n">(6.5)</span></div>
<!-- FIG:hdr-use-glare_START -->
<figure class="fig" id="fig-hdr-use-glare"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 450" class="diagram" role="img" aria-label="Glare: sources in the fisheye view and the DGP scale"><title>Glare: sources in the fisheye view and the DGP scale</title><defs><marker id="ug-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="ug-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="ug-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="ug-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="ug-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="ug-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="ug-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ug-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ug-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="ug-fisheye"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · 180° FISHEYE AT THE EYE, ALONG THE GAZE</text><circle cx="230" cy="250" r="180" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="250" r="60" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="250" r="120" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="50" y1="250" x2="410" y2="250" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="230" y1="70" x2="230" y2="430" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><path d="M105.29,178 Q145.29,156 173.43,193.43 L157.5,283.81 Q134.68,317.25 94.68,299.25 Z" fill="url(#ug-hatch-screen)" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="121" cy="210.33" r="9" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M132.5,210.33 L136,210.33 M129.13,218.46 L131.6,220.93 M121,221.83 L121,225.33 M112.86,218.46 L110.39,220.93 M109.5,210.33 L106,210.33 M112.86,202.19 L110.39,199.72 M121,198.83 L121,195.33 M129.13,202.19 L131.6,199.72" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="230" y1="250" x2="121" y2="210.33" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="171.5" y="218.16" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)" font-weight="600">P (position)</text><rect x="120" y="350" width="240" height="12" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><circle cx="260" cy="320" r="34" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5" stroke-dasharray="4 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="300" y="324" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)" font-weight="600">task zone</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="42" y="70" font-size="12" style="--fs:12" fill="light-dark(#b13d4c, #ff9daa)" font-weight="700">glare source: Ls, ωs</text><line x1="92" y1="76" x2="116" y2="156" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="238" y="266" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)">view direction</text></g><g id="ug-dgp-scale"><text x="520" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · DGP FOR TWO DESIGN MOVES (ILLUSTRATIVE)</text><rect x="520" y="120" width="140" height="26" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="590" y="112" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">imperceptible</text><rect x="660" y="120" width="70" height="26" fill="url(#ug-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="695" y="112" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">perceptible</text><rect x="730" y="120" width="70" height="26" fill="url(#ug-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="765" y="112" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">disturbing</text><rect x="800" y="120" width="140" height="26" fill="url(#ug-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="870" y="112" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">intolerable</text><text x="520" y="162" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.25</text><text x="660" y="162" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.35</text><text x="730" y="162" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.40</text><text x="800" y="162" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.45</text><text x="940" y="162" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.55</text><polygon points="842,148 836,158 848,158" fill="light-dark(#ffffff, #202124)" stroke="none"/><polygon points="842,148 836,158 848,158" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="842" y1="168" x2="842" y2="174" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="2 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="842" y="186" font-size="12" style="--fs:12" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="end" font-weight="600">A · desk facing the window, clear glass: 0.48</text><polygon points="632,148 626,158 638,158" fill="light-dark(#ffffff, #202124)" stroke="none"/><polygon points="632,148 626,158 638,158" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="632" y1="168" x2="632" y2="214" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-dasharray="2 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="632" y="226" font-size="12" style="--fs:12" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="start" font-weight="600">B · desk turned 90°, external blind: 0.33</text><text x="520" y="280" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Report with DGP: Ev at the lens, and each source’s Ls, ωs and</text><text x="520" y="298" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">position. Source detection in evalglare: luminance above</text><text x="520" y="316" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">5 × the task-zone mean (-T), or a fixed 2,000 cd/m² (-b 2000).</text><text x="520" y="334" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)"></text><text x="520" y="352" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">UGR is for electric lighting; ~19 is a common office limit.</text><text x="520" y="370" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">A clipped sun underestimates Ls² ωs, and with it DGP.</text></g></g></svg></div><figcaption><span><strong>Figure 8.</strong> Glare: sources in the 180° view and the DGP scale</span><a href="./assets/diagrams/hdr/hdr-use-glare.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-glare_END -->
<p class="measure">The source term grows with <b class="sym alt">Ls</b>², which is why a clipped sun matters so much: if the sun is recorded at a few thousand cd/m² instead of its true value, DGP is underestimated. Compare design moves on the same desk, at the same time, from the same position. The <a href="./sun-paths-shading.html">sun-path and shading-mask methods of Chapter 04</a> tell you when the sun can be in the view; the HDR tells you how bad it is.</p>
<h3 class="sub" id="use-brightness">2 · “Does it feel bright or gloomy?” Perceived brightness</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Wall and ceiling reflectance; <em>where</em> light lands rather than how much arrives on the desk.</dd></div>
<div><dt>Metric</dt><dd>Mean luminance in a 40° horizontal band centered on eye level (Loe, Mansfield and Rowlands). Roughly 30 cd/m² separates spaces judged adequately lit from those judged gloomy.</dd></div>
<div><dt>Read it as</dt><dd>Horizontal illuminance misleads. A room can meet 500 lx on the desk and still feel dim, because people judge brightness by the walls they look at, not the desk plane.</dd></div>
</dl>
<!-- FIG:hdr-use-brightness_START -->
<figure class="fig" id="fig-hdr-use-brightness"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 445" class="diagram" role="img" aria-label="Perceived brightness: mean luminance in the 40° horizontal band"><title>Perceived brightness: mean luminance in the 40° horizontal band</title><defs><marker id="ub-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="ub-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="ub-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="ub-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="ub-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="ub-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="ub-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ub-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ub-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="ub-dark-walls"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · DARK WALLS, LIGHT FLOOR</text><rect x="40" y="320" width="400" height="12" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="40" y="78" width="400" height="12" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="28" y="78" width="12" height="70" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="28" y="200" width="12" height="132" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="32" y="148" width="4" height="52" fill="url(#ub-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="418" y="90" width="22" height="230" fill="url(#ub-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="410" y="108" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">dark finish, ρ ≈ 0.2</text><rect x="40" y="310" width="400" height="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="80" y="250" width="130" height="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M88,255.93 Q88.13,283.95 88,311.98" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M202,256 Q202.21,284.07 202,312.14" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="100" y="242" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">Eh = 500 lx</text><polygon points="150,200 418,102.46 418,297.54" fill="url(#ub-hatch-screen)" stroke="none"/><polygon points="150,200 418,102.46 418,297.54" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><circle cx="150" cy="200" r="6" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><line x1="418" y1="102.46" x2="418" y2="297.54" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M206.38,220.52 A60,60 0 0 0 206.38,179.48" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="216" y="178" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">40°</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="240" y="370" font-size="14" style="--fs:14" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">40° band mean: 18 cd/m²</text><text x="240" y="390" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">below ~30: reads gloomy</text></g><g id="ub-light-walls"><text x="540" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · LIGHT WALLS, DARK FLOOR</text><rect x="540" y="320" width="400" height="12" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="540" y="78" width="400" height="12" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="528" y="78" width="12" height="70" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="528" y="200" width="12" height="132" fill="url(#ub-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="532" y="148" width="4" height="52" fill="url(#ub-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="918" y="90" width="22" height="230" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="910" y="108" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">light finish, ρ ≈ 0.8</text><rect x="540" y="310" width="400" height="10" fill="url(#ub-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="580" y="250" width="130" height="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M588,255.65 Q588.19,283.68 588,311.7" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M702,255.59 Q701.8,283.94 702,312.29" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="600" y="242" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="700">Eh = 500 lx</text><polygon points="650,200 918,102.46 918,297.54" fill="url(#ub-hatch-screen)" stroke="none"/><polygon points="650,200 918,102.46 918,297.54" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><circle cx="650" cy="200" r="6" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><line x1="918" y1="102.46" x2="918" y2="297.54" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M706.38,220.52 A60,60 0 0 0 706.38,179.48" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="716" y="178" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" font-weight="700">40°</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="740" y="370" font-size="14" style="--fs:14" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">40° band mean: 46 cd/m²</text><text x="740" y="390" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">above ~30: reads adequately lit</text></g><g id="ub-note"><text x="40" y="428" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Same window, same desk illuminance. Where the light lands, within the band people look at, decides the impression. Values illustrative.</text></g></g></svg></div><figcaption><span><strong>Figure 9.</strong> Perceived brightness: the 40° horizontal band</span><a href="./assets/diagrams/hdr/hdr-use-brightness.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-brightness_END -->
<p class="measure">Mask the band in the fisheye (±20° above and below the horizon of a level capture) and average <b class="sym alt">L</b> over its pixels. Repeat after changing a finish or moving a window toward a wall it can wash. The metric rewards light on vertical surfaces, which a lux grid on the workplane never sees.</p>
<h3 class="sub" id="use-contrast">3 · “Is it calm or dramatic?” Contrast and variability</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Aperture size and distribution, room depth, material contrast, and the intent of the space.</dd></div>
<div><dt>Metric</dt><dd>Task : surround and surround : periphery luminance ratios, compared with the IES ballpark of 1 : 3 : 10; Rockcastle and Andersen’s spatial contrast; and the spread of the log-luminance histogram.</dd></div>
<div><dt>Read it as</dt><dd>Neither calm nor dramatic is right in itself. A studio needs even light on the work; a chapel or a stair can use sharp contrast. The metric shows whether the design delivers its intent.</dd></div>
</dl>
<div class="eq" id="eq-6-6"><span class="eq-math"><span class="eq-line"><span class="eq-label">luminance ratio between two zones (mean luminance of each)</span><math><mi>C</mi><mo>=</mo><mfrac><msub><mover><mi class="sym alt">L</mi><mo>‾</mo></mover><mtext>task</mtext></msub><msub><mover><mi class="sym alt">L</mi><mo>‾</mo></mover><mtext>surround</mtext></msub></mfrac></math><span class="eq-note">about 3 or less; task to periphery about 10 or less</span></span><span class="eq-line"><span class="eq-label">histogram spread over the view’s pixels</span><math><mi>σ</mi><mo>=</mo><mtext>std</mtext><mo>(</mo><msub><mi>log</mi><mn>10</mn></msub><mo lspace="0" rspace="0.1667em">⁡</mo><msub><mi class="sym alt">L</mi><mi>i</mi></msub><mo>)</mo></math><span class="eq-note">σ = 0.3 ≈ a factor of 2 either side of the typical value</span></span></span><span class="eq-n">(6.6)</span></div>
<!-- FIG:hdr-use-contrast_START -->
<figure class="fig" id="fig-hdr-use-contrast"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 420" class="diagram" role="img" aria-label="Contrast: luminance ratios and the spread of the log-luminance histogram"><title>Contrast: luminance ratios and the spread of the log-luminance histogram</title><defs><marker id="uc-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="uc-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="uc-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="uc-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="uc-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="uc-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="uc-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="uc-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="uc-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="uc-ratios"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · LUMINANCE RATIOS</text><rect x="40" y="60" width="400" height="260" fill="url(#uc-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="120" y="130" width="240" height="140" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-dasharray="5 4" stroke-linecap="round" stroke-linejoin="round"/><rect x="190" y="175" width="100" height="55" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="240" y="207" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">task</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="240" y="152" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">surround</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="240" y="84" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">periphery</text><text x="40" y="350" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">IES ballpark, task : surround : periphery ≈ 1 : 1/3 : 1/10.</text><text x="40" y="368" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Beyond it, the eye keeps re-adapting: a bright window</text><text x="40" y="386" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">in the periphery or a dark wall behind a screen.</text></g><g id="uc-histograms"><text x="520" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · LOG-LUMINANCE HISTOGRAM OF THE VIEW</text><path d="M517.39,150 Q729.58,149.8 941.77,150" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="625" y="148.84" width="13.13" height="1.16" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="638.13" y="145.52" width="13.13" height="4.48" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="651.25" y="136.54" width="13.13" height="13.46" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="664.38" y="118.51" width="13.13" height="31.49" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="677.5" y="92.61" width="13.13" height="57.39" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="690.63" y="68.56" width="13.13" height="81.44" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="703.75" y="60" width="13.13" height="90" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="716.88" y="72.54" width="13.13" height="77.46" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="730" y="98.07" width="13.13" height="51.93" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="743.13" y="122.89" width="13.13" height="27.11" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="756.25" y="138.98" width="13.13" height="11.02" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="769.38" y="146.51" width="13.13" height="3.49" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="940" y="68" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end" font-weight="700">calm: diffuse, even</text><text x="940" y="84" font-size="12" style="--fs:12" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="end" font-weight="600">σ(log₁₀ L) ≈ 0.25 · narrow</text><path d="M517.87,290 Q730.17,289.92 942.48,290" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="520" y="288.19" width="13.13" height="1.81" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="533.13" y="284.7" width="13.13" height="5.3" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="546.25" y="276.94" width="13.13" height="13.06" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="559.38" y="262.9" width="13.13" height="27.1" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="572.5" y="242.71" width="13.13" height="47.29" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="585.63" y="220.53" width="13.13" height="69.47" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="598.75" y="203.99" width="13.13" height="86.01" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="611.88" y="200" width="13.13" height="90" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="625" y="209.87" width="13.13" height="80.13" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="638.13" y="228.26" width="13.13" height="61.74" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="651.25" y="247.08" width="13.13" height="42.92" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="664.38" y="260.51" width="13.13" height="29.49" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="677.5" y="267.22" width="13.13" height="22.78" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="690.63" y="269.01" width="13.13" height="20.99" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="703.75" y="268.54" width="13.13" height="21.46" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="716.88" y="267.85" width="13.13" height="22.15" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="730" y="268.03" width="13.13" height="21.97" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="743.13" y="269.38" width="13.13" height="20.62" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="756.25" y="271.71" width="13.13" height="18.29" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="769.38" y="274.34" width="13.13" height="15.66" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="782.5" y="275.87" width="13.13" height="14.13" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="795.63" y="273.85" width="13.13" height="16.15" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="808.75" y="265.49" width="13.13" height="24.51" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="821.88" y="250.54" width="13.13" height="39.46" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="835" y="234.51" width="13.13" height="55.49" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="848.13" y="226.9" width="13.13" height="63.1" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="861.25" y="233.39" width="13.13" height="56.61" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="874.38" y="250.25" width="13.13" height="39.75" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="887.5" y="268.21" width="13.13" height="21.79" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="900.63" y="280.68" width="13.13" height="9.32" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><rect x="913.75" y="286.89" width="13.13" height="3.11" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="940" y="208" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end" font-weight="700">dramatic: sun patch, deep shade</text><text x="940" y="224" font-size="12" style="--fs:12" fill="light-dark(#6a4fb3, #c3b2ff)" text-anchor="end" font-weight="600">σ(log₁₀ L) ≈ 0.9 · wide</text><path d="M520,287.72 Q520.01,292.76 520,297.79" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="520" y="310" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">1</text><path d="M625,288.77 Q625,292.9 625,297.04" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="625" y="310" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">10</text><path d="M730,288.61 Q730,292.77 730,296.92" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="730" y="310" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">100</text><path d="M835,288.99 Q835,293.42 835,297.85" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="835" y="310" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">1,000</text><path d="M940,288.7 Q940,293.03 940,297.35" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="940" y="310" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">10,000</text><text x="730" y="328" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle">L [cd/m², log scale]</text><text x="520" y="356" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Spatial contrast (Rockcastle and Andersen) sums luminance</text><text x="520" y="374" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">differences between neighboring pixels at several image</text><text x="520" y="392" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">resolutions: high for sharp light and shadow patterns.</text></g></g></svg></div><figcaption><span><strong>Figure 10.</strong> Contrast: luminance ratios and the log-luminance histogram</span><a href="./assets/diagrams/hdr/hdr-use-contrast.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-contrast_END -->
<h3 class="sub" id="use-dynamics">4 · “How does it change over time?” Dynamics</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Orientation, seasonal sun penetration, the atmosphere of the space through the day.</dd></div>
<div><dt>Metric</dt><dd>An HDR time-lapse from a fixed camera: the 40° band mean and the contrast for each capture, and the number of captures, or hours, above a glare threshold.</dd></div>
<div><dt>Read it as</dt><dd>Treat each capture as standing for its interval. EN 17037 states glare protection as a DGP not exceeded for more than 5% of the occupied time: 0.45, 0.40 or 0.35 for its three levels.</dd></div>
</dl>
<!-- FIG:hdr-use-dynamics_START -->
<figure class="fig" id="fig-hdr-use-dynamics"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 425" class="diagram" role="img" aria-label="Change over a day: 40° band luminance and DGP from hourly captures"><title>Change over a day: 40° band luminance and DGP from hourly captures</title><defs><marker id="ud-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="ud-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="ud-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="ud-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="ud-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="ud-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="ud-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ud-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ud-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="ud-timeline"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">WEST-FACING STUDIO, CLEAR AUTUMN DAY: ONE CALIBRATED CAPTURE PER HOUR (ILLUSTRATIVE)</text><circle cx="110" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="110" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">8:00</text><circle cx="189" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="189" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">9:00</text><circle cx="268" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="268" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">10:00</text><circle cx="347" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="347" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">11:00</text><circle cx="426" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="426" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">12:00</text><circle cx="505" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="505" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">13:00</text><circle cx="584" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="584" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">14:00</text><circle cx="663" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="663" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">15:00</text><circle cx="742" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="742" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">16:00</text><circle cx="821" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="821" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">17:00</text><circle cx="900" cy="64" r="7" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="900" y="88" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">18:00</text><path d="M106.97,230 Q504.91,230.24 902.86,230" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M110,108.08 Q110.16,170.32 110,232.57" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><line x1="110" y1="200" x2="900" y2="200" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1" stroke-dasharray="5 4" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="116" y="194" font-size="10.5" style="--fs:10.5" fill="light-dark(#b13d4c, #ff9daa)" font-weight="600">30 cd/m²</text><text x="102" y="234" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">0</text><text x="102" y="174" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">60</text><text x="102" y="114" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">120</text><polyline points="110,207.97 189,207.76 268,206.72 347,202.85 426,192.61 505,173.79 584,151.43 663,138.41 742,144.32 821,164.65 900,186.05" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><circle cx="110" cy="207.97" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="189" cy="207.76" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="268" cy="206.72" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="347" cy="202.85" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="426" cy="192.61" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="505" cy="173.79" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="584" cy="151.43" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="663" cy="138.41" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="742" cy="144.32" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="821" cy="164.65" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><circle cx="900" cy="186.05" r="3" fill="light-dark(#2479ad, #8bcfff)" stroke="none"/><text x="30" y="120" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)">40° band</text><text x="30" y="134" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)">mean L</text><text x="30" y="148" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)">[cd/m²]</text><path d="M107.52,380 Q505.75,379.92 903.97,380" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M110,257.55 Q110.12,320.93 110,384.3" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="714" y="260" width="56" height="120" fill="url(#ud-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="793" y="260" width="56" height="120" fill="url(#ud-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><line x1="110" y1="311.43" x2="900" y2="311.43" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1" stroke-dasharray="5 4" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="116" y="305.43" font-size="10.5" style="--fs:10.5" fill="light-dark(#b13d4c, #ff9daa)" font-weight="600">DGP 0.40</text><polyline points="110,366.29 189,366.29 268,366.29 347,366.29 426,366.28 505,366.15 584,362.11 663,329.45 742,276.05 821,304.83 900,354.65" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><circle cx="110" cy="366.29" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="189" cy="366.29" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="268" cy="366.29" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="347" cy="366.29" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="426" cy="366.28" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="505" cy="366.15" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="584" cy="362.11" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="663" cy="329.45" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="742" cy="276.05" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="821" cy="304.83" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="900" cy="354.65" r="3" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><text x="30" y="270" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)">DGP</text><text x="102" y="384" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">0.2</text><text x="102" y="349.71" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">0.3</text><text x="102" y="315.43" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">0.4</text><text x="102" y="281.14" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="end">0.5</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="710" y="276" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end" font-weight="700">2 of 11 captures ≥ 0.40</text><text x="40" y="412" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Morning: calm and dim. Late afternoon: low sun brightens the band, then crosses into glare. A single midday capture would miss both.</text></g></g></svg></div><figcaption><span><strong>Figure 11.</strong> Change over a day from hourly captures</span><a href="./assets/diagrams/hdr/hdr-use-dynamics.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-dynamics_END -->
<p class="measure">Calibrate each capture: daylight changes between them, so record a spot reading and <b class="sym azi">Ev</b> every time, or at least check a fixed reference target in the frame. A single day is a sample, not a year; choose the dates with the solstice and equinox sun paths of <a href="./sun-paths-shading.html">Chapter 04</a>, or extend the study with simulation (use 6).</p>
<h3 class="sub" id="use-reflectance">5 · “What is this material actually doing?” Reflectance</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Finish selection; reflectances for digital models instead of guessed values.</dd></div>
<div><dt>Metric</dt><dd>Reflectance of a matte sample from its luminance and the illuminance on it, or against a gray card of known reflectance in the same light.</dd></div>
<div><dt>Read it as</dt><dd>Valid only for diffuse (matte) surfaces. A glossy or strongly textured finish looks different from every angle; photograph it from the occupants’ viewpoint instead of reducing it to one number.</dd></div>
</dl>
<div class="eq" id="eq-6-7"><span class="eq-math"><span class="eq-line"><span class="eq-label">diffuse reflectance from luminance and illuminance on the sample</span><math><mi>ρ</mi><mo>≈</mo><mfrac><mrow><mi>π</mi><mo>·</mo><mi class="sym alt">L</mi></mrow><mi class="sym azi">E</mi></mfrac></math><span class="eq-note">L in cd/m², E in lx, sensor in the plane of the sample</span></span><span class="eq-line"><span class="eq-label">against a gray card in the same light</span><math><msub><mi>ρ</mi><mi>x</mi></msub><mo>≈</mo><msub><mi>ρ</mi><mtext>card</mtext></msub><mo>·</mo><mfrac><msub><mi class="sym alt">L</mi><mi>x</mi></msub><msub><mi class="sym alt">L</mi><mtext>card</mtext></msub></mfrac></math><span class="eq-note">no lux meter needed</span></span></span><span class="eq-n">(6.7)</span></div>
<!-- FIG:hdr-use-reflectance_START -->
<figure class="fig" id="fig-hdr-use-reflectance"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 420" class="diagram" role="img" aria-label="Reflectance of a matte sample from luminance and illuminance, or against a gray card"><title>Reflectance of a matte sample from luminance and illuminance, or against a gray card</title><defs><marker id="ur-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="ur-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="ur-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="ur-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="ur-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="ur-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="ur-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ur-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ur-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="ur-lux"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · REFLECTANCE FROM L AND E</text><rect x="420" y="60" width="14" height="300" fill="url(#ur-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><rect x="400" y="150" width="20" height="90" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="300" y="146" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">matte sample</text><path d="M302.6,142.78 Q351.31,150.89 400.13,158.34" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><line x1="398" y1="195" x2="374.06" y2="129.22" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><line x1="398" y1="195" x2="340.66" y2="154.85" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><line x1="398" y1="195" x2="328" y2="195" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><line x1="398" y1="195" x2="340.66" y2="235.15" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><line x1="398" y1="195" x2="374.06" y2="260.78" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><path d="M398,125 A70,70 0 0 0 398,265" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="300" y="116" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="end">diffuse: same L in all directions</text><rect x="408" y="262" width="12" height="34" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="398" y="330" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" text-anchor="end" font-weight="600">lux sensor on the wall, facing out: E</text><line x1="250" y1="200" x2="404" y2="233" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-azi)"/><line x1="250" y1="230" x2="404" y2="272" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-azi)"/><line x1="250" y1="260" x2="404" y2="311" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-azi)"/><rect x="60" y="180" width="40" height="28" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="100" y="186" width="10" height="16" fill="url(#ur-hatch-shadow)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M80,205.91 Q79.46,283.74 80,361.56" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><line x1="330" y1="195" x2="116" y2="194" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#ur-arrow-alt)"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="200" y="182" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="600">L from the HDR</text><text x="40" y="400" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">ρ = π L / E · e.g. π × 40 cd/m² / 250 lx = 0.50</text></g><g id="ur-gray-card"><text x="520" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · REFLECTANCE AGAINST A GRAY CARD IN THE FRAME</text><rect x="540" y="80" width="400" height="230" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="600" y="140" width="110" height="110" fill="url(#ur-hatch-shade)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><rect x="770" y="140" width="110" height="110" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="655" y="270" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">gray card ρ = 0.18</text><text x="655" y="287" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="600">L = 14 cd/m²</text><text x="825" y="270" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">sample</text><text x="825" y="287" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="600">L = 49 cd/m²</text><text x="520" y="340" font-size="14" style="--fs:14" fill="light-dark(#26333e, #edf4fa)" font-weight="700">ρx = ρcard · Lx / Lcard = 0.18 × 49 / 14 = 0.63</text><text x="520" y="366" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Same plane, same light, both matte, view not grazing.</text><text x="520" y="384" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Glossy or textured finishes: not diffuse, so no single ρ.</text></g></g></svg></div><figcaption><span><strong>Figure 12.</strong> Reflectance of a matte sample</span><a href="./assets/diagrams/hdr/hdr-use-reflectance.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-reflectance_END -->
<h3 class="sub" id="use-validation">6 · “Does my model or simulation tell the truth?” Validation</h3>
<dl class="defs usecase">
<div><dt>Design variables</dt><dd>Your trust in the tools: a physical scale model, a Radiance rendering, and when to believe each.</dd></div>
<div><dt>Metric</dt><dd>For the same view in the real space, the model and the rendering: the log ratio of the mean luminance in each region (ceiling, walls, floor, window), and a comparison of their log-luminance histograms.</dd></div>
<div><dt>Read it as</dt><dd>Scale models show light leaks, material mismatches and sky problems. Finding them is the lesson, not a failure: each mismatch tells you which part of the model to fix before you use it to decide.</dd></div>
</dl>
<div class="eq" id="eq-6-8"><span class="eq-math"><span class="eq-line"><span class="eq-label">per-region agreement</span><math><mi>r</mi><mo>=</mo><msub><mi>log</mi><mn>10</mn></msub><mo lspace="0" rspace="0.1667em">⁡</mo><mfrac><msub><mover><mi class="sym alt">L</mi><mo>‾</mo></mover><mtext>model</mtext></msub><msub><mover><mi class="sym alt">L</mi><mo>‾</mo></mover><mtext>real</mtext></msub></mfrac></math><span class="eq-note">r = 0 agrees; ±0.1 ≈ ±26%; +0.3 ≈ twice as bright</span></span></span><span class="eq-n">(6.8)</span></div>
<!-- FIG:hdr-use-validation_START -->
<figure class="fig" id="fig-hdr-use-validation"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 515" class="diagram" role="img" aria-label="Validation: per-region log ratios between a scale model, a rendering and the real space"><title>Validation: per-region log ratios between a scale model, a rendering and the real space</title><defs><marker id="uv-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="uv-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="uv-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="uv-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="uv-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="uv-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="uv-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="uv-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="uv-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="uv-views"><text x="40" y="44" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">REAL SPACE</text><rect x="40" y="60" width="270" height="160" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><polygon points="121,104.8 229,104.8 229,175.2 121,175.2" fill="none" stroke="none"/><path d="M119.07,104.8 Q174.94,104.61 230.8,104.8 M229,102.65 Q229.12,139.71 229,176.77 M231.07,175.2 Q175.5,175.49 119.94,175.2 M121,176.11 Q121.2,139.86 121,103.6" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M38.43,59.13 Q80.58,82.62 122.89,105.84" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M311.62,59.11 Q269.69,82.29 227.78,105.48" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M311.64,220.91 Q269.7,197.53 227.6,174.43" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M39.08,220.51 Q80.54,197.77 121.84,174.74" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="60.25,105.6 100.75,116.8 100.75,158.56 60.25,167.52" fill="url(#uv-hatch-screen)" stroke="none"/><path d="M59.01,105.26 Q80.97,111.19 102.85,117.38 M100.75,115.3 Q100.92,137.97 100.75,160.63 M101.77,158.33 Q80.44,163.2 59.04,167.79 M60.25,169.47 Q60.49,136.44 60.25,103.41" fill="light-dark(#7ac5e6, #76c9f0)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><circle cx="175" cy="79.2" r="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="175" y="83.2" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">C</text><circle cx="175" cy="140" r="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="175" y="144" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">W</text><circle cx="175" cy="200.8" r="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="175" y="204.8" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">F</text><circle cx="80.5" cy="132.08" r="10" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="80.5" y="136.08" font-size="10.5" style="--fs:10.5" fill="light-dark(#2479ad, #8bcfff)" text-anchor="middle" font-weight="700">G</text><text x="350" y="44" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">SCALE MODEL, 1:20</text><rect x="350" y="60" width="270" height="160" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><polygon points="431,104.8 539,104.8 539,175.2 431,175.2" fill="none" stroke="none"/><path d="M429.71,104.8 Q485.26,104.64 540.81,104.8 M539,103.14 Q538.88,140.15 539,177.16 M540.45,175.2 Q484.82,175.64 429.18,175.2 M431,177.25 Q431.14,139.87 431,102.49" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M349.03,59.46 Q390.57,82.5 432.15,105.44" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M621.36,59.25 Q579.74,82.56 537.88,105.42" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M621.48,220.82 Q579.74,197.26 537.6,174.43" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M348.4,220.89 Q390.75,197.82 432.79,174.21" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="370.25,105.6 410.75,116.8 410.75,158.56 370.25,167.52" fill="url(#uv-hatch-screen)" stroke="none"/><path d="M368.77,105.19 Q390.66,111.35 412.6,117.31 M410.75,115.56 Q410.8,137.74 410.75,159.91 M411.61,158.37 Q390.32,163.23 368.96,167.8 M370.25,169.46 Q370.09,136.58 370.25,103.7" fill="light-dark(#7ac5e6, #76c9f0)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="350,220 431,175.2 539,175.2 620,220" fill="url(#uv-hatch-shade)" stroke="none"/><path d="M348.4,220.89 Q390.75,197.82 432.79,174.21 M428.95,175.2 Q484.83,174.9 540.72,175.2 M537.48,174.36 Q579.68,197.33 621.57,220.87 M621.47,220 Q485.21,220.4 348.95,220" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="660" y="44" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">RADIANCE RENDERING</text><rect x="660" y="60" width="270" height="160" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><polygon points="741,104.8 849,104.8 849,175.2 741,175.2" fill="none" stroke="none"/><path d="M739.38,104.8 Q795.2,104.96 851.01,104.8 M849,103.39 Q849.31,139.88 849,176.37 M851.16,175.2 Q795.39,175.01 739.63,175.2 M741,177.5 Q741.14,140.69 741,103.88" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M659.12,59.51 Q700.72,82.5 742.3,105.52" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M931.35,59.26 Q889.94,82.57 848.18,105.25" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M930.91,220.5 Q889.45,197.77 848.15,174.73" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M658.03,221.09 Q700.35,197.33 742.97,174.11" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="680.25,105.6 720.75,116.8 720.75,158.56 680.25,167.52" fill="url(#uv-hatch-screen)" stroke="none"/><path d="M678.71,105.17 Q700.21,111.18 721.74,117.07 M720.75,115.16 Q720.69,137.4 720.75,159.64 M721.68,158.35 Q699.95,163.32 678.14,167.99 M680.25,169.69 Q680.2,137.16 680.25,104.62" fill="light-dark(#7ac5e6, #76c9f0)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><polygon points="660,60 741,104.8 849,104.8 930,60" fill="url(#uv-hatch-screen)" stroke="none"/><path d="M659.12,59.51 Q700.72,82.5 742.3,105.52 M739.38,104.8 Q795.2,104.96 851.01,104.8 M847.21,105.79 Q889.11,82.39 931.19,59.34 M930.99,60 Q794.8,59.4 658.62,60" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><text x="40" y="244" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)">Same view, same camera position. Regions: C ceiling · W back wall · F floor · G window.</text></g><g id="uv-log-ratios"><rect x="422.5" y="282" width="135" height="148" fill="url(#uv-hatch-screen)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6" stroke-linecap="round" stroke-linejoin="round"/><line x1="220" y1="282" x2="220" y2="434" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><text x="220" y="450" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">−0.4</text><line x1="355" y1="282" x2="355" y2="434" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><text x="355" y="450" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">−0.2</text><path d="M490,280.79 Q489.87,358.52 490,436.24" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text x="490" y="450" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">0.0</text><line x1="625" y1="282" x2="625" y2="434" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><text x="625" y="450" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">+0.2</text><line x1="760" y1="282" x2="760" y2="434" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><text x="760" y="450" font-size="10.5" style="--fs:10.5" fill="light-dark(#607181, #aabccb)" text-anchor="middle">+0.4</text><text x="206" y="306" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">ceiling</text><rect x="660.5" y="297" width="10" height="10" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="517" cy="302" r="5" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="776" y="306" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)">light leak at the model roof?</text><text x="206" y="342" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">back wall</text><rect x="451.25" y="333" width="10" height="10" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="449.5" cy="338" r="5" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="206" y="378" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">floor</text><rect x="356.75" y="369" width="10" height="10" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="544" cy="374" r="5" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="776" y="378" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)">model material too dark</text><text x="206" y="414" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="end">window</text><rect x="694.25" y="405" width="10" height="10" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><circle cx="409" cy="410" r="5" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="776" y="414" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)">model sky ≠ real sky</text><text x="490" y="468" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)" text-anchor="middle">log₁₀(L / L real), per region. ±0.1 ≈ ±26 %</text><rect x="220" y="492" width="10" height="10" fill="light-dark(#6a4fb3, #c3b2ff)" stroke="none"/><text x="236" y="501" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">model / real</text><circle cx="355" cy="497" r="5" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><text x="366" y="501" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">rendering / real (illustrative)</text></g></g></svg></div><figcaption><span><strong>Figure 13.</strong> Scale model, rendering and real space compared by region</span><a href="./assets/diagrams/hdr/hdr-use-validation.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-validation_END -->
<p class="measure">Use the log ratio rather than the difference: luminances span decades, and a 50 cd/m² error means something different on a ceiling than on a window. Render with the same view type (an angular fisheye, <code>-vta</code>, for a fisheye capture), the measured reflectances from use 5, and a sky that matches the capture.</p>
<h3 class="sub" id="use-eye">7 · “What does the eye receive?” Vertical illuminance</h3>
<dl class="defs usecase">
<div><dt>Metric</dt><dd><b class="sym azi">Ev</b> integrated from the calibrated fisheye. A melanopic estimate is possible if you assume a spectrum; flag it as an approximation.</dd></div>
<div><dt>Read it as</dt><dd><b class="sym azi">Ev</b> drives DGP (Eq. 6.5) and the non-visual effects of light. It is also the check on the whole capture: compare it with the lux sensor at the lens (Section 05).</dd></div>
</dl>
<div class="eq" id="eq-6-9"><span class="eq-math"><span class="eq-line"><span class="eq-label">vertical illuminance from the fisheye pixels</span><math><msub><mi class="sym azi">E</mi><mi>v</mi></msub><mo>=</mo><munder><mo>∑</mo><mi>i</mi></munder><msub><mi class="sym alt">L</mi><mi>i</mi></msub><mo>·</mo><mrow><mi>cos</mi><mo lspace="0" rspace="0.1667em">⁡</mo><msub><mi>θ</mi><mi>i</mi></msub></mrow><mo>·</mo><msub><mi>ω</mi><mi>i</mi></msub></math><span class="eq-note">θ from the view direction, ω the pixel’s solid angle</span></span><span class="eq-line"><span class="eq-label">melanopic equivalent daylight illuminance, assumed spectrum</span><math><mtext>m-EDI</mtext><mo>≈</mo><msub><mi class="sym azi">E</mi><mi>v</mi></msub><mo>·</mo><mtext>M-DER</mtext></math><span class="eq-note">approximation; an RGB camera does not measure the spectrum</span></span></span><span class="eq-n">(6.9)</span></div>
<!-- FIG:hdr-use-eye_START -->
<figure class="fig" id="fig-hdr-use-eye"><div class="fig-plate"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 440" class="diagram" role="img" aria-label="Vertical illuminance at the eye from a fisheye HDR, with a melanopic estimate"><title>Vertical illuminance at the eye from a fisheye HDR, with a melanopic estimate</title><defs><marker id="ue-arrow-ink" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#26333e, #edf4fa)" stroke-width="1.5"/></marker><marker id="ue-arrow-alt" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="1.5"/></marker><marker id="ue-arrow-azi" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="1.5"/></marker><marker id="ue-arrow-third" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1.5"/></marker><marker id="ue-arrow-muted" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#607181, #aabccb)" stroke-width="1.5"/></marker><marker id="ue-arrow-red" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse" markerUnits="userSpaceOnUse"><path d="M0,1 L9,5 L0,9" fill="none" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1.5"/></marker><pattern id="ue-hatch-shadow" patternUnits="userSpaceOnUse" width="3.4" height="3.4" patternTransform="rotate(45)"><rect width="3.4" height="3.4" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="3.4" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ue-hatch-shade" patternUnits="userSpaceOnUse" width="7.5" height="7.5" patternTransform="rotate(45)"><rect width="7.5" height="7.5" fill="light-dark(#ffffff, #202124)"/><line x1="0" y1="0" x2="0" y2="7.5" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern><pattern id="ue-hatch-screen" patternUnits="userSpaceOnUse" width="4.2" height="4.2" patternTransform="rotate(135)"><line x1="0" y1="0" x2="0" y2="4.2" stroke="light-dark(#26333e, #edf4fa)" stroke-width="0.6"/></pattern></defs><g font-family="Helvetica Neue, Helvetica, Arial, sans-serif"><g id="ue-fisheye"><text x="40" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">A · EV FROM THE FISHEYE IMAGE</text><circle cx="230" cy="230" r="170" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#26333e, #edf4fa)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="230" r="28.33" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="230" r="56.67" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="230" r="85" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="230" r="113.33" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><circle cx="230" cy="230" r="141.67" fill="none" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="60" y1="230" x2="400" y2="230" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><line x1="230" y1="60" x2="230" y2="400" stroke="light-dark(#a6bdce, #6b879b)" stroke-width="0.6" stroke-dasharray="3 4" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="234" y="244" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">cos 0° = 1.00</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="280.42" y="276.5" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">cos 30° = 0.87</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="326.84" y="309.01" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">cos 60° = 0.50</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="373.26" y="341.51" font-size="10.5" style="--fs:10.5" fill="light-dark(#007c9a, #6bd8f0)">cos 90° = 0</text><rect x="168.83" y="145.64" width="14" height="14" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#2479ad, #8bcfff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><line x1="230" y1="230" x2="175.83" y2="152.64" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="163.83" y="138.64" font-size="12" style="--fs:12" fill="light-dark(#2479ad, #8bcfff)" text-anchor="end" font-weight="600">pixel i: Li, ωi, θi</text><text paint-order="stroke" stroke="light-dark(#ffffff, #202124)" stroke-width="4" stroke-linejoin="round" x="210.91" y="195.32" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)" font-weight="700">θi</text><text x="230" y="430" font-size="12" style="--fs:12" fill="light-dark(#607181, #aabccb)" text-anchor="middle">Center pixels count fully; the rim counts nothing.</text></g><g id="ue-reading"><text x="520" y="36" font-size="10.5" style="--fs:10.5" fill="light-dark(#26333e, #edf4fa)" font-weight="700" letter-spacing="1.2">B · READ IT AS</text><text x="520" y="66" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Ev = Σ Li · cos θi · ωi over the whole hemisphere</text><text x="520" y="84" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">Check it against the lux sensor at the lens (Section 05).</text><text x="520" y="102" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">A large gap points to clipped sources, a cropped view</text><text x="520" y="120" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">or the wrong lens projection.</text><text x="520" y="160" font-size="10.5" style="--fs:10.5" fill="light-dark(#6a4fb3, #c3b2ff)" font-weight="700" letter-spacing="1">MELANOPIC ESTIMATE · APPROXIMATION</text><text x="520" y="182" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">m-EDI ≈ Ev × M-DER of an assumed spectrum</text><text x="520" y="200" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">daylight through glazing: M-DER ≈ 0.9–1.0</text><text x="520" y="218" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">warm-white LED, ~2700 K: roughly 0.4–0.5</text><text x="520" y="236" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">An RGB camera does not measure the spectrum. State the</text><text x="520" y="254" font-size="12" style="--fs:12" fill="light-dark(#26333e, #edf4fa)">assumed source; use a spectrometer for real numbers.</text><rect x="520" y="300" width="248" height="18" fill="light-dark(#ffffff, #202124)" stroke="light-dark(#007c9a, #6bd8f0)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="776" y="313" font-size="12" style="--fs:12" fill="light-dark(#007c9a, #6bd8f0)" font-weight="600">Ev = 620 lx</text><rect x="520" y="330" width="224" height="18" fill="url(#ue-hatch-screen)" stroke="light-dark(#6a4fb3, #c3b2ff)" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/><text x="752" y="343" font-size="12" style="--fs:12" fill="light-dark(#6a4fb3, #c3b2ff)" font-weight="600">m-EDI ≈ 560 lx (daylight, M-DER 0.9)</text><line x1="620" y1="290" x2="620" y2="360" stroke="light-dark(#b13d4c, #ff9daa)" stroke-width="1" stroke-dasharray="4 3" stroke-linecap="round" stroke-linejoin="round"/><text x="620" y="378" font-size="10.5" style="--fs:10.5" fill="light-dark(#b13d4c, #ff9daa)" text-anchor="middle">250 lx m-EDI: daytime recommendation (Brown et al. 2022)</text></g></g></svg></div><figcaption><span><strong>Figure 14.</strong> What the eye receives: Ev and a melanopic estimate</span><a href="./assets/diagrams/hdr/hdr-use-eye.svg" download>Editable SVG ↓</a></figcaption></figure>
<!-- FIG:hdr-use-eye_END -->
<div class="callout pitfalls"><span>CAPTURE PITFALLS · DRILL EARLY</span>
<ul>
<li><strong>The sun needs an ND filter.</strong> Without one, the sun clips in every frame and DGP is underestimated (Eq. 6.5). The filter needs its own transmission correction.</li>
<li><strong>Correct vignetting.</strong> Fisheye fall-off darkens the periphery, exactly where windows and glare sources often sit.</li>
<li><strong>Fisheye at eye height for metrics.</strong> Glare, the 40° band and <b class="sym azi">Ev</b> need the full hemisphere from the occupant’s eye. Use perspective views for composition only.</li>
<li><strong>Fix the camera for A/B tests.</strong> Same position, height, direction, lens and settings. Moving the camera changes the metric more than many design moves do.</li>
</ul>
</div>
</section>
<section id="iphone" class="reader-section">
<div class="section-heading"><span class="section-number">08</span><div><p class="eyebrow">IPHONE · CAPTURE TO DESKTOP</p><h2>iPhone workflow and examples</h2></div></div>
<p class="section-lead">Both sessions below were captured with LumiSnap on iPhone, Ultra Wide lens. Each includes its original Bayer RAW exposures, a merged HDR and saved luminance reference points. Follow them from capture to desktop analysis.</p>
<ol class="facts">
<li><strong>Capture a bracket.</strong> In <strong>Capture</strong>, select a lens that supports Bayer RAW. Keep the phone fixed and the scene static; a tripod is preferable. Automatic capture adjusts the bracket to cover the scene. Wait until capture and processing finish before moving the phone.</li>
<li><strong>Review the merged session.</strong> Open <strong>Sessions</strong>. The HDR merges automatically. Inspect <strong>HDR</strong>, <strong>Coverage</strong> and the individual <strong>Frames</strong> for clipping, dark areas, alignment errors or movement before measuring.</li>
<li><strong>Enter reference readings.</strong> In <strong>Calibration</strong>, tap uniform patches and enter the matching spot-meter readings in cd/m². Review the sampling radius, then tap <strong>Apply calibration</strong>. Points save automatically. Review the residuals and check a separate target not used in the fit.</li>
<li><strong>Inspect luminance.</strong> Open <strong>False color</strong>. Tap the image for a readout; set the minimum, maximum and logarithmic or linear range. Gray pixels are excluded from measurement. Display settings change the view, not the HDR values.</li>
<li><strong>Export or continue on desktop.</strong> Use the up-arrow in <strong>Sessions</strong> to export a calibrated HDR or a bracket-series ZIP. The ZIP keeps the RAW originals, the working HDR and the calibration. In LumiSnap Desktop, choose <strong>Open project…</strong> and select the ZIP, or extract it and open <code>session.hlab.json</code>.</li>
</ol>
<div class="iphone-examples"><article class="iphone-example"><p class="control-kicker">5 RAW EXPOSURES · LANDSCAPE · 4 REFERENCE POINTS</p>
<h3>Design Tech Space</h3>
<figure><div class="iphone-frame"><img src="./assets/hdr/iphone/designtechspace-preview.webp" alt="Landscape iPhone HDR preview of an architecture workspace with arched windows, desks and a mezzanine" width="1200" height="900" loading="lazy">
<!-- POINTS:designtechspace_START -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 900" class="point-overlay" aria-hidden="true"><circle cx="626.6" cy="228.2" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="626.6" y="228.2" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">1</text><circle cx="536.6" cy="648.3" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="536.6" y="648.3" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">2</text><circle cx="278.2" cy="57.8" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="278.2" y="57.8" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">3</text><circle cx="952.5" cy="753.7" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="952.5" y="753.7" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">4</text></svg>
<!-- POINTS:designtechspace_END -->
</div>
<figcaption>Tone-mapped HDR preview. Numbers mark the saved reference points.</figcaption>
</figure>
<details><summary>Luminance map and reference readings</summary><div class="example-data"><figure><div class="iphone-frame"><img src="./assets/hdr/iphone/designtechspace-luminance.webp" alt="Calibrated false-color luminance map of Design Tech Space, with brighter windows and lower luminance across the interior" width="1200" height="900" loading="lazy">
</div>
<figcaption>Rendered from the working HDR with its saved calibration factor, k = 1.0267 (Eq. 6.3–6.4).</figcaption>
</figure>
<table class="nomenclature compact"><caption>Saved calibration readings</caption><thead><tr><th scope="col">Point</th><th scope="col">Meter (cd/m²)</th><th scope="col">Fit residual</th></tr></thead><tbody>
<tr><th scope="row">1</th><td>111.0</td><td>+2.7%</td></tr>
<tr><th scope="row">2</th><td>161</td><td>+2.2%</td></tr>
<tr><th scope="row">3</th><td>131.5</td><td>−7.7%</td></tr>
<tr><th scope="row">4</th><td>83.5</td><td>+3.1%</td></tr>
</tbody></table>
<p class="caption">The saved merge excludes 1.2% of pixels from measurement; they appear gray in the map.</p>
</div>
</details>
</article>
<article class="iphone-example"><p class="control-kicker">6 RAW EXPOSURES · PORTRAIT · 3 REFERENCE POINTS</p>
<h3>Milstein Dome</h3>
<figure><div class="iphone-frame"><img src="./assets/hdr/iphone/milsteindome-preview.webp" alt="Portrait iPhone HDR preview of the Milstein Dome interior with skylights, concrete ramps and glazed railings" width="900" height="1200" loading="lazy">
<!-- POINTS:milsteindome_START -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 1200" class="point-overlay" aria-hidden="true"><circle cx="517.8" cy="162.8" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="517.8" y="162.8" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">1</text><circle cx="324.1" cy="1035.7" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="324.1" y="1035.7" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">2</text><circle cx="511.8" cy="428.1" r="26.666666666666668" fill="#ffffff" stroke="#26333e" stroke-width="3.8095238095238098"/><text x="511.8" y="428.1" dy=".35em" text-anchor="middle" font-family="Helvetica Neue, Helvetica, Arial, sans-serif" font-size="29.333333333333336" font-weight="700" fill="#26333e">3</text></svg>
<!-- POINTS:milsteindome_END -->
</div>
<figcaption>Tone-mapped HDR preview. Numbers mark the saved reference points.</figcaption>
</figure>
<details><summary>Luminance map and reference readings</summary><div class="example-data"><figure><div class="iphone-frame"><img src="./assets/hdr/iphone/milsteindome-luminance.webp" alt="Calibrated false-color luminance map of Milstein Dome, with high contrast between skylights, light fixtures and concrete surfaces" width="900" height="1200" loading="lazy">
</div>
<figcaption>Rendered from the working HDR with its saved calibration factor, k = 0.9090 (Eq. 6.3–6.4).</figcaption>
</figure>
<table class="nomenclature compact"><caption>Saved calibration readings</caption><thead><tr><th scope="col">Point</th><th scope="col">Meter (cd/m²)</th><th scope="col">Fit residual</th></tr></thead><tbody>
<tr><th scope="row">1</th><td>1,266</td><td>+15.7%</td></tr>
<tr><th scope="row">2</th><td>35.9</td><td>−8.0%</td></tr>
<tr><th scope="row">3</th><td>55.3</td><td>−6.0%</td></tr>
</tbody></table>
<p class="caption">The saved merge excludes 3.8% of pixels from measurement; they appear gray in the map.</p>
</div>
</details>
</article>
</div>
<div class="luminance-legend"><!-- LEGEND_START --><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 14" preserveAspectRatio="none" class="turbo-bar" aria-hidden="true"><defs><linearGradient id="hdr-turbo"><stop offset="0.0000" stop-color="rgb(35, 23, 27)"/><stop offset="0.0625" stop-color="rgb(73, 62, 175)"/><stop offset="0.1250" stop-color="rgb(68, 106, 238)"/><stop offset="0.1875" stop-color="rgb(50, 149, 247)"/><stop offset="0.2500" stop-color="rgb(38, 189, 225)"/><stop offset="0.3125" stop-color="rgb(41, 221, 187)"/><stop offset="0.3750" stop-color="rgb(64, 243, 146)"/><stop offset="0.4375" stop-color="rgb(102, 253, 109)"/><stop offset="0.5000" stop-color="rgb(150, 250, 80)"/><stop offset="0.5625" stop-color="rgb(198, 235, 59)"/><stop offset="0.6250" stop-color="rgb(238, 208, 45)"/><stop offset="0.6875" stop-color="rgb(255, 171, 36)"/><stop offset="0.7500" stop-color="rgb(255, 128, 29)"/><stop offset="0.8125" stop-color="rgb(238, 84, 21)"/><stop offset="0.8750" stop-color="rgb(201, 45, 12)"/><stop offset="0.9375" stop-color="rgb(161, 18, 2)"/><stop offset="1.0000" stop-color="rgb(144, 13, 0)"/></linearGradient></defs><rect width="400" height="14" rx="2" fill="url(#hdr-turbo)"/></svg><!-- LEGEND_END -->
<div><span>10</span>
<span>100</span>
<span>1,000</span>
<span>10,000</span>
</div>
<p class="caption">Both luminance maps · cd/m² · logarithmic Turbo scale, as in the reader's other quantitative maps · out-of-range values in the end colors</p>
</div>
<p class="measure caption">The previews and luminance maps are rendered from the exported HDR data; they are not app screenshots. Residuals describe the saved fit to its own reference readings, not independent accuracy. The meter model was not recorded in these exports.</p>
<div class="callout"><span>ULTRA WIDE</span>
<p class="measure"><strong>These captures are for luminance studies.</strong> They are not complete 180° fisheye views and should not be used for the glare workflow. Calibration does not replace validation of the camera, lens and measurement setup.</p>
</div>
</section>
<section id="checklist" class="reader-section">
<div class="section-heading"><span class="section-number">09</span><div><p class="eyebrow">BEFORE YOU LEAVE THE ROOM</p><h2>Field checklist</h2></div></div>
<ul class="field-checklist">
<li>Record the design question and the metric that answers it (Section 07), the camera position, eye height, gaze direction, date, time and sky conditions.</li>
<li>Use a tripod, fixed settings and overlapping exposures. Glare, the 40° band and Ev need a complete, characterized 180° fisheye view at eye height.</li>
<li>With the sun in view, add a characterized ND filter. For A/B comparisons, do not move the camera between captures.</li>
<li>Confirm usable shadows in a long exposure and unclipped important sources in a short one.</li>
<li>Measure and label several luminance targets in cd/m²; keep one for an independent check.</li>
<li>Record vertical Ev in lux at the lens before and after capture. Repeat if the scene changes.</li>
<li>For daylight models or task lighting, record a separate upward-facing workplane illuminance grid.</li>
<li>Check for motion and flare. Keep the originals and a measurement log with instrument details.</li>
<li>After processing, check the calibration residuals and the independent measurements before reporting results.</li>
</ul>
<a class="button button-outline" href="./assets/hdr/field-log.csv" download>Download the field measurement log (CSV) ↓</a>
</section>
<section id="quiz" class="reader-section quiz-section">
<div class="section-heading"><span class="section-number">10</span><div><p class="eyebrow">10 QUESTIONS · UNITS, EXPOSURE, CALIBRATION, DESIGN</p><h2>Mini quiz</h2></div></div>
<p class="section-lead">Check the method before you capture. Calculation questions take a number; “New values” generates a new variant. Each answer shows the equation or reasoning behind it.</p>
<form id="quiz-form" novalidate><div id="quiz-questions"></div><div class="quiz-actions"><button class="button" type="submit">Check all answers</button><button id="reset-quiz" class="quiet-button" type="button">Clear</button><p id="quiz-score" role="status"></p></div></form>
<p class="caption">Practice only. Responses stay in this browser.</p>
</section>
<section id="figures" class="reader-section references-section">
<p class="eyebrow">EDITABLE VECTOR FILES</p><h2>Figure files</h2>
<p class="measure">Each figure is available as SVG with plain colors, named groups and live text, for editing in Illustrator, Inkscape or Keynote. The calibration figure embeds its photograph. The files are generated from the same code as the page (<code>./reader generate:hdr</code>).</p>
<!-- FIGLIST_START -->
<ol class="fig-list"><li><a href="./assets/diagrams/hdr/hdr-quantities.svg" download>hdr-quantities.svg</a> <span>· Fig. 1 · Illuminance arrives at a plane; luminance leaves a surface toward the eye</span></li><li><a href="./assets/diagrams/hdr/hdr-capture-setup.svg" download>hdr-capture-setup.svg</a> <span>· Fig. 2 · Camera position and view direction, in plan and section</span></li><li><a href="./assets/diagrams/hdr/hdr-exposure-overlap.svg" download>hdr-exposure-overlap.svg</a> <span>· Fig. 3 · Overlapping exposures merge into one linear HDR</span></li><li><a href="./assets/diagrams/hdr/hdr-meters.svg" download>hdr-meters.svg</a> <span>· Fig. 4 · Illuminance meter and spot luminance meter</span></li><li><a href="./assets/diagrams/hdr/hdr-methods.svg" download>hdr-methods.svg</a> <span>· Fig. 5 · Three measurements, three questions</span></li><li><a href="./assets/diagrams/hdr/hdr-calibration-targets.svg" download>hdr-calibration-targets.svg</a> <span>· Fig. 6 · Spot targets on the supplied portrait capture (ARCH 5611 course readings)</span></li><li><a href="./assets/diagrams/hdr/hdr-workflow.svg" download>hdr-workflow.svg</a> <span>· Fig. 7 · From exposures to evidence</span></li><li><a href="./assets/diagrams/hdr/hdr-use-glare.svg" download>hdr-use-glare.svg</a> <span>· Fig. 8 · Glare: sources in the 180° view and the DGP scale</span></li><li><a href="./assets/diagrams/hdr/hdr-use-brightness.svg" download>hdr-use-brightness.svg</a> <span>· Fig. 9 · Perceived brightness: the 40° horizontal band</span></li><li><a href="./assets/diagrams/hdr/hdr-use-contrast.svg" download>hdr-use-contrast.svg</a> <span>· Fig. 10 · Contrast: luminance ratios and the log-luminance histogram</span></li><li><a href="./assets/diagrams/hdr/hdr-use-dynamics.svg" download>hdr-use-dynamics.svg</a> <span>· Fig. 11 · Change over a day from hourly captures</span></li><li><a href="./assets/diagrams/hdr/hdr-use-reflectance.svg" download>hdr-use-reflectance.svg</a> <span>· Fig. 12 · Reflectance of a matte sample</span></li><li><a href="./assets/diagrams/hdr/hdr-use-validation.svg" download>hdr-use-validation.svg</a> <span>· Fig. 13 · Scale model, rendering and real space compared by region</span></li><li><a href="./assets/diagrams/hdr/hdr-use-eye.svg" download>hdr-use-eye.svg</a> <span>· Fig. 14 · What the eye receives: Ev and a melanopic estimate</span></li></ol>
<!-- FIGLIST_END -->
</section>
<section id="references" class="reader-section references-section">
<p class="eyebrow">SOURCES</p><h2>Sources and further reading</h2>
<p>This chapter translates established HDR measurement methods into a student workflow. The papers give the experimental methods, limitations and validation detail. The recommendations are starting points to validate with your own equipment.</p>
<ol class="source-list">
<li>M. N. Inanici, <a href="https://faculty.washington.edu/inanici/Publications/LRTPublished.pdf" target="_blank" rel="noreferrer">Evaluation of high dynamic range photography as a luminance data acquisition system</a>, <em>Lighting Research & Technology</em> 38(2), 2006.<span>Camera response, photometric calibration and lens effects.</span></li>
<li>J. A. Jakubiec, K. Van Den Wymelenberg, M. Inanici, A. Mahic, <a href="https://faculty.washington.edu/inanici/Publications/CIE-HDR-Jakubiecetal.pdf.pdf" target="_blank" rel="noreferrer">Accurate measurement of daylit interior scenes using high dynamic range photography</a>, CIE Lighting Quality & Energy Efficiency, Melbourne, 2016.<span>Aperture, vignetting, scene variability and luminous overflow.</span></li>
<li>J. A. Jakubiec, M. Inanici, K. Van Den Wymelenberg, A. Mahic, <a href="https://faculty.washington.edu/inanici/Publications/PLEA-HDR.pdf" target="_blank" rel="noreferrer">Improving the accuracy of measurements in daylit interior scenes using high dynamic range photography</a>, PLEA, Los Angeles, 2016.<span>Bright sources, extended capture range and visual comfort.</span></li>
<li>C. Pierson, C. Cauwerts, M. Bodart, J. Wienold, <a href="https://doi.org/10.1080/15502724.2019.1684319" target="_blank" rel="noreferrer">Tutorial: luminance maps for daylighting studies from high dynamic range photography</a>, <em>LEUKOS</em> 17(2), 140–169, 2021 (<a href="https://research.dial.uclouvain.be/entities/publication/bc596bb7-4249-4f82-ac4b-cc5c4a77341d" target="_blank" rel="noreferrer">open access</a>).<span>A detailed calibration procedure and validation framework.</span></li>
<li>M. Inanici, <a href="https://faculty.washington.edu/inanici/Publications/BS09_0264_271.pdf" target="_blank" rel="noreferrer">Applications of image based rendering in lighting simulation: development and evaluation of image based sky models</a>, IBPSA Building Simulation, Glasgow, 2009.<span>Measured HDR skies as simulation input.</span></li>
<li>J. Wienold, J. Christoffersen, Evaluation methods and development of a new glare prediction model for daylight environments with the use of CCD cameras, <em>Energy and Buildings</em> 38(7), 743–757, 2006.<span>DGP (Eq. 6.5); evalglare implements it with UGR and source detection.</span></li>
<li>D. L. Loe, K. P. Mansfield, E. Rowlands, Appearance of lit environment and its relevance in lighting design: experimental study, <em>Lighting Research & Technology</em> 26(3), 119–133, 1994.<span>The 40° horizontal band and the ~30 cd/m² threshold for an adequately lit impression.</span></li>
<li>S. Rockcastle, M. Andersen, Measuring the dynamics of contrast and daylight variability in architecture: a proof-of-concept methodology, <em>Building and Environment</em> 81, 320–333, 2014.<span>Spatial contrast and its variation over time.</span></li>
<li>Illuminating Engineering Society, <em>The Lighting Handbook</em>, 10th ed., 2011.<span>Recommended luminance ratios between task, surround and periphery.</span></li>
<li>EN 17037:2018, <em>Daylight in buildings</em>.<span> Glare protection levels by DGP exceeded for no more than 5% of the occupied time.</span></li>
<li>CIE S 026:2018, <em>System for metrology of optical radiation for ipRGC-influenced responses to light</em>; T. M. Brown et al., Recommendations for daytime, evening, and nighttime indoor light exposure, <em>PLOS Biology</em> 20(3), e3001571, 2022.<span> Melanopic EDI, M-DER and the 250 lx daytime recommendation (Eq. 6.9).</span></li>
<li>T. Dogan, <a href="https://lumisnap.io/guide.html" target="_blank" rel="noreferrer">LumiSnap: a practical guide to HDR measurement</a>, Environmental Systems Lab, Cornell University, 2026.<span> The field guide this chapter adapts; LumiSnap Desktop and iPhone.</span></li>
</ol>
<details class="math-details"><summary>Images, readings and drawings</summary><p>The fisheye series (IMG_0418–0428: Canon EOS 6D Mark II, 8 mm, f/4, ISO 200) and the portrait capture (3X6A2043: Canon EOS R5, 24 mm, f/5.6, ISO 100, 1/10 s) are resized display copies of the LumiSnap course captures, without creative edits. The portrait readings A–E come from an ARCH 5611 measurement sheet; photographs and readings are credited to mtc237, Harry Turghan and EZ Wang. Its time (4:30 pm) differs from the photo's EXIF time (4:45:53 pm), so the readings illustrate target selection, not a validated calibration. The iPhone previews use global Reinhard tone mapping; the luminance maps apply Eq. 6.4 with the saved factor k on a shared logarithmic 10–10,000 cd/m² Turbo scale. The meter drawings are simplified schematics of the Konica Minolta <a href="https://sensing.konicaminolta.us/us/products/t-10a_t-10ma-illuminance-meters/" target="_blank" rel="noreferrer">T-10A</a> and <a href="https://sensing.konicaminolta.us/us/products/ls-150-luminance-meter/" target="_blank" rel="noreferrer">LS-150</a>; display values are examples. All diagrams are redrawn for this reader in the fine-liner style of Chapters 02–05. The values in the Section 07 figures marked illustrative explain each metric; they are not measurements.</p>
</details>
<p><a class="text-link" href="./heat-transfer.html">Continue to Chapter 07: heat transfer through the envelope ↗</a></p>
<div class="reader-end"><span>ES1 / ENVIRONMENTAL SYSTEMS I</span>
<a href="#top">Back to top ↑</a>
</div>
</section>
</main>
</body>
</html>