Preface |
|
xix | |
Foreword |
|
xxiii | |
Contributors |
|
xxix | |
Notation |
|
lv | |
|
PART I Ray Tracing Foundations |
|
|
5 | (186) |
|
Chapter 1 A Breakneck Summary of Photographic Terms (and Their Utility to Ray Tracing) |
|
|
9 | (28) |
|
|
9 | (1) |
|
1.2 Digital Sensor Technology |
|
|
10 | (3) |
|
|
13 | (1) |
|
1.4 Common Capture Dimensions |
|
|
14 | (2) |
|
1.5 Common Capture Resolutions |
|
|
16 | (1) |
|
|
16 | (3) |
|
|
19 | (2) |
|
|
21 | (3) |
|
|
24 | (2) |
|
|
26 | (1) |
|
|
27 | (2) |
|
1.12 Various Lens Imperfections |
|
|
29 | (4) |
|
|
33 | (1) |
|
|
34 | (1) |
|
|
34 | (3) |
|
Chapter 2 Ray Axis-Aligned Bounding Box Intersection |
|
|
37 | (4) |
|
|
37 | (4) |
|
Chapter 3 Essential Ray Generation Shaders |
|
|
41 | (24) |
|
|
41 | (1) |
|
|
42 | (5) |
|
|
47 | (3) |
|
|
50 | (2) |
|
|
52 | (3) |
|
|
55 | (1) |
|
|
56 | (2) |
|
|
58 | (2) |
|
|
60 | (1) |
|
|
61 | (1) |
|
|
62 | (3) |
|
Chapter 4 Hacking the Shadow Terminator |
|
|
65 | (12) |
|
|
66 | (2) |
|
|
68 | (2) |
|
4.3 Moving the Intersection Point in Hindsight |
|
|
70 | (2) |
|
|
72 | (2) |
|
4.5 Discussion and Limitations |
|
|
74 | (1) |
|
|
75 | (2) |
|
Chapter 5 Sampling Textures with Missing Derivatives |
|
|
77 | (12) |
|
|
77 | (1) |
|
5.2 Texture Coordinate Derivatives at Visible Points |
|
|
78 | (6) |
|
|
84 | (1) |
|
|
85 | (1) |
|
|
85 | (4) |
|
Chapter 6 Differential Barycentric Coordinates |
|
|
89 | (6) |
|
|
89 | (2) |
|
|
91 | (1) |
|
|
92 | (3) |
|
Chapter 7 Texture Coordinate Gradients Estimation for Ray Cones |
|
|
95 | (10) |
|
|
95 | (2) |
|
|
97 | (2) |
|
7.3 Comparison and Results |
|
|
99 | (3) |
|
|
102 | (1) |
|
|
102 | (3) |
|
Chapter 8 Reflection and Refraction Formulas |
|
|
105 | (4) |
|
|
105 | (1) |
|
|
105 | (4) |
|
Chapter 9 The Schlick Fresnel Approximation |
|
|
109 | (6) |
|
|
109 | (1) |
|
9.2 The Fresnel Equations |
|
|
109 | (1) |
|
9.3 The Schlick Approximation |
|
|
110 | (2) |
|
9.4 Dielectrics vs. Conductors |
|
|
112 | (1) |
|
9.5 Approximations for Modeling the Reflectance of Metals |
|
|
112 | (3) |
|
Chapter 10 Refraction Ray Cones for Texture Level of Detail |
|
|
115 | (12) |
|
|
115 | (2) |
|
|
117 | (4) |
|
|
121 | (3) |
|
|
124 | (3) |
|
Chapter 11 Handling Translucency with Real-Time Ray Tracing |
|
|
127 | (12) |
|
11.1 Categories of Translucent Material |
|
|
127 | (1) |
|
|
128 | (1) |
|
11.3 Single Translucent Pass |
|
|
129 | (2) |
|
|
131 | (1) |
|
11.5 Visibility for Semitransparent Materials |
|
|
132 | (5) |
|
|
137 | (2) |
|
Chapter 12 Motion Blur Corner Cases |
|
|
139 | (14) |
|
|
139 | (2) |
|
12.2 Dealing with Varying Motion Sample Counts |
|
|
141 | (3) |
|
12.3 Combining Transformation and Deformation Motion |
|
|
144 | (2) |
|
|
146 | (4) |
|
|
150 | (3) |
|
Chapter 13 Fast Spectral Upsampling of Volume Attenuation Coefficients |
|
|
153 | (8) |
|
|
153 | (2) |
|
|
155 | (2) |
|
|
157 | (1) |
|
|
157 | (4) |
|
Chapter 14 The Reference Path Tracer |
|
|
161 | (30) |
|
|
161 | (2) |
|
|
163 | (1) |
|
|
164 | (21) |
|
|
185 | (6) |
|
|
191 | (134) |
|
Chapter 15 The Shader Binding Table Demystified |
|
|
193 | (20) |
|
15.1 The Shader Binding Table |
|
|
193 | (3) |
|
15.2 Shader Record Index Calculation |
|
|
196 | (2) |
|
15.3 API-Specific Details |
|
|
198 | (5) |
|
15.4 Common Shader Binding Table Configurations |
|
|
203 | (7) |
|
|
210 | (3) |
|
Chapter 16 Introduction to Vulkan Ray Tracing |
|
|
213 | (44) |
|
|
213 | (1) |
|
|
214 | (1) |
|
|
215 | (1) |
|
16.4 The Vulkan Ray Tracing Pipeline |
|
|
215 | (3) |
|
|
218 | (2) |
|
16.6 Ray Tracing Shader Example |
|
|
220 | (3) |
|
16.7 Overview of Host Initialization |
|
|
223 | (1) |
|
16.8 Vulkan Ray Tracing Setup |
|
|
224 | (21) |
|
16.9 Creating Vulkan Ray Tracing Pipelines |
|
|
245 | (3) |
|
16.10 Shader Binding Tables |
|
|
248 | (4) |
|
|
252 | (1) |
|
16.12 Additional Resources |
|
|
253 | (1) |
|
|
254 | (3) |
|
Chapter 17 Using Bindless Resources with DirectX Raytracing |
|
|
257 | (24) |
|
|
257 | (2) |
|
17.2 Traditional Binding with DXR |
|
|
259 | (2) |
|
17.3 Bindless Resources in D3D12 |
|
|
261 | (6) |
|
17.4 Bindless Resources with DXR |
|
|
267 | (6) |
|
17.5 Practical Implications of Using Bindless Techniques |
|
|
273 | (4) |
|
17.6 Upcoming D3D12 Features |
|
|
277 | (1) |
|
|
278 | (3) |
|
Chapter 18 WebRays: Ray Tracing on the Web |
|
|
281 | (20) |
|
|
281 | (2) |
|
18.2 Framework Architecture |
|
|
283 | (3) |
|
18.3 Programming with WebRays |
|
|
286 | (6) |
|
|
292 | (6) |
|
18.5 Conclusions and Future Work |
|
|
298 | (3) |
|
Chapter 19 Visualizing and Communicating Errors in Rendered Images |
|
|
301 | (24) |
|
|
301 | (2) |
|
|
303 | (4) |
|
|
307 | (1) |
|
19.4 Example Usage and Output |
|
|
308 | (6) |
|
19.5 Rendering Algorithm Development and Evaluation |
|
|
314 | (4) |
|
19.6 Appendix: Mean versus Weighted Median |
|
|
318 | (7) |
|
|
325 | (74) |
|
Chapter 20 Multiple Importance Sampling 101 |
|
|
327 | (12) |
|
20.1 Direct Light Estimation |
|
|
327 | (8) |
|
20.2 A Path Tracer with MIS |
|
|
335 | (1) |
|
20.3 Closing Words and Further Reading |
|
|
335 | (4) |
|
Chapter 21 The Alias Method for Sampling Discrete Distributions |
|
|
339 | (6) |
|
|
339 | (1) |
|
|
339 | (2) |
|
|
341 | (1) |
|
21.4 Alias Table Construction |
|
|
341 | (1) |
|
21.5 Additional Reading and Resources |
|
|
342 | (3) |
|
Chapter 22 Weighted Reservoir Sampling: Randomly Sampling Streams |
|
|
345 | (6) |
|
|
345 | (1) |
|
22.2 Usage in Computer Graphics |
|
|
346 | (1) |
|
|
346 | (1) |
|
22.4 Reservoir Sampling with or without Replacement |
|
|
346 | (1) |
|
22.5 Simple Algorithm for Sampling with Replacement |
|
|
347 | (1) |
|
22.6 Weighted Reservoir Sampling for K > 1 |
|
|
348 | (1) |
|
22.7 An Interesting Property |
|
|
348 | (1) |
|
|
348 | (3) |
|
Chapter 23 Rendering Many Lights with Grid-Based Reservoirs |
|
|
351 | (16) |
|
|
351 | (1) |
|
|
352 | (4) |
|
23.3 Grid-Based Reservoirs |
|
|
356 | (1) |
|
|
357 | (6) |
|
|
363 | (1) |
|
|
364 | (3) |
|
Chapter 24 Using Blue Noise for Ray Traced Soft Shadows |
|
|
367 | (32) |
|
|
367 | (2) |
|
|
369 | (1) |
|
|
369 | (3) |
|
|
372 | (2) |
|
24.5 Void and Cluster Algorithm |
|
|
374 | (2) |
|
24.6 Blue Noise Filtering |
|
|
376 | (2) |
|
24.7 Blue Noise for Soft Shadows |
|
|
378 | (11) |
|
24.8 Comparison with Interleaved Gradient Noise |
|
|
389 | (2) |
|
24.9 Perceptual Error Evaluation |
|
|
391 | (1) |
|
|
392 | (7) |
|
PART IV Shading and Effects |
|
|
399 | (118) |
|
Chapter 25 Temporally Reliable Motion Vectors for Better Use of Temporal Information |
|
|
401 | (16) |
|
|
401 | (1) |
|
|
402 | (1) |
|
25.3 Temporally Reliable Motion Vectors |
|
|
403 | (11) |
|
|
414 | (1) |
|
|
415 | (2) |
|
Chapter 26 Ray Traced Level of Detail Cross-Fades Made Easy |
|
|
417 | (10) |
|
|
417 | (3) |
|
|
420 | (1) |
|
|
421 | (2) |
|
|
423 | (1) |
|
|
424 | (3) |
|
Chapter 27 Ray Tracing Decals |
|
|
427 | (14) |
|
|
427 | (1) |
|
|
428 | (1) |
|
|
429 | (6) |
|
|
435 | (1) |
|
|
435 | (2) |
|
|
437 | (1) |
|
|
438 | (1) |
|
|
438 | (2) |
|
|
440 | (1) |
|
Chapter 28 Billboard Ray Tracing for Impostors and Volumetric Effects |
|
|
441 | (16) |
|
|
441 | (1) |
|
|
441 | (5) |
|
|
446 | (6) |
|
|
452 | (1) |
|
|
453 | (4) |
|
Chapter 29 Hybrid Ray Traced and Image-Space Refractions |
|
|
457 | (12) |
|
|
457 | (1) |
|
29.2 Image-Space Refractions |
|
|
458 | (1) |
|
|
459 | (2) |
|
|
461 | (3) |
|
|
464 | (2) |
|
|
466 | (3) |
|
Chapter 30 Real-Time Ray Traced Caustics |
|
|
469 | (30) |
|
|
469 | (2) |
|
30.2 Adaptive Anisotropic Photon Scattering |
|
|
471 | (15) |
|
30.3 Ray-Guided Water Caustics |
|
|
486 | (10) |
|
|
496 | (3) |
|
Chapter 31 Tilt-Shift Rendering Using a Thin Lens Model |
|
|
499 | (18) |
|
|
499 | (1) |
|
|
500 | (4) |
|
|
504 | (2) |
|
|
506 | (1) |
|
|
507 | (4) |
|
|
511 | (6) |
|
|
517 | (96) |
|
Chapter 32 Fast and Robust Ray/OBB Intersection Using the Lorentz Transformation |
|
|
519 | (10) |
|
|
519 | (1) |
|
|
520 | (1) |
|
32.3 Ray/AABB Intersection |
|
|
521 | (2) |
|
32.4 Ray/OBB Intersection |
|
|
523 | (2) |
|
32.5 Computing Additional Intersection Data |
|
|
525 | (1) |
|
|
526 | (3) |
|
Chapter 33 Real-Time Rendering of Complex Fractals |
|
|
529 | (16) |
|
|
529 | (3) |
|
|
532 | (5) |
|
|
537 | (5) |
|
|
542 | (3) |
|
Chapter 34 Improving Numerical Precision in Intersection Programs |
|
|
545 | (6) |
|
|
545 | (1) |
|
|
546 | (5) |
|
Chapter 35 Ray Tracing of Blobbies |
|
|
551 | (18) |
|
|
551 | (2) |
|
35.2 Anisotropic Blobbies |
|
|
553 | (1) |
|
35.3 BVH and Higher-Order Motion Blur |
|
|
554 | (2) |
|
35.4 Intersection Methods |
|
|
556 | (9) |
|
|
565 | (4) |
|
Chapter 36 Curved Ray Traversal |
|
|
569 | (30) |
|
|
569 | (2) |
|
|
571 | (7) |
|
|
578 | (16) |
|
|
594 | (5) |
|
Chapter 37 Ray-Tracing Small Voxel Scenes |
|
|
599 | (14) |
|
|
599 | (1) |
|
|
600 | (1) |
|
37.3 Geometry and Acceleration Structures |
|
|
600 | (3) |
|
|
603 | (3) |
|
|
606 | (2) |
|
|
608 | (5) |
|
|
613 | (124) |
|
Chapter 38 CPU Performance in DXR |
|
|
615 | (10) |
|
|
615 | (1) |
|
38.2 The Ray Tracing Pipeline State Object |
|
|
615 | (2) |
|
|
617 | (2) |
|
38.4 The Acceleration Structure |
|
|
619 | (4) |
|
|
623 | (2) |
|
Chapter 39 Inverse Transform Sampling Using Ray Tracing Hardware |
|
|
625 | (18) |
|
|
625 | (2) |
|
39.2 Traditional 2D Texture Importance Sampling |
|
|
627 | (3) |
|
|
630 | (1) |
|
39.4 Ray Traced Inverse Transform Sampling |
|
|
630 | (3) |
|
39.5 Implementation Details |
|
|
633 | (2) |
|
|
635 | (5) |
|
39.7 Conclusion and Future Work |
|
|
640 | (3) |
|
Chapter 40 Accelerating Boolean Visibility Operations Using RTX Visibility Masks |
|
|
643 | (16) |
|
|
643 | (1) |
|
|
644 | (1) |
|
|
645 | (1) |
|
|
645 | (2) |
|
40.5 Visibility Masks as Boolean Visibility Functions |
|
|
647 | (2) |
|
40.6 Accelerated Expressions |
|
|
649 | (2) |
|
|
651 | (5) |
|
40.8 Camera Initialization |
|
|
656 | (3) |
|
Chapter 41 Practical Spatial Hash Map Updates |
|
|
659 | (14) |
|
|
660 | (1) |
|
|
660 | (4) |
|
41.3 Complex Data Storage and Update |
|
|
664 | (1) |
|
|
665 | (3) |
|
|
668 | (2) |
|
|
670 | (3) |
|
Chapter 42 Efficient Spectral Rendering on the GPU for Predictive Rendering |
|
|
673 | (26) |
|
|
673 | (2) |
|
42.2 Introduction to Spectral Rendering |
|
|
675 | (4) |
|
42.3 Spectral Rendering on the GPU |
|
|
679 | (6) |
|
42.4 Multiplexing with Semitransparent Materials |
|
|
685 | (4) |
|
42.5 A Step Toward Real-Time Performance |
|
|
689 | (4) |
|
|
693 | (3) |
|
42.7 Conclusion and Outlook |
|
|
696 | (3) |
|
Chapter 43 Efficient Unbiased Volume Path Tracing on the GPU |
|
|
699 | (14) |
|
|
700 | (2) |
|
43.2 Compressed Data Structure |
|
|
702 | (1) |
|
43.3 Filtering and Range Dilation |
|
|
703 | (1) |
|
|
704 | (3) |
|
|
707 | (3) |
|
|
710 | (3) |
|
Chapter 44 Path Tracing RBF Particle Volumes |
|
|
713 | (12) |
|
|
714 | (1) |
|
|
715 | (2) |
|
|
717 | (2) |
|
44.4 Results and Conclusion |
|
|
719 | (6) |
|
Chapter 45 Fast Volumetric Gradient Shading Approximations for Scientific Ray Tracing |
|
|
725 | (12) |
|
|
725 | (2) |
|
|
727 | (1) |
|
|
728 | (4) |
|
|
732 | (5) |
|
PART VII Ray Tracing in the Wild |
|
|
737 | |
|
Chapter 46 Ray Tracing in Control |
|
|
739 | (26) |
|
|
739 | (3) |
|
|
742 | (3) |
|
46.3 Transparent Reflections |
|
|
745 | (4) |
|
46.4 Near Field Indirect Diffuse Illumination |
|
|
749 | (1) |
|
|
750 | (3) |
|
|
753 | (8) |
|
|
761 | (2) |
|
|
763 | (2) |
|
Chapter 47 Light Sampling in Quake 2 Using Subset Importance Sampling |
|
|
765 | (26) |
|
|
765 | (2) |
|
|
767 | (1) |
|
|
768 | (3) |
|
47.4 Stochastic Light Subset Sampling |
|
|
771 | (6) |
|
47.5 Reducing Variance with Pseudo-marginal MIS |
|
|
777 | (4) |
|
47.6 Stochastic Light Subset MIS |
|
|
781 | (2) |
|
47.7 Results and Discussion |
|
|
783 | (3) |
|
|
786 | (5) |
|
Chapter 48 Ray Tracing in Fortnite |
|
|
791 | (32) |
|
|
791 | (1) |
|
|
792 | (1) |
|
|
793 | (1) |
|
|
794 | (25) |
|
|
819 | (1) |
|
|
819 | (4) |
|
Chapter 49 ReBLUR: A Hierarchical Recurrent Denoiser |
|
|
823 | (22) |
|
|
823 | (2) |
|
49.2 Definitions and Acronyms |
|
|
825 | (1) |
|
|
825 | (1) |
|
|
826 | (1) |
|
|
827 | (4) |
|
49.6 Disocclusion Handling |
|
|
831 | (1) |
|
49.7 Diffuse Accumulation |
|
|
831 | (1) |
|
49.8 Specular Accumulation |
|
|
832 | (7) |
|
|
839 | (1) |
|
|
840 | (1) |
|
|
841 | (1) |
|
|
842 | (1) |
|
|
842 | (1) |
|
|
843 | (2) |
|
Chapter 50 Practical Solutions for Ray Tracing Content Compatibility in Unreal Engine 4 |
|
|
845 | |
|
|
846 | (1) |
|
|
846 | (8) |
|
|
854 | (4) |
|
|
858 | |