Retrospective and the Future

This chapter looks back at some of the details of the complete pbrt system, discusses some design alternatives, and also discusses some potential major extensions to the system. pbrt represents one single point in the space of rendering system designs. pbrt represents one single point in the space of rendering system designs. The basic decisions win pbrt are that ray tracing would be the geometric visibility algorithm used, that physical correctness would be a cornerstone of the system, and that Monte Carlo would be the main approach used for numerical integration; all these have pervasive implications for the system's design. One of the basic assumptions in pbrt's design was that the most interesting types of images to render are images with complex geometry and lighting. One result of these assumptions is that pbrt is relatively inefficient at rendering simple images. Another performance implication of this design approach is that finding the BSDF at a ray intersection is more computationally intensive than it is in renderers that do not expend as much effort filtering textures and computing ray differentials. Another instance where the chosen abstractions impact the overall system efficiency is the range of geometric primitives that the renderer supports. While ray tracing's ability to handle a wide variety of shapes is elegant, this property is not as useful in practice as one might initially expect. Not many shapes that are commonly encountered in real-world scenes can be described well with spheres and cones. An alternative approach to design a ray tracer around a single low-level shape representation like triangles and only operating on this representation throughout much of the pipeline has several advantages which increase performance and remove complexity from the system.