You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<figcaption>Comparison of the ACES and Commerce tone mapping reachable colors. The cube represents the [0, 1] space in linear light - no sRGB curve has been applied.</figcaption>
292
+
<figcaption>Comparison of the ACES and PBR Neutral tone mapping reachable colors. The cube represents the [0, 1] space in linear light - no sRGB curve has been applied.</figcaption>
292
293
</figure>
293
294
294
295
<p>Note that canary yellow, bright greens and blues are all impossible to
@@ -361,14 +362,16 @@ <h3 id="needs">The needs of e-commerce</h3>
361
362
generalizable to these situations, but there will be additional challenges
362
363
beyond tone mapping as well.</p>
363
364
364
-
<h3id="commerce">Commerce tone mapper</h3>
365
+
<h3id="commerce">Khronos PBR Neutral tone mapper</h3>
365
366
366
-
<p>The Commerce tone mapper is designed to be simple to implement, fast to
367
-
run, and faithfully reproduce color as much as possible while eliminating
368
-
HDR artifacts around highlights. It is intended to be 1:1 for colors up to a
369
-
certain maximum value, with the remainder used as headroom for the
370
-
compressed highlights. It turns out 1:1 is a little trickier than it
371
-
sounds.</p>
367
+
<p>The Khronos PBR Neutral tone mapper is designed to be simple to
368
+
implement, fast to run, and faithfully reproduce color as much as possible
369
+
while eliminating HDR artifacts around highlights. It is intended to be 1:1
370
+
for colors up to a certain maximum value, with the remainder used as
371
+
headroom for the compressed highlights. I developed it under the auspices of
372
+
the Khronos 3D Commerce working group to create an industry standard for
373
+
e-commerce and an improved alternative for any PBR render that currently
374
+
disables tone mapping.</p>
372
375
373
376
<p>I found that an actual 1:1 tone mapping function led to slightly
374
377
desaturated colors, most noticeably for dark colors. I tracked this problem
@@ -397,7 +400,7 @@ <h3 id="commerce">Commerce tone mapper</h3>
397
400
<p>I chose to fit a simple 1/x function and match the piecewise slope of our
398
401
1:1 portion, as this gives an asymptote with a reasonable tail. It has only
399
402
a single parameter: the value where we switch from the linear to the
400
-
nonlinear function. The purpose of the Commerce tone mapper is to be a
403
+
nonlinear function. The purpose of the Khronos PBR Neutral tone mapper is to be a
401
404
standard and thus without parameters, so I chose 0.8 after much testing.
402
405
However, this is likely the most natural place to adjust the curve to HDR
403
406
output from sRGB.</p>
@@ -425,8 +428,11 @@ <h3 id="commerce">Commerce tone mapper</h3>
425
428
brain an alternate perceptual cue, which smoothly encodes several orders of
426
429
magnitude more brightness than is available in the output screen.</p>
427
430
428
-
<p>The complete shader code is quite small, with only three divides and
429
-
those only applied to colors over the 1:1 limit:<br/>
431
+
<p>Careful use of the minimum and maximum of the three color channel values
432
+
ensures that this tone mapping function has continuous gradients everywhere
433
+
and in all dimensions, which is key to avoiding eye-catching artifacts in
434
+
the output renders. The complete shader code is quite small, with only three
435
+
divides and those only applied to colors over the 1:1 limit:<br/>
430
436
<code>
431
437
float startCompression = 0.8 - 0.04;
432
438
float desaturation = 0.15;
@@ -451,7 +457,7 @@ <h3 id="commerce">Commerce tone mapper</h3>
451
457
452
458
<figure>
453
459
<imgsrc="../assets/commerce-linear.png"/>
454
-
<figcaption>The Commerce tone mapping function, which maps linear brightness to the [0, 1] range. The compression function is piecewise in three parts: blue for the contrast toe, green for the linear 1:1 region, and red for the compression region. The desaturation curve is purple.</figcaption>
460
+
<figcaption>The Khronos PBR Neutral tone mapping function, which maps linear brightness to the [0, 1] range. The compression function is piecewise in three parts: blue for the contrast toe, green for the linear 1:1 region, and red for the compression region. The desaturation curve is purple.</figcaption>
455
461
</figure>
456
462
457
463
<figure>
@@ -482,7 +488,7 @@ <h3 id="commerce">Commerce tone mapper</h3>
0 commit comments