diff --git a/Pictures/chap01/BraunRazor.png b/Pictures/chap01/BraunRazor.png new file mode 100644 index 0000000..5b8adab Binary files /dev/null and b/Pictures/chap01/BraunRazor.png differ diff --git a/Pictures/chap01/gravity.png b/Pictures/chap01/gravity.png new file mode 100644 index 0000000..fca3a86 Binary files /dev/null and b/Pictures/chap01/gravity.png differ diff --git a/Pictures/chap01/hobbit.png b/Pictures/chap01/hobbit.png new file mode 100644 index 0000000..8b065bf Binary files /dev/null and b/Pictures/chap01/hobbit.png differ diff --git a/Pictures/chap02/dof-dragons-848.png b/Pictures/chap02/dof-dragons-848.png new file mode 100644 index 0000000..a798fe9 Binary files /dev/null and b/Pictures/chap02/dof-dragons-848.png differ diff --git a/bibliography.bib b/bibliography.bib index cf11867..2c166e6 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -113,26 +113,22 @@ @article{10.1145/358876.358882 keywords = {computer animation, visible surface algorithms, computer graphics, shading, raster displays} } -@article{10.1145/74334.74361, - author = {Kajiya, J. T. and Kay, T. L.}, - title = {Rendering Fur with Three Dimensional Textures}, - year = {1989}, - issue_date = {July 1989}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = {23}, - number = {3}, - issn = {0097-8930}, - url = {https://doi.org/10.1145/74334.74361}, - doi = {10.1145/74334.74361}, - abstract = {We present a method for rendering scenes with fine detail via an object called a texel, a rendering primitive inspired by volume densities mixed with anisotropic lighting models. This technique solves a long outstanding problem in image synthesis: the rendering of furry surfaces.}, - journal = {SIGGRAPH Comput. Graph.}, - month = jul, - pages = {271–280}, - numpages = {10} +@inproceedings{10.1145/74333.74361, + author = {Kajiya, J. T. and Kay, T. L.}, + title = {Rendering Fur with Three Dimensional Textures}, + year = {1989}, + isbn = {0897913124}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/74333.74361}, + doi = {10.1145/74333.74361}, + abstract = {We present a method for rendering scenes with fine detail via an object called a texel, a rendering primitive inspired by volume densities mixed with anisotropic lighting models. This technique solves a long outstanding problem in image synthesis: the rendering of furry surfaces.}, + booktitle = {Proceedings of the 16th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {271–280}, + numpages = {10}, + series = {SIGGRAPH '89} } - @inproceedings{10.1145/74333.74361, author = {Kajiya, J. T. and Kay, T. L.}, title = {Rendering Fur with Three Dimensional Textures}, @@ -172,18 +168,655 @@ @inbook{10.5555/90767.90913 numpages = {18} } -@misc{enwiki:1014110231, - author = {{Wikipedia contributors}}, - title = {Quaternion --- {Wikipedia}{,} The Free Encyclopedia}, - year = {2021}, - howpublished = {\url{https://en.wikipedia.org/w/index.php?title=Quaternion&oldid=1014110231}}, - note = {[Online; accessed 16-April-2021]} -} - @misc{enwiki:1013104981, author = {{Wikipedia contributors}}, title = {Division ring --- {Wikipedia}{,} The Free Encyclopedia}, year = {2021}, howpublished = {\url{https://en.wikipedia.org/w/index.php?title=Division_ring&oldid=1013104981}}, note = {[Online; accessed 16-April-2021]} -} \ No newline at end of file +} + +# 1.7 +@inproceedings{10.1145/800224.806819, + author = {Cook, Robert L. and Torrance, Kenneth E.}, + title = {A Reflectance Model for Computer Graphics}, + year = {1981}, + isbn = {0897910451}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/800224.806819}, + doi = {10.1145/800224.806819}, + abstract = {This paper presents a new reflectance model for rendering computer synthesized images. The model accounts for the relative brightness of different materials and light sources in the same scene. It describes the directional distribution of the reflected light and a color shift that occurs as the reflectance changes with incidence angle. The paper presents a method for obtaining the spectral energy distribution of the light reflected from an object made of a specific real material and discusses a procedure for accurately reproducing the color associated with the spectral energy distribution. The model is applied to the simulation of a metal and a plastic.}, + booktitle = {Proceedings of the 8th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {307–316}, + numpages = {10}, + keywords = {Reflectance, Computer graphics, Shading, Image synthesis}, + location = {Dallas, Texas, USA}, + series = {SIGGRAPH '81} +} + + +@article{10.1145/357290.357293, + author = {Cook, Robert L. and Torrance, Kenneth E.}, + title = {A Reflectance Model for Computer Graphics}, + year = {1982}, + issue_date = {Jan. 1982}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {1}, + number = {1}, + issn = {0730-0301}, + url = {https://doi.org/10.1145/357290.357293}, + doi = {10.1145/357290.357293}, + journal = {ACM Trans. Graph.}, + month = jan, + pages = {7–24}, + numpages = {18}, + keywords = {image synthesis, reflectance} +} + +@inproceedings{10.1145/800031.808601, + author = {Goral, Cindy M. and Torrance, Kenneth E. and Greenberg, Donald P. and Battaile, Bennett}, + title = {Modeling the Interaction of Light between Diffuse Surfaces}, + year = {1984}, + isbn = {0897911385}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/800031.808601}, + doi = {10.1145/800031.808601}, + abstract = {A method is described which models the interaction of light between diffusely reflecting surfaces. Current light reflection models used in computer graphics do not account for the object-to-object reflection between diffuse surfaces, and thus incorrectly compute the global illumination effects. The new procedure, based on methods used in thermal engineering, includes the effects of diffuse light sources of finite area, as well as the “color-bleeding” effects which are caused by the diffuse reflections. A simple environment is used to illustrate these simulated effects and is presented with photographs of a physical model. The procedure is applicable to environments composed of ideal diffuse reflectors and can account for direct illumination from a variety of light sources. The resultant surface intensities are independent of observer position, and thus environments can be preprocessed for dynamic sequences.}, + booktitle = {Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {213–222}, + numpages = {10}, + keywords = {Diffuse reflections, Shading, Radiosity, Light reflection models, Form factors}, + series = {SIGGRAPH '84} +} + +@inproceedings{10.1145/325334.325171, + author = {Cohen, Michael F. and Greenberg, Donald P.}, + title = {The Hemi-Cube: A Radiosity Solution for Complex Environments}, + year = {1985}, + isbn = {0897911660}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/325334.325171}, + doi = {10.1145/325334.325171}, + abstract = {This paper presents a comprehensive method to calculate object to object diffuse reflections within complex environments containing hidden surfaces and shadows. In essence, each object in the environment is treated as a secondary light source. The method provides an accurate representation of the "diffuse" and "ambient" terms found in typical image synthesis algorithms. The phenomena of "color bleeding" from one surface to another, shading within shadow envelopes, and penumbras along shadow boundaries are accurately reproduced. Additional advantages result because computations are indepedent of viewer position. This allows the efficient rendering of multiple views of the same scene for dynamic sequences. Light sources can be modulated and object reflectivities can be changed, with minimal extra computation. The procedures extend the radiosity method beyond the bounds previously imposed.}, + booktitle = {Proceedings of the 12th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {31–40}, + numpages = {10}, + keywords = {hidden surface, form-factors, depth buffer, radiosity, diffuse reflections}, + series = {SIGGRAPH '85} +} + +@inproceedings{10.1145/325334.325169, + author = {Nishita, Tomoyuki and Nakamae, Eihachiro}, + title = {Continuous Tone Representation of Three-Dimensional Objects Taking Account of Shadows and Interreflection}, + year = {1985}, + isbn = {0897911660}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/325334.325169}, + doi = {10.1145/325334.325169}, + abstract = {The effect of shadows and interreflection created by room obstructions is an important factor in the continuous tone representation of interiors. For indirect illumination, in most cases a uniform ambient light has been considered, even though the interreflection gives very complex effects with the shaded images.The proposed method for indirect lighting with shadows results in the following advanced points:1) The indirect illuminance caused by the surfaces of objects such as ceilings, floors, walls, desks, bookcases etc. gives added realism to images.2) The proposed method is suitable for every type of light source such as point sources, linear sources, and area sources.}, + booktitle = {Proceedings of the 12th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {23–30}, + numpages = {8}, + keywords = {diffuse reflections, penumbrae, interreflection of light, shading, area light source, shadows}, + series = {SIGGRAPH '85} +} + +@inproceedings{10.1145/800031.808590, + author = {Cook, Robert L. and Porter, Thomas and Carpenter, Loren}, + title = {Distributed Ray Tracing}, + year = {1984}, + isbn = {0897911385}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/800031.808590}, + doi = {10.1145/800031.808590}, + abstract = { Ray tracing is one of the most elegant techniques in computer graphics. Many phenomena that are difficult or impossible with other techniques are simple with ray tracing, including shadows, reflections, and refracted light. Ray directions, however, have been determined precisely, and this has limited the capabilities of ray tracing. By distributing the directions of the rays according to the analytic function they sample, ray tracing can incorporate fuzzy phenomena. This provides correct and easy solutions to some previously unsolved or partially solved problems, including motion blur, depth of field, penumbras, translucency, and fuzzy reflections. Motion blur and depth of field calculations can be integrated with the visible surface calculations, avoiding the problems found in previous methods. }, + booktitle = {Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {137–145}, + numpages = {9}, + keywords = {Transparency, Depth of field, Gloss, Shadows, Camera, Motion blur, Translucency, Penumbras, Constructive solid geometry, Focus, Ray tracing}, + series = {SIGGRAPH '84} +} + +@inproceedings{10.1145/15922.15902, + author = {Kajiya, James T.}, + title = {The Rendering Equation}, + year = {1986}, + isbn = {0897911962}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/15922.15902}, + doi = {10.1145/15922.15902}, + abstract = {We present an integral equation which generalizes a variety of known rendering algorithms. In the course of discussing a monte carlo solution we also present a new form of variance reduction, called Hierarchical sampling and give a number of elaborations shows that it may be an efficient new technique for a wide variety of monte carlo procedures. The resulting rendering algorithm extends the range of optical phenomena which can be effectively simulated.}, + booktitle = {Proceedings of the 13th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {143–150}, + numpages = {8}, + series = {SIGGRAPH '86} +} + +@article{farmer1981comparing, + title = {Comparing the 4341 and M80/42}, + author = {Farmer, DF}, + journal = {Computerworld}, + volume = {15}, + pages = {9--20}, + year = {1981} +} + +@inproceedings{10.1145/800031.808594, + author = {Kajiya, James T. and Von Herzen, Brian P}, + title = {Ray Tracing Volume Densities}, + year = {1984}, + isbn = {0897911385}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/800031.808594}, + doi = {10.1145/800031.808594}, + abstract = {This paper presents new algorithms to trace objects represented by densities within a volume grid, e.g. clouds, fog, flames, dust, particle systems. We develop the light scattering equations, discuss previous methods of solution, and present a new approximate solution to the full three-dimensional radiative scattering problem suitable for use in computer graphics. Additionally we review dynamical models for clouds used to make an animated movie.}, + booktitle = {Proceedings of the 11th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {165–174}, + numpages = {10}, + keywords = {Light scattering, Stochastic modeling, Clouds, Radiative transport, Particle systems, Simulation of natural phenomena, Computer graphics, Ray tracing, Raster graphics}, + series = {SIGGRAPH '84} +} + +@inproceedings{10.1145/97879.97886, + author = {Arvo, James and Kirk, David}, + title = {Particle Transport and Image Synthesis}, + year = {1990}, + isbn = {0897913442}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/97879.97886}, + doi = {10.1145/97879.97886}, + abstract = {The rendering equation is similar to the linear Boltzmann equation which has been widely studied in physics and nuclear engineering. Consequently, many of the powerful techniques which have been developed in these fields can be applied to problems in image synthesis. In this paper we adapt several statistical techniques commonly used in neutron transport to stochastic ray tracing and, more generally, to Monte Carlo solution of the rendering equation. First, we describe a technique known as Russian roulette which can be used to terminate the recursive tracing of rays without introducing statistical bias. We also examine the practice of creating ray trees in classical ray tracing in the light of a well-known technique in particle transport known as splitting. We show that neither ray trees nor paths as described in [10] constitute an optimal sampling plan in themselves and that a hybrid may be more efficient.}, + booktitle = {Proceedings of the 17th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {63–66}, + numpages = {4}, + location = {Dallas, TX, USA}, + series = {SIGGRAPH '90} +} + +@inproceedings{10.1145/122718.122735, + author = {Kirk, David and Arvo, James}, + title = {Unbiased Sampling Techniques for Image Synthesis}, + year = {1991}, + isbn = {0897914368}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/122718.122735}, + doi = {10.1145/122718.122735}, + abstract = {We examine a class of adaptive sampling techniques employed in image synthesis and show that those commonly used for efficient anti-aliasing are statistically biased. This bias is dependent upon the image function being sampled as well as the strategy for determining the number of samples to use. It is most prominent in areas of high contrast and is attributable to early stages of sampling systematically favoring one extreme or the other. If the expected outcome of the entire adaptive sampling algorithm is considered, we find that the bias of the early decisions is still present in the final estimator. We propose an alternative strategy for performing adaptive sampling that is unbiased but potentially more costly. We conclude that it may not always be practical to mitigate this source of bias, but as a source of error it should be considered when high accuracy and image fidelity are a central concern.}, + booktitle = {Proceedings of the 18th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {153–156}, + numpages = {4}, + keywords = {statistical bias, adaptive sampling, Monte Carlo, antialiasing}, + series = {SIGGRAPH '91} +} + +@phdthesis{10.5555/124947, + author = {Shirley, Peter S.}, + title = {Physically Based Lighting Calculations for Computer Graphics}, + year = {1991}, + institution = {University of Illinois at Urbana-Champaign}, + address = {USA}, + abstract = {Realistic image generation is presented in a theoretical formulation that builds from previous work on the rendering equation. Previous and new solution techniques for the global illumination are discussed in the context of this formulation. The physical rules governing reflection are used to make improvements in local reflection models. The conventional local illumination models used in computer graphics are examined and modified to be consistent with these physical rules.Global illumination is treated in terms of evaluation of a Global Radiance Function. Image-based solution methods are phrased as a lazy evaluation of the Global Radiance Function; evaluation takes place for visible points. Zonal solution methods are phrased as table based solutions. A proof is given that, subject to certain constraints, only O(N) rays are required for a zonal solution with N zones. Simulation allows for surfaces which are not zoned to interact with those that are.The ray tracing zonal solution methods used for surfaces are extended to scenes with participating media. The impact of wavelength selection and time dependencies is also discussed.An object oriented implementation is discussed. This implementation separates the local and global illumination modules, so all of the specifics of the local models are hidden from the global energy transport code. This allows new local modules to be added by specifying the black box access routines.}, + note = {UMI Order NO. GAX91-24487} +} + +@article{10.1145/226150.226151, + author = {Shirley, Peter and Wang, Changyaw and Zimmerman, Kurt}, + title = {Monte Carlo Techniques for Direct Lighting Calculations}, + year = {1996}, + issue_date = {Jan. 1996}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {15}, + number = {1}, + issn = {0730-0301}, + url = {https://doi.org/10.1145/226150.226151}, + doi = {10.1145/226150.226151}, + abstract = {In a distributed ray tracer, the sampling strategy is the crucial part of the direct lighting calculation. Monte Carlo integration with importance sampling is used to carry out this calculation. Importance sampling involves the design of integrand-specific probability density functions that are used to generate sample points for the numerical quadrature. Probability density functions are presented that aid in the direct lighting calculation from luminaires of various simple shapes. A method for defining a probability density function over a set of luminaires is presented that allows the direct lighting calculation to be carried out with a number of sample points that is independent of the number of luminaires.}, + journal = {ACM Trans. Graph.}, + month = jan, + pages = {1–36}, + numpages = {36}, + keywords = {Monte Carlo integration, ray tracing, direct lighting, realistic image synthesis, importance sampling, luminaires} +} + +@book{10.5555/63450, + author = {Hall, Roy}, + title = {Illumination and Color in Computer Generated Imagery}, + year = {1988}, + isbn = {0387967745}, + publisher = {Springer-Verlag}, + address = {Berlin, Heidelberg} +} + +@book{10.5555/527570, + author = {Glassner, Andrew S.}, + title = {Principles of Digital Image Synthesis}, + year = {1994}, + isbn = {1558602763}, + publisher = {Morgan Kaufmann Publishers Inc.}, + address = {San Francisco, CA, USA}, + abstract = {From the Publisher:Image synthesis, or rendering, is a field of transformation: it changes geometry and physics into meaningful images. Because the most popular algorithms frequently change, it is increasingly important for researchers and implementors to have a basic understanding of the principles of image synthesis. Focusing on theory, Andrew Glassner provides a comprehensive explanation of the three core fields of study that come together to form digital image synthesis: the human visual system, digital signal processing, and the interaction of matter and light. Assuming no more than a basic background in calculus, Glassner transforms his passion and expertise into a thorough presentation of each of these disciplines, and their elegant orchestration into modern rendering techniques such as radiosity and ray tracing.} +} + +@inproceedings{10.1145/192161.192286, + author = {Ward, Gregory J.}, + title = {The RADIANCE Lighting Simulation and Rendering System}, + year = {1994}, + isbn = {0897916670}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/192161.192286}, + doi = {10.1145/192161.192286}, + abstract = {This paper describes a physically-based rendering system tailored to the demands of lighting design and architecture. The simulation uses a light-backwards ray-tracing method with extensions to efficiently solve the rendering equation under most conditions. This includes specular, diffuse and directional-diffuse reflection and transmission in any combination to any level in any environment, including complicated, curved geometries. The simulation blends deterministic and stochastic ray-tracing techniques to achieve the best balance between speed and accuracy in its local and global illumination methods. Some of the more interesting techniques are outlined, with references to more detailed descriptions elsewhere. Finally, examples are given of successful applications of this free software by others.}, + booktitle = {Proceedings of the 21st Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {459–472}, + numpages = {14}, + keywords = {Monte Carlo, physically-based rendering, lighting simulation, ray-tracing, radiosity}, + series = {SIGGRAPH '94} +} + +@phdthesis{slusallek1996vision, + title = {Vision-an Architecture for Physically-based Rendering: Vision-Eine Architektur F{\"u}r Die Physikalisch-basierte Bildsynthese}, + author = {Slusallek, Philipp}, + year = {1995}, + month = {04}, + institution = {University of Erlangen, Inst. f{\"u}r Math. Maschinen und Datenverarbeitung (Informatik), Computer Graphics Group} +} + +@inproceedings{10.1145/258734.258914, + author = {Greenberg, Donald P. and Torrance, Kenneth E. and Shirley, Peter and Arvo, James and Lafortune, Eric and Ferwerda, James A. and Walter, Bruce and Trumbore, Ben and Pattanaik, Sumanta and Foo, Sing-Choong}, + title = {A Framework for Realistic Image Synthesis}, + year = {1997}, + isbn = {0897918967}, + publisher = {ACM Press/Addison-Wesley Publishing Co.}, + address = {USA}, + url = {https://doi.org/10.1145/258734.258914}, + doi = {10.1145/258734.258914}, + booktitle = {Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {477–494}, + numpages = {18}, + keywords = {light reflection, perception, realistic image synthesis}, + series = {SIGGRAPH '97} +} + +@phdthesis{veach1997robust, + title = {Robust Monte Carlo methods for light transport simulation}, + author = {Veach, Eric}, + year = {1997}, + month = {12}, + school = {Stanford University}, + url = {http://graphics.stanford.edu/papers/veach_thesis} +} + +@inproceedings{10.1007/978-3-7091-6242-2_26, + author = {Wald, Ingo and Slusallek, Philipp and Benthin, Carsten}, + editor = {Gortler, Steven J. and Myszkowski, Karol}, + title = {Interactive Distributed Ray Tracing of Highly Complex Models}, + booktitle = {Rendering Techniques 2001}, + year = {2001}, + publisher = {Springer Vienna}, + address = {Vienna}, + pages = {277--288}, + abstract = {Many disciplines must handle the creation, visualization, and manipulation of huge and complex 3D environments. Examples include large structural and mechanical engineering projects dealing with entire cars, ships, buildings, and processing plants. The complexity of such models is usually far beyond the interactive rendering capabilities of todays 3D graphics hardware. Previous approaches relied on costly preprocessing for reducing the number of polygons that need to be rendered per frame but suffered from excessive precomputation times --- often several days or even weeks.}, + isbn = {978-3-7091-6242-2} +} + +@inproceedings{10.1145/37401.37414, + author = {Cook, Robert L. and Carpenter, Loren and Catmull, Edwin}, + title = {The Reyes Image Rendering Architecture}, + year = {1987}, + isbn = {0897912276}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/37401.37414}, + doi = {10.1145/37401.37414}, + abstract = {An architecture is presented for fast high-quality rendering of complex images. All objects are reduced to common world-space geometric entities called micropolygons, and all of the shading and visibility calculations operate on these micropolygons. Each type of calculation is performed in a coordinate system that is natural for that type of calculation. Micropolygons are created and textured in the local coordinate sysem of the object, with the result that texture filtering is simplified and improved. Visibility is calculated in screen space using stochastic point sampling with a z buffer. There are no clipping or inverse perspective calculations. Geometric and texture locality are exploited to minimize paging and to support models that contain arbitrarily many primitives.}, + booktitle = {Proceedings of the 14th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {95–102}, + numpages = {8}, + series = {SIGGRAPH '87} +} + +@article{snow2010terminators, + title = {Terminators and Iron Men: Image-based lighting and physical shading at ILM}, + author = {Snow, Ben}, + journal = {part of “Physically Based Shading Models in Film and Game Production,” SIGGRAPH}, + year = {2010} +} + + @online{ohmer1997, + title = {Ray Tracers: Blue Sky Studios}, + url = {https://www.awn.com/animationworld/ray-tracers-blue-sky-studios}, + organization = {Animation World Network}, + author = {Ohmer, Susan}, + date = {1997-05-01} +} + +@inproceedings{10.1145/2776880.2792699, + author = {Keller, A. and Fascione, L. and Fajardo, M. and Georgiev, I. and Christensen, P. and Hanika, J. and Eisenacher, C. and Nichols, G.}, + title = {The Path Tracing Revolution in the Movie Industry}, + year = {2015}, + isbn = {9781450336345}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/2776880.2792699}, + doi = {10.1145/2776880.2792699}, + abstract = {As path tracing allows for more realistic and faster lighting, an increasing number of movies are created the physically based way. With examples from recent movies, the architectures and novel workflows of the next generation of production renderers are introduced to a wide audience including technical directors, artists, and researchers.}, + booktitle = {ACM SIGGRAPH 2015 Courses}, + articleno = {24}, + numpages = {7}, + location = {Los Angeles, California}, + series = {SIGGRAPH '15} +} + +% 1.8 +@inproceedings{10.1145/1468075.1468082, + author = {Appel, Arthur}, + title = {Some Techniques for Shading Machine Renderings of Solids}, + year = {1968}, + isbn = {9781450378970}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/1468075.1468082}, + doi = {10.1145/1468075.1468082}, + abstract = {Some applications of computer graphics require a vivid illusion of reality. These include the spatial organization of machine parts, conceptual architectural design, simulation of mechanisms, and industrial design. There has been moderate success in the automatic generation of wire frame, cardboard model, polyhedra, and quadric surface line drawings. The capability of the machine to generate vivid sterographic pictures has been demonstrated. There are, however considerable reasons for developing techniques by which line drawings of solids can be shaded, especially the enhancement of the sense of solidity and depth. Figures 1 and 2 illustrate the value of shading and shadow casting in spatial description. In the line drawing there is no clue as to the relative position of the flat plane and the sheet metal console. When shadows are rendered, it is clear that the plane is below and to the rear of the console, and the hollow nature of the sheet metal assembly is emphasized. Shading can specify the tone or color of a surface and the amount of light falling upon that surface from one or more light sources. Shadows when sharply defined tend to suggest another viewpoint and improves surface definition. When controlled, shading can also emphasize particular parts of the drawing. If techniques for the automatic determination of chiaroscuro with good resolution should prove to be competitive with line drawings, and this is a possibility, machine generated photographs might replace line drawings as the principal mode of graphical communication in engineering and architecture.}, + booktitle = {Proceedings of the April 30--May 2, 1968, Spring Joint Computer Conference}, + pages = {37–45}, + numpages = {9}, + location = {Atlantic City, New Jersey}, + series = {AFIPS '68 (Spring)} +} + +@article{doi:10.1177/003754977101600104, + author = {Robert A. Goldstein and Roger Nagel}, + title = {3-D Visual simulation}, + journal = {SIMULATION}, + volume = {16}, + number = {1}, + pages = {25-31}, + year = {1971}, + doi = {10.1177/003754977101600104}, + url = {https://doi.org/10.1177/003754977101600104}, + eprint = {https://doi.org/10.1177/003754977101600104}, + abstract = {This paper describes a visual simulation technique by which fully computer-generated perspective views of three-dimensional objects may be produced. The method is based on a relatively simple geometric modeling technique for the mathematical representa tion of the three elements essential to the picture- taking process, namely, a camera, a light source, and the object or objects to be photographed. Once these three basic components have been defined, geometric ray tracing is employed to compute a "picture" of the object as it appears in the simu- Zated camera. In essence, individual light rays are traced from their source to the surface of the object. The reflected component of each ray is computed and traced to its point of intersection with the film plane. Thus, each reflected ray pro vides the intensity at a single point on the pic ture, and, when a sufficient number of points have been computed, the entire area of intensity data may be displayed on a cathode ray tube. Several examples of the pictorial output of this process are shown, and the application to the computer- generated films is discussed. } +} + +@inproceedings{10.1145/800249.807438, + author = {Kay, Douglas Scott and Greenberg, Donald}, + title = {Transparency for Computer Synthesized Images}, + year = {1979}, + isbn = {0897910044}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/800249.807438}, + doi = {10.1145/800249.807438}, + abstract = {Simple transparency algorithms which assume a linear transparency over an entire surface are the type most often employed to produce computer synthesized images of transparent objects with curved surfaces. Although most of the images created with these algorithms do give the impression of transparency, they usually do not look realistic. One of the most serious problems is that the intensity of the light that is transmitted through the objects is generally not proportional to the amount of material through which it must pass. Another problem is that the image seen behind the objects is not distorted as would naturally occur when the light is refracted as it passes through a material of different density.Use of a non-linear transparency algorithm can provide a great improvement in the realism of an image at a small additional cost. Making the transparency proportional to the normal to the surface causes it to decrease towards the edges of the surface where the path of the light through the object is longer. The exact simulation of refraction, however, requires that each sight ray be individually traced from the observer, through the picture plane and through each transparent object until an opaque surface is intersected. Since the direction of the ray would change as each material of differing optical density was entered, the hidden surface calculations required would be very time consuming. However, if a few assumptions are made about the geometry of each object and about the conditions under which they are viewed, a much simplier algorithm can be used to approximate the refractive effect. This method proceeds in a back to front order, mapping the current background image onto the next surface, until all surfaces have been considered.}, + booktitle = {Proceedings of the 6th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {158–164}, + numpages = {7}, + keywords = {Computer graphics, Refraction, Image synthesis, Shading, Transparency}, + location = {Chicago, Illinois, USA}, + series = {SIGGRAPH '79} +} + +@inproceedings{10.1145/37401.37411, + author = {Heckbert, Paul S.}, + title = {Ray Tracing JELL-OTM Brand Gelatin}, + year = {1987}, + isbn = {0897912276}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/37401.37411}, + doi = {10.1145/37401.37411}, + abstract = {Ray tracing has established itself in recent years as the most general image synthesis algorithm. Researchers have investigated ray-surface intersection calculations for a number of surface primitives, including checkerboards, glass balls, green fractal hills, mandrills, abstract blue surfaces, more glass balls, robot arms, pool balls, low-resolution clouds, morphine molecules, aquatic blobby things making strange noises, fantastic cities, and running skeletons. Unfortunately, nobody has ray traced any food. The Dessert Realism Project here at Pixar is addressing this problem. This paper presents new technology for ray tracing Jell-O® brand gelatin. We believe the method may have application to other brands of gelatin and perhaps pudding as well.}, + booktitle = {Proceedings of the 14th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {73–74}, + numpages = {2}, + series = {SIGGRAPH '87} +} + +@article{10.1145/37402.37411, + author = {Heckbert, Paul S.}, + title = {Ray Tracing JELL-OTM Brand Gelatin}, + year = {1987}, + issue_date = {July 1987}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {21}, + number = {4}, + issn = {0097-8930}, + url = {https://doi.org/10.1145/37402.37411}, + doi = {10.1145/37402.37411}, + abstract = {Ray tracing has established itself in recent years as the most general image synthesis algorithm. Researchers have investigated ray-surface intersection calculations for a number of surface primitives, including checkerboards, glass balls, green fractal hills, mandrills, abstract blue surfaces, more glass balls, robot arms, pool balls, low-resolution clouds, morphine molecules, aquatic blobby things making strange noises, fantastic cities, and running skeletons. Unfortunately, nobody has ray traced any food. The Dessert Realism Project here at Pixar is addressing this problem. This paper presents new technology for ray tracing Jell-O® brand gelatin. We believe the method may have application to other brands of gelatin and perhaps pudding as well.}, + journal = {SIGGRAPH Comput. Graph.}, + month = aug, + pages = {73–74}, + numpages = {2} +} + +@book{10.5555/154731, + author = {Cohen, Michael F. and Wallace, John and Hanrahan, Pat}, + title = {Radiosity and Realistic Image Synthesis}, + year = {1993}, + isbn = {0121782700}, + publisher = {Academic Press Professional, Inc.}, + address = {USA} +} + +@book{10.5555/561383, + author = {Sillion, Francois X. and Puech, Claude}, + title = {Radiosity and Global Illumination}, + year = {1994}, + isbn = {1558602771}, + publisher = {Morgan Kaufmann Publishers Inc.}, + address = {San Francisco, CA, USA}, + abstract = {From the Publisher:The radiosity method, originally a computation tool for thermal engineers, has evolved in recent years into a powerful and flexible simulation technique for radiant energy transfer. The ability to compute quantitatively accurate simulations of light transfers has opened a vast domain of applications for computer graphics. Thermal radiation studies, lighting design and remote sensing are a few of the fields affected by this exciting technique for producing synthetic images. Here, the authors reformulate some of the most recent and innovative research results into a consistent framework, allowing readers to quickly acquire a comprehensive view of the technique and its derivatives. In addition to reviewing practical issues and offering recommendations, the authors also provide a complete theoretical presentation of the various radiosity algorithms.Special highlights include 93 illustrations and 45 color plates and a practical guide which provides detailed information on various design issues for the development of global illumination software.} +} + +@book{10.5555/200607, + author = {Ashdown, Ian}, + title = {Radiosity: A Programmer's Perspective}, + year = {1995}, + isbn = {0471304883}, + publisher = {John Wiley \& Sons, Inc.}, + address = {USA} +} + +@inproceedings{Kirk88theray, + author = {David Kirk and James Arvo and Apollo Computer}, + title = {The Ray Tracing Kernel}, + booktitle = {In Proceedings of Ausgraph}, + year = {1988}, + pages = {75--82} +} + +@book{10.5555/94788, + editor = {Glassner, Andrew S.}, + title = {An Introduction to Ray Tracing}, + year = {1989}, + isbn = {0122861604}, + publisher = {Academic Press Ltd.}, + address = {GBR} +} + +@book{10.5555/940410, + author = {Shirley, Peter and Morley, R. Keith}, + title = {Realistic Ray Tracing}, + year = {2003}, + isbn = {1568811985}, + publisher = {A. K. Peters, Ltd.}, + address = {USA}, + edition = {2}, + abstract = {From the Publisher:Realistic Ray Tracing is an innovative, in-depth look at the theory and techniques of ray tracing, a method of producing photorealistic computer graphics images by applying simple algorithms. This book will guide you through the steps of creating your own powerful ray tracer program, proceeding from simple images through advanced special effects such as soft shadows, glass and metal textures, and motion blur. It concentrates on the nuts and bolts of writing ray tracing programs, with plenty of practical, detail-oriented how-to advice and careful attention to the underlying theory.} +} + +@book{10.5555/1324795, + author = {Suffern, Kevin}, + title = {Ray Tracing from the Ground Up}, + year = {2007}, + isbn = {1568812728}, + publisher = {A. K. Peters, Ltd.}, + address = {USA} +} + +@inproceedings{egtp.19911035, + booktitle = {EG 1991-Technical Papers}, + editor = {Werner Purgathofer}, + title = {{A Testbed for Image Synthesis}}, + author = {Trumbore, Ben and Lytle, Wayne and Greenberg, Donald P.}, + year = {1991}, + month = {09}, + address = {North-Holland}, + publisher = {Eurographics Association}, + pages = {467-480}, + issn = {1017-4656}, + doi = {10.2312/egtp.19911035} +} + +@article{4037684, + author = {Hall, Roy A. and Greenberg, Donald P.}, + journal = {IEEE Computer Graphics and Applications}, + title = {A Testbed for Realistic Image Synthesis}, + year = {1983}, + volume = {3}, + number = {8}, + pages = {10-20}, + doi = {10.1109/MCG.1983.263292} +} + +@book{10.5555/286090, + author = {Larson, Greg Ward and Shakespeare, Rob}, + title = {Rendering with Radiance: The Art and Science of Lighting Visualization}, + year = {1998}, + isbn = {1558604995}, + publisher = {Morgan Kaufmann Publishers Inc.}, + address = {San Francisco, CA, USA} +} + +@inproceedings{10.1145/325334.325174, + author = {Duff, Tom}, + title = {Compositing 3-D Rendered Images}, + year = {1985}, + isbn = {0897911660}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/325334.325174}, + doi = {10.1145/325334.325174}, + abstract = {The complexity of anti-aliased 3-D rendering systems can be controlled by using a tool-building approach like that of the UNIX™ text-processing tools. Such an approach requires a simple picture representation amenable to anti-aliasing that all rendering programs can produce, a compositing algorithm for that representation and a command language to piece together scenes. This paper advocates a representation that combines Porter and Duff's compositing algebra with a Z-buffer to provide simple anti-aliased 3-D compositing.}, + booktitle = {Proceedings of the 12th Annual Conference on Computer Graphics and Interactive Techniques}, + pages = {41–44}, + numpages = {4}, + keywords = {anti-aliasing, Z-buffer, image synthesis, compositing, 3-D rendering, hidden-surface elimination}, + series = {SIGGRAPH '85} +} + +@article{glassner1993spectrum, + title = {Spectrum: An architecture for image synthesis, research, education, and practice}, + author = {Glassner, Andrew}, + editor = {Strauss, Paul S.}, + journal = {Developing Large-scale Graphics Software Toolkits,(SIGGRAPH'93 Course Notes 3)}, + pages = {1.1–1.44}, + year = {1993}, + month = {08} +} + +@article{468387, + author = {Slusallek, Philipp and Seidel, Hans-Peter}, + journal = {IEEE Transactions on Visualization and Computer Graphics}, + title = {Vision-an architecture for global illumination calculations}, + year = {1995}, + volume = {1}, + number = {1}, + pages = {77-96}, + doi = {10.1109/2945.468387} +} + +@inproceedings{10.1007/978-3-7091-7484-5_6, + author = {Slusallek, Philipp and Seidel, Hans-Peter}, + editor = {Pueyo, Xavier and Schr{\"o}der, Peter}, + title = {Towards an Open Rendering Kernel for Image Synthesis}, + booktitle = {Rendering Techniques '96}, + year = {1996}, + publisher = {Springer Vienna}, + address = {Vienna}, + pages = {51--60}, + abstract = {In order to use realistic image synthesis successfully in research and development as well as in commercial products, two important prerequisites have to be fulfilled. First of all, good, accurate, robust, and fast algorithms are required. Impressive progress has been made in this respect during the last years, which has also been documented in this workshop. The second step is the creation of a suitable and general software architecture, that offers an environment into which these rendering algorithms can be integrated.}, + isbn = {978-3-7091-7484-5} +} + +@book{10.5555/555371, + author = {Apodaca, Anthony A. and Gritz, Larry and Barsky, Brian A.}, + title = {Advanced RenderMan: Creating CGI for Motion Picture}, + year = {1999}, + month = {12}, + isbn = {1558606181}, + publisher = {Morgan Kaufmann Publishers Inc.}, + address = {San Francisco, CA, USA}, + edition = {1st}, + abstract = {From the Publisher: Introduced by Pixar Studios over a decade ago, the RenderMan Interface Specification is the dominant standard for sending data to the leading rendering programs used by 3D artists and animators. But users are hampered by the lack of authoritative, up-to-date information on applying the standard, having long had to rely on the ten-year-old RenderMan Companion and a far-flung collection of course notes and Web sites. Advanced RenderMan: Beyond the Companion is precisely what RenderMan users are dying for. It offers thoroughly updated coverage while moving beyond the original work's scope to provide in-depth information on dozens of advanced topics. Both a reference and a tutorial, this book will be indispensable to graphics programmers, modelers, animators, technical directors, and hobbyists-it is truly the key to their ability to achieve state-of-the-art 3D effects. Key Features: Written by the world's foremost RenderMan experts-key figures at Pixar, the company that developed and first implemented the standard Offers advanced users instruction not available anywhere else while providing a leg up to relative beginners-including tips on avoiding mistakes and an appendix covering key math skills. Filled with technical illustrations and many full-color representations of effects supported by the RenderMan standard Via a companion Web site, provides comprehensive documentation of the standard's semantics and syntax, example source code, shaders and other software, and the full set of SIGGRAPH course notes on RenderMan} +} + +@article{doi:10.1080/10867651.1996.10487462, + author = {Larry Gritz and James K. Hahn}, + title = {BMRT: A Global Illumination Implementation of the RenderMan Standard}, + journal = {Journal of Graphics Tools}, + volume = {1}, + number = {3}, + pages = {29-47}, + year = {1996}, + publisher = {Taylor & Francis}, + doi = {10.1080/10867651.1996.10487462}, + url = {https://doi.org/10.1080/10867651.1996.10487462}, + eprint = {https://doi.org/10.1080/10867651.1996.10487462} +} + +@inproceedings{732097, + author = {Sung, K. and Craighead, J. and Changyaw Wang and Bakshi, S. and Pearce, A. and Woo, A.}, + booktitle = {Proceedings Pacific Graphics '98. Sixth Pacific Conference on Computer Graphics and Applications (Cat. No.98EX208)}, + title = {Design and implementation of the Maya Renderer}, + year = {1998}, + volume = {}, + number = {}, + pages = {150-159}, + doi = {10.1109/PCCGA.1998.732097} +} + +@book{10.5555/863712, + author = {Driemeyer, Thomas and Herken, Rolf}, + title = {Programming Mental Ray}, + year = {2003}, + isbn = {3211838511}, + publisher = {Springer-Verlag}, + address = {Berlin, Heidelberg}, + edition = {2} +} + +@inproceedings{4061561, + author = {Bigler, James and Stephens, Abe and Parker, Steven G.}, + booktitle = {2006 IEEE Symposium on Interactive Ray Tracing}, + title = {Design for Parallel Interactive Ray Tracing Systems}, + year = {2006}, + volume = {}, + number = {}, + pages = {187-196}, + doi = {10.1109/RT.2006.280230} +} + + @misc{acton_2014, + title = {Data-Oriented Design and C++}, + url = {https://www.slideshare.net/cellperformance/data-oriented-design-and-c}, + journal = {SlideShare}, + author = {Acton, Mike}, + year = {2014}, + month = {Sep} +} \ No newline at end of file diff --git a/content/chap01.tex b/content/chap01.tex index dd334f6..b1c5740 100644 --- a/content/chap01.tex +++ b/content/chap01.tex @@ -1,6 +1,7 @@ \chapterimage{Pictures/chap01/nightsnow-cut1368.png} \chapter{绪论}\label{chap:绪论} +\setcounter{sidenote}{1} \keyindex{渲染}{rendering}{render渲染}是 由3D\keyindex{场景}{scene}{}描述生成图像的过程。 @@ -33,5 +34,10 @@ \chapter{绪论}\label{chap:绪论} \input{content/chap0105.tex} -\section{基于物理的渲染简史}\label{sec:基于物理的渲染简史} +\input{content/chap0106.tex} +\input{content/chap0107.tex} + +\input{content/chap0108.tex} + +\input{content/chap0109.tex} \ No newline at end of file diff --git a/content/chap0103.tex b/content/chap0103.tex index e4f88b7..f691a06 100644 --- a/content/chap0103.tex +++ b/content/chap0103.tex @@ -17,7 +17,7 @@ \section{pbrt:系统概述}\label{sec:pbrt:系统概述} 再编译和链接到可执行文件, 并且必须修改附录第\refchap{场景描述接口}中的对象创建例程 以创建解析场景描述文件所需要的对象。 -\refsec{添加新物体的实现} +\refsec{添加新对象的实现} \sidenote{译者注:原书此处似乎链接错误,已纠正。} 将讨论这种扩展系统的方法的更多细节。 @@ -56,7 +56,7 @@ \section{pbrt:系统概述}\label{sec:pbrt:系统概述} 本节有许多pbrt扩展版本渲染的图像。 其中从\reffig{1.11}到\reffig{1.14} -\sidenote{译者注:原书\reffig{1.14}引用文献似乎遗漏了链接,推测是\citep{10.1145/74334.74361}。} +\sidenote{译者注:原书\reffig{1.14}引用文献似乎遗漏了链接,推测是\citet{10.1145/74333.74361}。} 都引人瞩目: 它们不仅令人过目不忘,而且每张都是渲染课程的学生在 最后的课程作业中为pbrt扩展新功能渲染得到的有趣图像。 @@ -129,16 +129,16 @@ \subsection{执行阶段}\label{sub:执行阶段} \begin{figure}[htbp] \centering\includegraphics[width=\linewidth]{chap01/furrydog.png} \caption{Jared Jacobs和Michael Turitzin为pbrt增加了 - Kajiya和Kay基于纹素的毛发渲染算法\citep{10.1145/74334.74361}并渲染了该图像, + Kajiya和Kay基于纹素的毛发渲染算法\parencite*{10.1145/74333.74361}并渲染了该图像, 狗毛和粗毛地毯都是用纹素毛发算法渲染的。} \label{fig:1.14} \end{figure} -\reffig{1.15}和\reffig{1.16}由\emph{LuxRender}渲染, +\reffig{1.15}和\reffig{1.16}由\emph{LuxCoreRender}渲染, 它是最初基于本书第一版pbrt源码的GPL许可的基于物理的渲染系统 -(关于\emph{LuxRender}的更多信息详见\url{https://luxcorerender.org} -\sidenote{译者注:\emph{LuxRender}已更名为\emph{LuxCoreRender}且 - 迁移到了新网址。此处已更正了网址。})。 +(关于\emph{LuxCoreRender}的更多信息详见\url{https://luxcorerender.org} +\sidenote{译者注:原文的LuxRender现已更名为LuxCoreRender且 + 迁移到了新网址,此处已更正。})。 \begin{figure}[htbp] \centering\includegraphics[width=\linewidth]{chap01/measure-one180-cut1260.png} diff --git a/content/chap0106.tex b/content/chap0106.tex new file mode 100644 index 0000000..dbfbdd2 --- /dev/null +++ b/content/chap0106.tex @@ -0,0 +1,100 @@ +\section{使用和理解代码}\label{sec:使用和理解代码} + +我们用C++写成pbrt但限制使用艰深的语言特性,让非C++专家也易读。 +紧贴核心语言特性还有利于系统的可移植性。 +特别地,我们避免了多重继承、运行时异常处理 +以及对C++11和C++14特性的过度使用。 +此外我们只用了C++扩展标准库的一小部分。 + +\subsection{指针还是引用?}\label{sub:指针还是引用?} +C++提供了两种不同的机制来向函数或方法传递 +数据结构的地址:\keyindex{指针}{pointer}{}和\keyindex{引用}{reference}{}。 +如果函数参数不会当做输出变量, +则用任意一种都可以节约在堆栈上传递整个结构的开销。 +按惯例,pbrt在参数会被函数或方法完全改变时使用指针, +在其一些内部状态会被改变但不会被完全重新初始化时使用引用, +在根本不会被改变时使用{\ttfamily const}引用。 +这条规则的一个例外是当我们想传递{\ttfamily nullptr}来 +表示该参数不可用或不该用时我们总是使用指针。 + +\subsection{抽象与效率}\label{sub:抽象与效率} +设计软件系统接口的一大压力是在抽象与效率间作出合理的平衡。 +例如,许多程序员严谨地让类的所有数据都是{\ttfamily private}的 +并提供方法来获取或修改数据项的值。 +对于简单的类(例如\refvar{Vector3f}{}),我们认为 +这种方案不必要地隐藏了实现的基本属性——该类持有的三个浮点坐标—— +我们可以合理认为它们一直不变。 +当然,缺乏信息隐藏并暴露所有类内部全部细节的做法会导致代码维护的噩梦。 +但是我们认为在整个系统中审慎地暴露基本设计决策是没错的。 +例如事实是,由一个点、一个向量、赋予其范围、时间的值以及递归深度 +表示的\refvar{Ray}{}就不用隐藏在抽象层之后。 +当这些细节暴露时别处的代码会更简短易懂。 + +当编写软件系统并做出此类时平衡时要时刻想到最终系统的预期大小。 +定义了全部基本接口、抽象和策略决策的pbrt核心 +(除了特定形状、光源等的实现外)代码不超过20,000行。 +向系统添加额外功能一般只需增加不同抽象基类实现的代码量。 +pbrt永远不会增长到百万行代码; +用于系统中的信息隐藏量可以且应该反映出这一事实。 +设计接口来让系统适应那种程度的复杂度只会 +浪费程序员的时间(还可能降低运行时效率)。 + +\subsection{代码优化}\label{sub:代码优化} +通过使用优选的算法而不是局部的微小优化, +我们尽量让pbrt足够高效,因此系统能更易懂。 +然而,我们将一些局部优化应用到了pbrt中 +占据大多数执行时间的某些部分, +只要不会让代码太难懂即可。 +整个代码中主要用到了两条局部优化原则: +\begin{itemize} + \item 在当下CPU架构上,最慢的数运算是除法、平方根和三角函数。 + 加法、减法和乘法一般比这些运算快10到50倍。 + 减少慢速数学运算的数量能大幅提高性能: + 例如为了取代重复除以某值$v$, + 我们常常预求倒数$\displaystyle\frac{1}{v}$再做乘法。 + \item CPU的速度比数据从主内存加载到CPU的速度持续增长得更快。 + 这意味着等待从内存取出值会是主要的性能限制。 + 以从内存缓存获取高性能的方法组织算法和数据结构 + 比减少执行指令的总量更能极大加速程序的执行。 + 附录\refsec{内存管理}讨论了高效内存编程的一般原则; + 这些思想大多数运用在了第\refchap{图元和交点加速}中的 + 光线交点加速结构和\refsub{MIP映射}, + 尽管它们影响了整个系统中许多设计决策。 +\end{itemize} + +\subsection{本书网站}\label{sub:本书网站} +我们在\href{https://pbrt.org/}{\ttfamily pbrt.org}上为本书创办了指南网站。 +网站包含了系统的源码、文档、pbrt渲染的图像、示例场景、勘误表 +以及bug报告系统的链接。 +我们欢迎你访问网站并订阅pbrt邮件列表。 + +\subsection{扩展系统}\label{sub:扩展系统} +我们编写本书和构建pbrt系统的目标之一是 +让开发者和研究者能用它更简单地在渲染中试验新(或旧!)的想法。 +计算机图形学的一大乐趣是编写新软件做出新图像; +即便尝试对系统做出微小修改也是有趣的。 +全书的习题提出了许多修改系统的建议, +从小的调整到大型开放式研究项目都有。 +附录\refsec{添加新对象的实现}有更多关于 +为列于\reftab{1.1}的抽象基类新增实现机制的信息。 + +\subsection{反馈错误}\label{sub:反馈错误} +尽管我们努力通过大量测试保证pbrt的正确性, +但它必然还存在一些bug。 + +如果你认为你在系统中找到了bug,请这样操作: +\begin{itemize} + \item 用未经修改的pbrt最新版本复现bug。 + \item 查询\href{https://pbrt.org/}{\ttfamily pbrt.org}上的在线论坛和bug追踪系统。 + 你的问题也许是已知的bug,或者是常被误解的特性。 + \item 尽量找出最简单的测试样例来说明该bug。 + 许多bug可以用仅有几行长的场景文件揭示,用简单的场景比复杂的更容易调试。 + \item 用我们的在线bug追踪系统提交详细的bug报告。 + 要确保包含了演示bug的场景文件和你为什么认为pbrt对该场景的处理不对的详细说明。 + 如果你能为代码提供补丁修复该bug就更好了! +\end{itemize} +我们会定期发布pbrt更新版本以修复bug和提供少量增强。 +(注意我们这样做之前经常会积攒几个月的bug; +不要误以为我们不重视它!) +然而,我们不会对pbrt源码做大的变动 +以致于和本书描述的系统不符。 \ No newline at end of file diff --git a/content/chap0107.tex b/content/chap0107.tex new file mode 100644 index 0000000..82b23a7 --- /dev/null +++ b/content/chap0107.tex @@ -0,0 +1,265 @@ +\section{基于物理的渲染简史}\label{sec:基于物理的渲染简史} + +20世纪70年代早期计算机图形学中, +最重要的问题是解决可见性算法和几何表示等基础问题。 +那时兆字节的RAM还是稀有昂贵的奢侈品, +每秒能执行百万次浮点运算的计算机要花费数十万美元, +因此计算机图形学中能达到的复杂度也相应受限, +任何为了渲染而尝试精确模拟物理的做法都不切实际。 + +随着计算机越来越强大和廉价, +考虑计算需求更大的渲染方法成为可能, +这也让基于物理的方法变得可行。 +\keyindex{布林定律}{Blinn's law}{}简洁地解释了这一过程: +“随着技术进步,渲染时间保持不变。” + +Jim Blinn简单的表述抓住了一条重要的约束: +给定某数量必须要渲染的图像 +(对研究论文可能是几张,对故事片则超过十万张), +每张只可能花费这么多处理时间。 +有人只有特定数量的计算资源, +有人必须在特定时间内完成渲染, +因此有必要限制每张图像的最大计算量。 + +布林定律也点明了一个现象: +人们想要渲染的图像和他们能渲染的图像还存在差距: +随着计算机越来越快, +内容创作者会持续利用增加的计算能力 +和更精巧的渲染算法渲染更复杂的场景, +而不只是更快地渲染和以前一样的场景。 +渲染会持续消耗其可用的全部计算力。 + +\subsection{研究}\label{sub:研究} +20世纪80年代图形学研究者开始认真考虑基于物理的渲染方法。 +\citeauthor{10.1145/358876.358882}的 +论文\parencite*{10.1145/358876.358882}介绍了 +为全局光照效果使用光线追踪的思想, +打开了精确模拟场景中光分布的大门。 +其产生的渲染图像与以前的明显不同, +让人兴奋不已。 + +基于物理的渲染中另一个值得注意的早期进步是 +Cook和Torrance的反射模型\parencite*{10.1145/800224.806819,10.1145/357290.357293}, +将微面反射\sidenote{译者注:原文microfacet reflection。}模型引入图形学。 +除其他贡献外,他们证明 +对微面反射精确建模能做到精确渲染金属表面; +更早方法无法很好地渲染金属。 + +不久后,Goral等\parencite*{10.1145/800031.808601}将热传递文献与渲染联系起来, +展示了如何利用基于物理的光传输近似加入全局漫射\sidenote{译者注:原文diffuse。}光效果。 +该方法基于有限元\sidenote{译者注:原文finite-element。}方法, +场景中表面区域互换能量。 +在有相关物理单位后,该方法称为“光能传递” +\sidenote{译者注:原文radiosity,有光能传递、辐射着色、辐射度等含义。 + 此处按上下文暂译为光能传递。}。 +Cohen和Greenberg\parencite*{10.1145/325334.325171}以及 +Nishita和Nakamae\parencite*{10.1145/325334.325169}的后续工作引入了重要改进。 +基于物理的方法再次得到了在以前的渲染图像中从未见过的带有光照特效的图像, +带动了许多研究者在这一领域竞相提升。 + +尽管光能传递方法主要基于物理单位和能量守恒, +但随着时间推移它不能得到可行渲染算法的事实越来越明显: +其渐进复杂度是难以控制的$O(n^2)$, +且需要能够沿阴影边界再细分\sidenote{译者注:原文re-tessellate。}几何模型以获得好的结果; +研究者为这个目的开发出稳定高效的细分算法是很困难的, +光能传递在实际应用中受到限制。 + +在光能传递的年代,一小部分研究者追求 +基于光线追踪和蒙特卡洛积分的基于物理的渲染方法。 +那时许多人对他们的工作持怀疑态度; +蒙特卡洛积分的变化在图像中引起令人讨厌的噪声似乎是不可避免的, +而基于光能传递的方法至少在相对简单的场景上能快速给出视觉上讨喜的结果。 + +1984年,Cook、Porter和Carpenter\parencite*{10.1145/800031.808590}引入了分布式光线追踪, +将Whitted的算法推广到从相机计算运动模糊和散焦模糊、 +来自光泽表面的模糊反射以及来自面光源的照明, +表明光线追踪能生成众多重要的光照效果。 + +之后不久,\citet{10.1145/15922.15902}引入了路径追踪; +他提出渲染问题的严格公式(光传输方程) +并说明如何用蒙特卡洛积分求解它。 +这需要大量计算: +用路径追踪渲染一幅有两个球体的$256\times256$像素图像 +需要一台IBM 4341计算机运行7小时, +其首次发布花了约280,000美元\citep{farmer1981comparing}。 +Von Herzen和Kajiya\parencite*{10.1145/800031.808594} +也把体积渲染方程引入了图形学; +该方程严格描述了介质中的光散射。 + +Cook等和Kajiya的工作都再次得到了前所未见的图像, +证明了基于物理的方法的价值。 +随后几年, Arvo和Kirk\parencite*{10.1145/97879.97886}以及 +Kirk和Arvo\parencite*{10.1145/122718.122735}的论文 +描述了关于蒙特卡洛合成逼真图像的重要工作。 +\citeauthor{10.5555/124947}的博士论文\parencite*{10.5555/124947}和 +后续Shirley等\parencite*{10.1145/226150.226151}的工作 +也对基于蒙特卡洛的方法做出重要贡献。 +\citeauthor{10.5555/63450}的《\citetitle{10.5555/63450}》\parencite*{10.5555/63450}是 +最早基于物理框架论述渲染的著作之一, +\citeauthor{10.5555/527570}的《\citetitle{10.5555/527570}》\parencite*{10.5555/527570}严格 +奠定了该领域的基础。 +\citet{10.1145/192161.192286}的\emph{Radiance}渲染系统 +是早期基于物理的开源渲染系统,专注光照设计, +\citet{slusallek1996vision}的\emph{Vision}渲染器专门缩小基于物理的方法 +和当时流行的不基于物理的\emph{RenderMan}接口之间的差距。 + +继Torrance和Cook后, +康奈尔大学计算机图形学计划的 +许多研究调研了基于物理的方法。 +Greenberg等\parencite*{10.1145/258734.258914}总结了这些工作的动机, +基于真实世界材料属性的度量和对人类视觉系统的深刻理解, +他们强烈支持物理精确渲染。 + +\citet{veach1997robust}的工作使基于物理的渲染迈出关键一步, +他的博士论文对此进行了详细描述。 +\citeauthor{veach1997robust}改进了蒙特卡洛渲染的关键理论基础 +还开发了多重要性采样\sidenote{译者注:原文multiple importance sampling。}、 +双向路径追踪和Metropolis光传输等新算法,极大提高了效率。 +以布林定律为指导,我们认为显著提升的效率对这些方法的实际应用至关重要。 + +大约这时,随着计算机变得更快更并行化, +许多研究者开始追求实时光线追踪; +Wald、Slusallek和Benthin\parencite*{10.1007/978-3-7091-6242-2_26}写了 +一篇很有影响力的论文,描述了一个 +比以往的光线追踪器高效得多的高度优化的光线追踪器。 +许多后续论文介绍了越来越高效的光线追踪算法。 +尽管这些工作大多数都不是基于物理的, +但其结果让光线追踪加速结构和光线追踪几何部分的性能有了巨大进步。 +因为基于物理的渲染一般大量使用光线追踪, +所以这项工作反过来也带来了和更快的计算机相同的好处, +使得用物理方法能够渲染更复杂的场景。 + +至此,基于物理的渲染的研究进展中关键步骤的总结就介绍到这里了; +还有许多工作没有提到。 +本书所有后续章节的“扩展阅读”部分将会详细介绍这些工作。 + +\subsection{制作}\label{sub:制作} +随着20世纪80年代出现更强大的计算机,计算机图形学开始用于动画和电影制作。 +早期例子包括Jim Blinn渲染的旅行者2号 +\sidenote{译者注:即Voyager 2,于1977年8月20日在肯尼迪航天中心成功发射升空。} +在1981年飞掠土星\sidenote{译者注:在线观看\url{https://youtu.be/SQk7AFe13CY}。} +和电影《星际旅行2:可汗怒吼》\sidenote{译者注:Star Trek II: The Wrath of Khan。}(1982)、 +《电子世界争霸战》\sidenote{译者注:Tron。}(1982)以及 +《最后的星空战士》\sidenote{译者注:The Last Starfighter。}(1984)中的视觉效果。 + +在早期运用计算机合成影像进行制作中, +基于栅格化\sidenote{译者注:原文rasterization-based。}的渲染 +(尤其是Reyes算法\citep{10.1145/37401.37414})是唯一可行的选项。 +一个原因是没有足够的计算力支持基于物理的光线追踪提供的复杂反射模型或全局光照效果。 +更显著的是,栅格化有无需将整个场景表示载入主内存这一重要优势。 + +当RAM不够时,几乎任何有趣的场景都因太大而无法载入主内存。 +基于栅格化的算法能够在内存任何时候只有完整场景表示的一小部分的情况下渲染这些场景。 +如果整个场景不能载入主内存,全局光照效果就很难实现; +多年来,在计算机系统受限的情况下,内容创作者有效地决定了 +几何和纹理复杂度比起光照复杂度(以及物理准确性)对于视觉逼真性更为重要。 + +这时许多从业者也认为基于物理的方法对于制作是不可取的: +计算机图形学的一大优点是人们可以不受惩罚地欺骗现实获得想要的艺术效果。 +例如,常规电影的灯光设计师经常艰难地放置光源以保证不被摄像机拍到, +或者花大量时间放置灯光照着演员而又不能把背景照得太亮。 +计算机图形学提供了机会,例如, +以非常简单的方式实现一个光源模型使得对角色的光照是背景的两倍。 +多年来,这项能力似乎比物理准确性有用得多。 + +特别需要将渲染的影像与拍摄的真实世界环境匹配的视觉效果从业者 +提倡捕获真实世界光照的和着色效果, +是20世纪90年代末到21世纪00年代初基于物理的方法的率先运用者 +(例如详见\citet{snow2010terminators}了解工业光魔公司 +\sidenote{译者注:即Industrial Light and Magic (ILM),著名电影特效制作公司,曾为几百部经典电影制作特效。} +在该领域早期工作的历史)。 + +这段时期,蓝天工作室 +\sidenote{译者注:即Blue Sky Studios,代表作有《冰河世纪》(Ice Age)等。} +在其早期历史中采用了基于物理的管道\citep{ohmer1997}。 +他们1992年为Braun剃须刀制作的广告因相片级逼真度得到了许多人的关注 +\sidenote{译者注:这是该广告的一张图像。当年因效果太逼真而被怀疑是实拍作品,最后错失了奖项。 + 在线观看:\url{https://youtu.be/slqSLClefNQ}。}, +\begin{marginfigure} + \includegraphics[width=\linewidth]{chap01/BraunRazor.png} +\end{marginfigure} +他们1998年上映的短片电影《棕兔夫人》\sidenote{译者注:Bunny。} +是在制作中使用蒙特卡洛全局照明的早期案例。 +其视觉呈现与用Reyes渲染的电影和短片截然不同,获得了广泛关注。 +蓝天工作室随后拍摄的故事片沿用了该方法。 +不幸的是,蓝天工作室从未公开其方法的重要技术细节,限制了其扩大影响。 + +21世纪00年代初期,大量工作室使用主打视觉效果的\emph{mental ray}光线追踪渲染器系统。 +它是实现了复杂全局光照算法的非常高效的光线追踪器。 +其开发者主要关注计算机辅助设计和产品设计应用, +因此它缺乏电影制作所需的处理极其复杂场景和极多纹理贴图之类的特性。 + +《棕兔夫人》之后,2001年迎来了另一个分水岭, +Marcos Fajardo带着他早期版本的\emph{Arnold}渲染器来到了SIGGRAPH +\sidenote{译者注:即ACM Special Interest Group on Computer Graphics and Interactive Techniques, + 计算机图形学与交互技术特别兴趣小组,成立于1969年,其前身ACM SICGRAPH成立于1967年。}。 +他展示了蒙特卡洛图像合成课程上的图片, +不仅有复杂几何体、纹理和全局光照,而且几十分钟内就能完成渲染。 +尽管这些场景不如当时电影制作中用的那么复杂, +但他的结果证明了复杂场景中全局光照有许多创造性机会。 + +Fajardo把\emph{Arnold}带到了索尼影业图像工作室\sidenote{译者注:Sony Pictures Imageworks。}, +开始将其转化为可用于制作的基于物理的渲染系统。 +高效运动模糊、可编程着色、支持大量复杂场景和延迟加载场景几何 +以及在内存只保留一小部分场景纹理时支持纹理缓存等,这些都是需要解决的重要领域。 +\emph{Arnold}在电影《怪兽屋》\sidenote{译者注:即Monster House,于2006年上映。}得到首次应用, +现在一般作为一款产品提供。 + +21世纪00年代中期,皮克斯\sidenote{译者注:即Pixar Animation Studios,皮克斯动画工作室, + 于1986年成立, + % 前身为卢卡斯影业计算机部图形学小组(The Graphics Group of Lucasfilm Computer Division), + 代表作有 + 《玩具总动员》(Toy Story)、 + 《海底总动员》(Finding Nemo)、 + 《超人总动员》(The Incredibles)、 + 《赛车总动员》(Cars)、 + 《机器人总动员》(WALL·E)、 + 《飞屋环游记》(Up)、 + 《头脑特工队》(Inside Out)、 + 《心灵奇旅》(Soul)等。}的 +\emph{RenderMan}渲染器开始支持混合栅格化和光线追踪算法 +并包括了大量解决复杂场景下求解全局光照的创新算法。 +\emph{RenderMan}最近遵循pbrt的一般系统架构\citep{10.1145/2776880.2792699} +\sidenote{译者注:此处参考文献笔者改为了同名同源发表但作者名单更全的文献。} +被重新编写为基于物理的光线追踪器。 + +基于物理的蒙特卡洛渲染方法成功用于制作的一大原因是 +它们最终提高了艺术家们的生产力。 +一些重要因素是: +\begin{itemize} + \item 涉及的算法本质上只有一个质量旋钮:每个像素取多少次采样; + 这对艺术家们很有用。通过每个像素只采几个样本, + 光线追踪算法也适合渐进式改善和快速计算粗略预览图; + 基于栅格化的渲染器则没有等效功能。 + \item 采用基于物理的反射模型让设计表面材料变得简单。 + 早前,当使用能量未必守恒的反射模型时, + 一个物体可能被放置在单光源环境下来调节其表面的反射参数。 + 该物体在那个环境下可能看起来不错, + 但移到另一个光照环境时常常会显得完全不对, + 因为表面实际上反射了太少或太多的能量: + 表面属性被设为不合理的值。 + \item 光线追踪计算的阴影质量比栅格化方法好得多。 + 取消微调阴影贴图分辨率、偏置以及其他参数的需求把灯光艺术家们的烦人任务消除了。 + 此外,基于物理的方法本身还给他们带来了反射光和其他柔光效果, + 无需艺术手工调整过程。 +\end{itemize} + +在编写本书时,基于物理的渲染已经广泛地运用于计算机生成图像的电影制作当中; +\reffig{1.22}和\reffig{1.23}展示的图像就来自两部近年使用了基于物理的方法的电影。 +\begin{figure}[htbp] + \centering\includegraphics[width=\linewidth]{chap01/gravity.png} + \caption{《地心引力》(Gravity, 2013)以计算机生成 + 具备体积散射和大量各向异性金属表面的壮观逼真太空环境图像为特色。 + 它由支持全局照明的基于物理的渲染系统\emph{Arnold}生成。 + 该图由华纳兄弟(Warner Bros.)和Framestore提供。 + } + \label{fig:1.22} +\end{figure} +\begin{figure}[htbp] + \centering\includegraphics[width=\linewidth]{chap01/hobbit.png} + \caption{来自《霍比特人3:五军之战》(The Hobbit: The Battle of the Five Armies, 2014)的 + 该图也是用基于物理的渲染系统渲染得到的; + 这些角色以异质表面下的散射和大量几何细节为特点。 + 图像由维塔数码(Weta Digital)制作,由华纳兄弟和米高梅(Metro-Goldwyn-Mayer)提供。} + \label{fig:1.23} +\end{figure} diff --git a/content/chap0108.tex b/content/chap0108.tex new file mode 100644 index 0000000..181b919 --- /dev/null +++ b/content/chap0108.tex @@ -0,0 +1,96 @@ +\section{扩展阅读}\label{sec:扩展阅读1} + +在早期开创性论文中, +\citet{10.1145/1468075.1468082}首先描述了光线追踪的基本思想 +以解决遮挡表面问题和计算多边形场景的阴影。 +Goldstein和Nagel\parencite*{doi:10.1177/003754977101600104}之后 +展示了如何用光线追踪渲染二次曲面场景。 +Kay和Greenberg\parencite*{10.1145/800249.807438}描述了 +一种渲染透明度的光线追踪方法。 +\citet{10.1145/358876.358882}创造性的\emph{CACM}\sidenote{译者注:即Communications of the ACM。}论文 +描述了本章实现的通用递归光线追踪算法, +准确模拟了来自镜面的反射和折射以及来自点光源的阴影。 +\citet{10.1145/37402.37411}第一个探索渲染甜点的真实渲染。 + +早期关于基于物理的渲染与图像合成的著名书籍包括 +Cohen、Wallace和Hanrahan的《\citetitle{10.5555/154731}》\parencite*{10.5555/154731}、 +Sillion和Puech的《\citetitle{10.5555/561383}》\parencite*{10.5555/561383}以及 +\citeauthor{10.5555/200607}的《\citetitle{10.5555/200607}》\parencite*{10.5555/200607}, +它们都主要描述了有限元光能传递方法。 + +Kirk和Arvo\parencite*{Kirk88theray}在关于光线追踪系统设计的论文中 +提出的许多原则如今已经成为渲染器设计的经典。 +他们的渲染器被实现为一个封装了基本渲染算法且 +能通过精心构造的面向对象的接口与图元和着色例程交互的 +核心内核\sidenote{译者注:原文core kernel。}。 +该方法使新图元和加速方法扩展系统变得简单。 +pbrt的设计就基于这些思想。 + +关于光线追踪器设计的另一优秀参考是《\citetitle{10.5555/94788}》\citep{10.5555/94788}, +描述了当时最先进的光线追踪, +有一章Heckbert撰写的基本光线追踪器的设计概要。 +最近,Shirley和Morley的《\citetitle{10.5555/940410}》\parencite*{10.5555/940410}对 +光线追踪给出了易懂的介绍并包括了基本光线追踪器的完整源码。 +\citet{10.5555/1324795}的书籍也提供了光线追踪的简要介绍。 + +康奈尔大学的研究者们多年来已开发了渲染试验平台; +Trumbore、Lytle和Greenberg\parencite*{egtp.19911035} +\sidenote{译者注:原文所注参考文献似乎有误,无法检索到。 + 此处已修正,详见\url{http://www.graphics.cornell.edu/pubs/1991/TLG91b.html}。} +描述了其设计和整体结构。 +Hall和Greenberg\parencite*{4037684}描述了它的前身。 +该系统是一组松散耦合的模块和库,每个都设计为处理单一任务 +(光线-物体交点加速、图像存储等) +并以易于组合适当模块以研究和开发新渲染算法的方式写成。 +该试验平台很成功,为康奈尔众多的渲染研究奠定了基础。 + +\emph{Radiance}是首个广泛应用的从根本上基于物理量的开源渲染器。 +它专为建筑设计中执行精确光照仿真而设计。 +\citeauthor{10.1145/192161.192286}在一部书籍和论文中 +\citep{10.1145/192161.192286,10.5555/286090}描述了其设计和历史。 +\emph{Radiance}以UNIX风格设计成一组交互程序, +每个负责渲染过程的不同部分。 +\citet{10.1145/325334.325174}首先描述了这种通用类型的渲染架构。 + +\citet{glassner1993spectrum}的\emph{Spectrum}渲染架构也聚焦基于物理的渲染, +是通过基于信号处理的问题表述来实现的。 +它是用插件架构构建的可扩展系统; +pbrt使用参数/值列表来初始化主要抽象接口的实现的方法与\emph{Spectrum}的类似。 +\emph{Spectrum}的一大特点是所有描述场景的参数都可以是时间的函数。 + +Slusallek和Seidel(\cite*{468387,10.1007/978-3-7091-7484-5_6}; \citealt{slusallek1996vision}) +描述了\emph{Vision}渲染系统,其也是基于物理的且专门支持许多种光传输算法。 +尤其是它有一个宏伟目标即同时支持蒙特卡洛和基于有限元的光传输算法。 + +许多论文描述了其他渲染系统的设计和实现, +包括娱乐和艺术应用的渲染器。 +Cook等\parencite*{10.1145/37401.37414}首次描述的Reyes架构 +构成了皮克斯\emph{RenderMan}渲染器的基础, +Apodaca、Gritz和Barsky\parencite*{10.5555/555371}\sidenote{译者注:原文所注文献仅为两人于2000年署名发表,笔者检索到为三人于1999年发表,故修正。} +总结了大量针对原始算法的改进。 +Gritz和Hahn\parencite*{doi:10.1080/10867651.1996.10487462}描述了\emph{BMRT}光线追踪器。 +Sung等\parencite*{732097}描述了Maya建模和动画系统中的渲染器, +Driemeyer和Herken\parencite*{10.5555/863712}\sidenote{译者注:原文所注文献为2002年发表,笔者仅检索到2003年发表的第2版,故修正。} +在关于\emph{mental ray}渲染器API的书中描述了一些它的内部结构。 +Bigler等\parencite*{4061561}则描述了高性能的\emph{Manta}交互式光线追踪器的设计。 + +pbrt源码采用BSD许可\sidenote{译者注:即Berkeley Software Distribution,伯克利软件发行许可。}; +它允许其他开发者利用pbrt代码作为其工作的基础。 +\emph{LuxCoreRender}可从\url{https://luxcorerender.org}获取, +是一个用pbrt作为起点构建的基于物理的渲染器; +它提供大量新增特性并为建模系统提供了丰富的场景导出插件集。 + +Eric Haines编辑的电子通讯《\emph{Ray Tracing News}》 +\sidenote{译者注:详见\url{http://www.realtimerendering.com/resources/RTNews/html}。}可追溯至1987年且仍偶尔出版。 +它是了解通用光线追踪信息非常好的资源, +尤其是对交点加速方法、实现问题和平衡技巧等都有有益的讨论。 +最近,许多有经验的光线追踪开发者经常访问论坛\url{https://ompf2.com}。 + +用于构建pbrt的面向对象方法让系统易于理解 +但不是构建渲染系统的唯一方法。 +一个和面向对象方法相对的重要编程方式是\keyindex{面向数据的设计}{data-oriented design}{}(DoD), +它尤其被许多游戏开发者(性能对其至关重要)拥护。 +DoD背后的关键动因是许多传统的面向对象设计的原则与高性能软件系统不兼容, +因为它们导致了内存中缓存低效的数据布局。 +DoD的支持者主张首先考虑内存中的数据布局以及程序怎样转换这些数据以驱动系统设计。 +例如可参考\citet{acton_2014}在C++大会上的演讲。 \ No newline at end of file diff --git a/content/chap0109.tex b/content/chap0109.tex new file mode 100644 index 0000000..9f93c0d --- /dev/null +++ b/content/chap0109.tex @@ -0,0 +1,13 @@ +\section{习题}\label{sec:习题01} + +\begin{enumerate} + \item \circleone 理解pbrt的一个好方法是在调试器中跟随单个光线计算辐亮度值的过程。 + 用调试标志构建一版pbrt并启动调试器以{\ttfamily killeroo-simple}运行pbrt。 + pbrt场景在{\ttfamily scenes}目录中。在方法\refvar{SamplerIntegrator::Render}{()} + 中设置断点并追踪怎么生成光线、怎么计算辐亮度值以及怎么添加其作用到图像中的过程。 + 第一次这样做时,你可能想通过在pbrt命令行参数中设定{\ttfamily nthreads}为1来指定只执行单个线程; + 这样做保证所有计算都在主处理线程中完成,使之更易懂, + 这取决于你的调试器在运行多线程时单步执行的难易程度。 + 当你之后在本书中更加理解系统的细节后, + 重复这一过程并更加仔细地追踪系统的特定部分。 +\end{enumerate} \ No newline at end of file diff --git a/content/chap02.tex b/content/chap02.tex index e8018e2..a5b5323 100644 --- a/content/chap02.tex +++ b/content/chap02.tex @@ -1,7 +1,27 @@ +\chapterimage{Pictures/chap02/dof-dragons-848.png} + \chapter{几何与变换}\label{chap:几何与变换} +\setcounter{sidenote}{1} + +几乎所有非平凡\sidenote{译者注:原文nontrivial。}的图形程序都建立在几何类的基础上。 +这些类表示数学概念例如点、向量以及射线。 +因为这些类在整个系统中无处不在,所以良好的抽象和高效的实现至关重要。 +本章介绍了pbrt几何基础的接口和实现。 +注意这些并不是表示实际场景几何体的类(三角形、球体等); +那些类是第\refchap{形状}的主题。 +本章的几何类在pbrt发行版的文件 +\href{https://github.com/mmp/pbrt-v3/tree/master/src/core/geometry.h}{\ttfamily core/geometry.h} +和\href{https://github.com/mmp/pbrt-v3/tree/master/src/core/geometry.cpp}{\ttfamily core/geometry.cpp}中定义, +变换矩阵(\refsec{变换})的实现在文件 +\href{https://github.com/mmp/pbrt-v3/tree/master/src/core/transform.h}{\ttfamily core/transform.h}和 +\href{https://github.com/mmp/pbrt-v3/tree/master/src/core/transform.cpp}{\ttfamily core/transform.cpp}中。 + +{\noindent\hfil$=========$\hfil{\color{red}{施工分割线}}\hfil$=========$\ \input{content/chap0202.tex} +\input{content/chap0207.tex} + \input{content/chap0210.tex} \input{content/chap02extra.tex} \ No newline at end of file diff --git a/content/chap0207.tex b/content/chap0207.tex new file mode 100644 index 0000000..a3e5daa --- /dev/null +++ b/content/chap0207.tex @@ -0,0 +1 @@ +\section{变换}\label{sec:变换} diff --git a/content/chap02extra.tex b/content/chap02extra.tex index b69c40f..a144f88 100644 --- a/content/chap02extra.tex +++ b/content/chap02extra.tex @@ -3,7 +3,7 @@ \section{译者补充:四元数}\label{sec:译者补充:四元数} 本节内容不是原书内容,而是译者自学补充的,请酌情参考和斧正。 \end{remark} -本节内容主要依据文献\citep{10.5555/90767.90913,enwiki:1014110231,enwiki:1013104981}整理而成, +本节内容主要依据文献\citep{10.5555/90767.90913,enwiki:1013104981}整理而成, 给出四元数相关数学推导,具体介绍 四元数的定义、性质及其在几何变换中的运用。 @@ -183,11 +183,12 @@ \subsection{四元数的运算}\label{sub:四元数的运算} & \quad +c_3c_1{\bm u}_2+c_2{\bm u}_1\times{\bm u}_3-c_2{\bm u}_1\cdot{\bm u}_3\nonumber \\ & \quad +c_1c_2{\bm u}_3+c_3{\bm u}_1\times{\bm u}_2-c_3{\bm u}_1\cdot{\bm u}_2\, . \end{align} - 注意到向量运算有 + 注意到向量运算有\sidenote{它们其实是向量的\protect\keyindex{标量三重积}{scalar triple product}{}的两种等价定义,也称\protect\keyindex{混合积}{mixed product}{}。} \begin{align} ({\bm u}_1\times{\bm u}_2)\cdot{\bm u}_3\equiv{\bm u}_1\cdot({\bm u}_2\times{\bm u}_3)\, , \end{align} - 以及 + 以及\sidenote{第一个和第三个等号的变换利用了\protect\keyindex{向量三重积}{vector triple product}{}的定义, + 也称为\protect\keyindex{三重积展开}{triple product expansion}{}或\protect\keyindex{拉格朗日公式}{Lagrange's formula}{}。} \begin{align} & ({\bm u}_1\times{\bm u}_2)\times{\bm u}_3-({\bm u}_1\cdot{\bm u}_2){\bm u}_3\nonumber \\ = & ({\bm u}_1\cdot{\bm u}_3){\bm u}_2-({\bm u}_2\cdot{\bm u}_3){\bm u}_1-({\bm u}_1\cdot{\bm u}_2){\bm u}_3\nonumber \\ diff --git a/content/chap10.tex b/content/chap10.tex index 6ab7afb..69341c5 100644 --- a/content/chap10.tex +++ b/content/chap10.tex @@ -4,4 +4,6 @@ \chapter{纹理}\label{chap:纹理} \input{content/chap1002.tex} -\input{content/chap1003.tex} \ No newline at end of file +\input{content/chap1003.tex} + +\input{content/chap1004.tex} \ No newline at end of file diff --git a/content/chap1004.tex b/content/chap1004.tex new file mode 100644 index 0000000..4927c95 --- /dev/null +++ b/content/chap1004.tex @@ -0,0 +1,3 @@ +\section{图像纹理}\label{sec:图像纹理} + +\subsection{MIP映射}\label{sub:MIP映射} \ No newline at end of file diff --git a/content/chapextraB04.tex b/content/chapextraB04.tex index fb7ea49..a0e0521 100644 --- a/content/chapextraB04.tex +++ b/content/chapextraB04.tex @@ -1 +1 @@ -\section{添加新物体的实现}\label{sec:添加新物体的实现} \ No newline at end of file +\section{添加新对象的实现}\label{sec:添加新对象的实现} \ No newline at end of file diff --git a/content/preface.tex b/content/preface.tex index 67058f9..39a9199 100644 --- a/content/preface.tex +++ b/content/preface.tex @@ -168,10 +168,10 @@ \noindent{\LARGE\bfseries 扩展阅读} -Donald Knuth的论文《Literate Programming》\citep{10.1093/comjnl/27.2.97} +\citeauthor{10.1093/comjnl/27.2.97}的论文《\emph{Literate Programming}》\parencite*{10.1093/comjnl/27.2.97} 描述了文学编程背后的主要思想以及他的网络编程环境。 开创性的\TeX 排版系统是用网络写成的并出版了一系列书籍\citep{10.5555/536126,10.5555/536123}。 -最近,Knuth在《The Stanford GraphBase》\citep{10.1145/164984}中 +最近,\citeauthor{10.1145/164984}在《\citetitle{10.1145/164984}》\parencite*{10.1145/164984}中 以文学格式出版了图表算法集。 这些程序读起来很有趣,各个算法也展示得很好。 网站\url{www.literateprogramming.com}指向了许多关于文学编程的论文、程序以及大量系统; @@ -180,6 +180,6 @@ 我们所知的其他出版成书的文学程序只有对lcc编译器的实现—— 由Christopher Fraser和David Hanson编写 -并出版的《A Retargetable C Compiler: Design and Implementation》\citep{10.5555/555424}, -以及Martin Ruckert关于MP3音频格式的书《Understanding MP3》\citep{10.5555/1036653}。 +并出版的《\citetitle{10.5555/555424}》\parencite*{10.5555/555424}, +以及\citeauthor{10.5555/1036653}关于MP3音频格式的书《\citetitle{10.5555/1036653}》\parencite*{10.5555/1036653}。 diff --git a/content/prefaceonline.tex b/content/prefaceonline.tex index c8a3ce4..3d38ac6 100644 --- a/content/prefaceonline.tex +++ b/content/prefaceonline.tex @@ -78,7 +78,7 @@ 除了扩展pbrt功能跟进最新研究, 我们还计划为新版增加更多交互元素。 Str{\"o}m、{\AA}str{\"o}m和Akenine-M{\"o}ller -编写的《Immersive Linear Algebra》\footnote{\citeurl{4b212a02-105c-42a2-ad5c-91c16a06e815}} +编写的《\citetitle{4b212a02-105c-42a2-ad5c-91c16a06e815}》\footnote{\citeurl{4b212a02-105c-42a2-ad5c-91c16a06e815}} 一书展现了这种媒体的无限可能。 我们会在线保留本书的早前版本,URL均和首发时保持一致; diff --git a/main.tex b/main.tex index 91244b6..808c619 100644 --- a/main.tex +++ b/main.tex @@ -151,218 +151,220 @@ \part{光传输算法} \part{回顾与未来} \input{content/chap17.tex} +\appendix \part{附录} \input{content/chapextraA.tex} \input{content/chapextraB.tex} -\chapter{In-text Elements} +% \chapter{In-text Elements} -\section{Theorems}\index{Theorems} +% \section{Theorems}\index{Theorems} -This is an example of theorems. +% This is an example of theorems. -\subsection{Several equations}\index{Theorems!Several Equations} -This is a theorem consisting of several equations. +% \subsection{Several equations}\index{Theorems!Several Equations} +% This is a theorem consisting of several equations. -\begin{theorem}[Name of the theorem] - In $E=\mathbb{R}^n$ all norms are equivalent. It has the properties: - \begin{align} - & \big| ||\mathbf{x}|| - ||\mathbf{y}|| \big|\leq || \mathbf{x}- \mathbf{y}|| \\ - & ||\sum_{i=1}^n\mathbf{x}_i||\leq \sum_{i=1}^n||\mathbf{x}_i||\quad\text{where $n$ is a finite integer} - \end{align} -\end{theorem} +% \begin{theorem}[Name of the theorem] +% In $E=\mathbb{R}^n$ all norms are equivalent. It has the properties: +% \begin{align} +% & \big| ||\mathbf{x}|| - ||\mathbf{y}|| \big|\leq || \mathbf{x}- \mathbf{y}|| \\ +% & ||\sum_{i=1}^n\mathbf{x}_i||\leq \sum_{i=1}^n||\mathbf{x}_i||\quad\text{where $n$ is a finite integer} +% \end{align} +% \end{theorem} -\subsection{Single Line}\index{Theorems!Single Line} -This is a theorem consisting of just one line. +% \subsection{Single Line}\index{Theorems!Single Line} +% This is a theorem consisting of just one line. -\begin{theorem} - A set $\mathcal{D}(G)$ in dense in $L^2(G)$, $|\cdot|_0$. -\end{theorem} +% \begin{theorem} +% A set $\mathcal{D}(G)$ in dense in $L^2(G)$, $|\cdot|_0$. +% \end{theorem} -%------------------------------------------------ +% %------------------------------------------------ -\section{Definitions} +% \section{Definitions} -This is an example of a definition. +% This is an example of a definition. -\begin{definition}[Definition name] - Given a vector space $E$, a norm on $E$ is an application, denoted $||\cdot||$, $E$ in $\mathbb{R}^+=[0,+\infty[$ such that: - \begin{align} - & ||\mathbf{x}||=0\ \Rightarrow\ \mathbf{x}=\mathbf{0} \\ - & ||\lambda \mathbf{x}||=|\lambda|\cdot ||\mathbf{x}|| \\ - & ||\mathbf{x}+\mathbf{y}||\leq ||\mathbf{x}||+||\mathbf{y}|| - \end{align} -\end{definition} +% \begin{definition}[Definition name] +% Given a vector space $E$, a norm on $E$ is an application, denoted $||\cdot||$, $E$ in $\mathbb{R}^+=[0,+\infty[$ such that: +% \begin{align} +% & ||\mathbf{x}||=0\ \Rightarrow\ \mathbf{x}=\mathbf{0} \\ +% & ||\lambda \mathbf{x}||=|\lambda|\cdot ||\mathbf{x}|| \\ +% & ||\mathbf{x}+\mathbf{y}||\leq ||\mathbf{x}||+||\mathbf{y}|| +% \end{align} +% \end{definition} -%------------------------------------------------ +% %------------------------------------------------ -\section{Notations} +% \section{Notations} -\begin{notation} - Given an open subset $G$ of $\mathbb{R}^n$, the set of functions $\varphi$ are: - \begin{enumerate} - \item Bounded support $G$; - \item Infinitely differentiable; - \end{enumerate} - a vector space is denoted by $\mathcal{D}(G)$. -\end{notation} +% \begin{notation} +% Given an open subset $G$ of $\mathbb{R}^n$, the set of functions $\varphi$ are: +% \begin{enumerate} +% \item Bounded support $G$; +% \item Infinitely differentiable; +% \end{enumerate} +% a vector space is denoted by $\mathcal{D}(G)$. +% \end{notation} -%------------------------------------------------ +% %------------------------------------------------ -\section{Remarks} +% \section{Remarks} -This is an example of a remark. +% This is an example of a remark. -\begin{remark} - The concepts presented here are now in conventional employment in mathematics. Vector spaces are taken over the field $\mathbb{K}=\mathbb{R}$, however, established properties are easily extended to $\mathbb{K}=\mathbb{C}$. -\end{remark} +% \begin{remark} +% The concepts presented here are now in conventional employment in mathematics. Vector spaces are taken over the field $\mathbb{K}=\mathbb{R}$, however, established properties are easily extended to $\mathbb{K}=\mathbb{C}$. +% \end{remark} -%------------------------------------------------ +% %------------------------------------------------ -\section{Corollaries} +% \section{Corollaries} -This is an example of a corollary. +% This is an example of a corollary. -\begin{corollary}[Corollary name] - The concepts presented here are now in conventional employment in mathematics. Vector spaces are taken over the field $\mathbb{K}=\mathbb{R}$, however, established properties are easily extended to $\mathbb{K}=\mathbb{C}$. -\end{corollary} +% \begin{corollary}[Corollary name] +% The concepts presented here are now in conventional employment in mathematics. Vector spaces are taken over the field $\mathbb{K}=\mathbb{R}$, however, established properties are easily extended to $\mathbb{K}=\mathbb{C}$. +% \end{corollary} -%------------------------------------------------ +% %------------------------------------------------ -\section{Propositions} +% \section{Propositions} -This is an example of propositions. +% This is an example of propositions. -\subsection{Several equations}\index{Propositions!Several Equations} +% \subsection{Several equations}\index{Propositions!Several Equations} -\begin{proposition}[Proposition name] - It has the properties: - \begin{align} - & \big| ||\mathbf{x}|| - ||\mathbf{y}|| \big|\leq || \mathbf{x}- \mathbf{y}|| \\ - & ||\sum_{i=1}^n\mathbf{x}_i||\leq \sum_{i=1}^n||\mathbf{x}_i||\quad\text{where $n$ is a finite integer} - \end{align} -\end{proposition} +% \begin{proposition}[Proposition name] +% It has the properties: +% \begin{align} +% & \big| ||\mathbf{x}|| - ||\mathbf{y}|| \big|\leq || \mathbf{x}- \mathbf{y}|| \\ +% & ||\sum_{i=1}^n\mathbf{x}_i||\leq \sum_{i=1}^n||\mathbf{x}_i||\quad\text{where $n$ is a finite integer} +% \end{align} +% \end{proposition} -\subsection{Single Line}\index{Propositions!Single Line} +% \subsection{Single Line}\index{Propositions!Single Line} -\begin{proposition} - Let $f,g\in L^2(G)$; if $\forall \varphi\in\mathcal{D}(G)$, $(f,\varphi)_0=(g,\varphi)_0$ then $f = g$. -\end{proposition} +% \begin{proposition} +% Let $f,g\in L^2(G)$; if $\forall \varphi\in\mathcal{D}(G)$, $(f,\varphi)_0=(g,\varphi)_0$ then $f = g$. +% \end{proposition} -%------------------------------------------------ +% %------------------------------------------------ -\section{Examples} +% \section{Examples} -This is an example of examples. +% This is an example of examples. -\subsection{Equation and Text} +% \subsection{Equation and Text} -\begin{example} - Let $G=\{x\in\mathbb{R}^2:|x|<3\}$ and denoted by: $x^0=(1,1)$; consider the function: - \begin{equation} - f(x)=\left\{\begin{aligned}& \mathrm{e}^{|x|} & & \text{si $|x-x^0|\leq 1/2$} \\ & 0 & & \text{si $|x-x^0|> 1/2$}\end{aligned}\right. - \end{equation} - The function $f$ has bounded support, we can take $A=\{x\in\mathbb{R}^2:|x-x^0|\leq 1/2+\epsilon\}$ for all $\epsilon\in\intoo{0}{5/2-\sqrt{2}}$. -\end{example} +% \begin{example} +% Let $G=\{x\in\mathbb{R}^2:|x|<3\}$ and denoted by: $x^0=(1,1)$; consider the function: +% \begin{equation} +% f(x)=\left\{\begin{aligned}& \mathrm{e}^{|x|} & & \text{si $|x-x^0|\leq 1/2$} \\ & 0 & & \text{si $|x-x^0|> 1/2$}\end{aligned}\right. +% \end{equation} +% The function $f$ has bounded support, we can take $A=\{x\in\mathbb{R}^2:|x-x^0|\leq 1/2+\epsilon\}$ for all $\epsilon\in\intoo{0}{5/2-\sqrt{2}}$. +% \end{example} -\subsection{Paragraph of Text} +% \subsection{Paragraph of Text} -\begin{example}[Example name] - rrr -\end{example} +% \begin{example}[Example name] +% rrr +% \end{example} -%------------------------------------------------ +% %------------------------------------------------ -\section{Exercises} +% \section{Exercises} -This is an example of an exercise. +% This is an example of an exercise. -\begin{exercise} - This is a good place to ask a question to test learning progress or further cement ideas into students' minds. -\end{exercise} +% \begin{exercise} +% This is a good place to ask a question to test learning progress or further cement ideas into students' minds. +% \end{exercise} -%------------------------------------------------ +% %------------------------------------------------ -\section{Problems} +% \section{Problems} -\begin{problem} -What is the average airspeed velocity of an unladen swallow? -\end{problem} +% \begin{problem} +% What is the average airspeed velocity of an unladen swallow? +% \end{problem} -%------------------------------------------------ +% %------------------------------------------------ -\section{Vocabulary} +% \section{Vocabulary} -Define a word to improve a students' vocabulary. +% Define a word to improve a students' vocabulary. -\begin{vocabulary}[Word] - Definition of word. -\end{vocabulary} +% \begin{vocabulary}[Word] +% Definition of word. +% \end{vocabulary} -\chapterimage{chapter_head_1.pdf} % Chapter heading image +% \chapterimage{chapter_head_1.pdf} % Chapter heading image -\chapter{Presenting Information} +% \chapter{Presenting Information} -\begin{enumerate} - \item The first item - \item The second item - \item The third item -\end{enumerate} +% \begin{enumerate} +% \item The first item +% \item The second item +% \item The third item +% \end{enumerate} -\begin{itemize} - \item The first item - \item The second item - \item The third item -\end{itemize} +% \begin{itemize} +% \item The first item +% \item The second item +% \item The third item +% \end{itemize} -\begin{description} - \item[Name] Description - \item[Word] Definition - \item[Comment] Elaboration -\end{description} +% \begin{description} +% \item[Name] Description +% \item[Word] Definition +% \item[Comment] Elaboration +% \end{description} -\section{Table} +% \section{Table} -\begin{table}[h] - \centering - \begin{tabular}{l l l} - \toprule - \textbf{Treatments} & \textbf{Response 1} & \textbf{Response 2} \\ - \midrule - Treatment 1 & 0.0003262 & 0.562 \\ - Treatment 2 & 0.0015681 & 0.910 \\ - Treatment 3 & 0.0009271 & 0.296 \\ - \bottomrule - \end{tabular} - \caption{Table caption} - \label{tab:example} % Unique label used for referencing the table in-text - %\addcontentsline{toc}{table}{Table \ref{tab:example}} % Uncomment to add the table to the table of contents -\end{table} +% \begin{table}[h] +% \centering +% \begin{tabular}{l l l} +% \toprule +% \textbf{Treatments} & \textbf{Response 1} & \textbf{Response 2} \\ +% \midrule +% Treatment 1 & 0.0003262 & 0.562 \\ +% Treatment 2 & 0.0015681 & 0.910 \\ +% Treatment 3 & 0.0009271 & 0.296 \\ +% \bottomrule +% \end{tabular} +% \caption{Table caption} +% \label{tab:example} % Unique label used for referencing the table in-text +% %\addcontentsline{toc}{table}{Table \ref{tab:example}} % Uncomment to add the table to the table of contents +% \end{table} -Referencing Table \ref{tab:example} in-text automatically. +% Referencing Table \ref{tab:example} in-text automatically. -%------------------------------------------------ +% %------------------------------------------------ -\section{Figure} +% \section{Figure} -\begin{figure}[h] - \centering\includegraphics[scale=0.5]{placeholder.jpg} - \caption{Figure caption} - \label{fig:placeholder} % Unique label used for referencing the figure in-text - % \addcontentsline{toc}{figure}{Figure \ref{fig:placeholder}} % Uncomment to add the figure to the table of contents -\end{figure} +% \begin{figure}[h] +% \centering\includegraphics[scale=0.5]{placeholder.jpg} +% \caption{Figure caption} +% \label{fig:placeholder} % Unique label used for referencing the figure in-text +% % \addcontentsline{toc}{figure}{Figure \ref{fig:placeholder}} % Uncomment to add the figure to the table of contents +% \end{figure} -Referencing Figure \ref{fig:placeholder} in-text automatically. +% Referencing Figure \ref{fig:placeholder} in-text automatically. %---------------------------------------------------------------------------------------- % BIBLIOGRAPHY %---------------------------------------------------------------------------------------- \renewcommand{\bibname}{参考文献} \chapter*{参考文献} +\markboth{\sffamily\normalsize\bfseries 参考文献}{\sffamily\normalsize\bfseries 参考文献} \addcontentsline{toc}{chapter}{\textcolor{ocre}{参考文献}} % Add a Bibliography heading to the table of contents \printbibliography[heading=bibempty] @@ -381,7 +383,7 @@ \chapter*{参考文献} %---------------------------------------------------------------------------------------- % INDEX %---------------------------------------------------------------------------------------- -\renewcommand{\indexname}{索引} +\renewcommand{\indexname}{\sffamily\bfseries 索引} \cleardoublepage % Make sure the index starts on an odd (right side) page \phantomsection \setlength{\columnsep}{0.75cm} % Space between the 2 columns of the index diff --git a/structure.tex b/structure.tex index d5ece7f..4b6bdc3 100644 --- a/structure.tex +++ b/structure.tex @@ -97,7 +97,7 @@ % BIBLIOGRAPHY AND INDEX %---------------------------------------------------------------------------------------- -\usepackage[style=authoryear,citestyle=authoryear,uniquename=init,sorting=nyt,sortcites=true,autopunct=true,babel=hyphen,hyperref=true,abbreviate=false,backref=true,backend=biber,natbib=true]{biblatex} +\usepackage[style=authoryear,citestyle=authoryear,maxbibnames=99,uniquename=init,sorting=nyt,sortcites=true,autopunct=true,babel=hyphen,hyperref=true,abbreviate=false,backref=true,backend=biber,natbib=true]{biblatex} \addbibresource{bibliography.bib} % BibTeX bibliography file \defbibheading{bibempty}{}