Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition Chapter 19
Figure 19.1: Synthetic-camera rendering pipeline (the dashed part of the small drawn box is outside the viewing frustum; the corresponding transformed part is outside the canonical box, so clipped).
Figure 19.2: Screenshot of Experiment 19.1.
Figure 19.3: The synthetic camera in Flatland: the point camera is at O’, the “viewing trapezoid” is q, the “canonical rectangle” q’.
Figure 19.4: Screenshot of perspectiveCorrection.cpp.
Figure 19. 5: The line segment drawn in perspectiveCorrection Figure 19.5: The line segment drawn in perspectiveCorrection.cpp is pq and its projection on the viewing face pq’.
Figure 19.6: (a) A point is mapped by the projection transformation from a viewing frustum to the canonical viewing box, followed by parallel projection to the latter's back face. (b) Likewise for a line segment: the projection transformation does not preserve convex combinations, but parallel projection does.
Figure 19.7: The rasterization R(S) of a line segment S consists of N + 1 pixels, each corresponding to a particular u-value (a few u-values are shown vertically below the corresponding pixel).
Figure 19.8: Complete minimal synthetic-camera rendering pipeline.
Figure 19.9: OpenGL fixed-function pipeline. Additions to the minimal synthetic-camera pipeline are darkly shaded.
Figure 19.10: Scaling from the 2 x 2 back face of the canonical box, located on an xy-plane, to the m x n area of the raster.
Figure 19.11: Tracing rays from a light source L – only few reach the eye.
Figure 19. 12: Tracing rays from the eye, one through each pixel Figure 19.12: Tracing rays from the eye, one through each pixel. Rays are “stopped” when they strike an object.
Figure 19.13: Shadow computation: feeler rays are dashed.
Figure 19.14: (a) Reflection and transmission: reflected rays are black, transmitted blue. One dashed feeler ray is drawn. (b) Ray tree (not all edges are labeled).
Figure 19.15: Calculating the direction of the reflected and transmitted rays: A = angle of incidence, B = angle of reflection, C = angle of refraction.
Figure 19.16: Ray tracing versus OpenGL: screenshot of (a) sphereInBoxPOV.pov (b) sphereInBox1.cpp.
Figure 19.17: The (object-oriented) synthetic-camera pipeline versus the (screen-oriented) ray traced pipeline.
Figure 19. 18: Living room lit mostly with diffuse light (courtesy www Figure 19.18: Living room lit mostly with diffuse light (courtesy www.freshome.com).
Figure 19.19: Patchified box.
Figure 19.20: Form factor between patches depends on their respective orientation, the distance between them and if there is occlusion by other patches.
Figure 19.21: Comput- ing form factors.
Figure 19.22: (a) Projecting a patch onto a hemicube (b) Computing the delta form factor.
Figure 19.23: The radiosity algorithm.
Figure 19.24: Without and with radiosity: screenshot of sphereInBoxPOV.pov with (a) radiosity disabled (b) radiosity enabled.