Figures

Figure 1.1 Simplified graphics pipeline

Figure 1.2 Future Crew’s 1992 demo—Unreal

Figure 2.1 The output of our first OpenGL application

Figure 2.2 Rendering our first point

Figure 2.3 Making our first point bigger

Figure 2.4 Our very first OpenGL triangle

Figure 3.1 Our first tessellated triangle

Figure 3.2 Tessellated triangle after adding a geometry shader

Figure 3.3 Clockwise (left) and counterclockwise (right) winding order

Figure 3.4 Result of Listing 3.10

Figure 3.5 Result of Listing 3.12

Figure 3.6 Realtech VR’s OpenGL Extensions Viewer

Figure 4.1 A point in space is both a vertex and a vector

Figure 4.2 The dot product: cosine of the angle between two vectors

Figure 4.3 A cross product returns a vector perpendicular to its parameters

Figure 4.4 Reflection and refraction

Figure 4.5 A 4 × 4 matrix representing rotation and translation

Figure 4.6 Modeling transformations: (a) rotation, then translation and (b) translation, then rotation

Figure 4.7 Two perspectives of view coordinates

Figure 4.8 The modeling transformations

Figure 4.9 A cube translated ten units in the positive y direction

Figure 4.10 A cube rotated about an arbitrary axis

Figure 4.11 A non-uniform scaling of a cube

Figure 4.12 A side-by-side example of an orthographic versus perspective projection

Figure 4.13 Finding a point on a line

Figure 4.14 A simple Bézier curve

Figure 4.15 A cubic Bézier curve

Figure 4.16 A cubic Bézier spline

Figure 5.1 Binding buffers and uniform blocks to binding points

Figure 5.2 A few frames from the spinning cube application

Figure 5.3 Many cubes!

Figure 5.4 A simple textured triangle

Figure 5.5 A full-screen texture loaded from a .KTX file

Figure 5.6 An object wrapped in simple textures

Figure 5.7 Texture filtering—nearest neighbor (left) and linear (right)

Figure 5.8 A series of mipmapped images

Figure 5.9 A tunnel rendered with three textures and mipmapping

Figure 5.10 Example of texture coordinate wrapping modes

Figure 5.11 GL_MIRROR_CLAMP_TO_EDGE in action

Figure 5.12 Output of the alien rain sample

Figure 5.13 Resolved per-fragment linked lists

Figure 6.1 Shape of a Hermite curve

Figure 7.1 Indices used in an indexed draw

Figure 7.2 Base vertex used in an indexed draw

Figure 7.3 Triangle strips (a) without primitive restart and (b) with primitive restart

Figure 7.4 First attempt at an instanced field of grass

Figure 7.5 Slightly perturbed blades of grass

Figure 7.6 Control over the length and orientation of our grass

Figure 7.7 The final field of grass

Figure 7.8 Result of instanced rendering

Figure 7.9 Result of asteroid rendering program

Figure 7.10 Relationship of transform feedback binding points

Figure 7.11 Connections of vertices in the spring mass system

Figure 7.12 Simulation of points connected by springs

Figure 7.13 Visualizing springs in the spring mass system

Figure 7.14 Clipping lines

Figure 7.15 Clipping triangles

Figure 7.16 Clipping triangles using a guard band

Figure 7.17 Rendering with user clip distances

Figure 8.1 Schematic of OpenGL tessellation

Figure 8.2 Tessellation factors for quad tessellation

Figure 8.3 Quad tessellation example

Figure 8.4 Tessellation factors for triangle tessellation

Figure 8.5 Triangle tessellation example

Figure 8.6 Tessellation factors for isoline tessellation

Figure 8.7 Isoline tessellation example

Figure 8.8 Tessellated isoline spirals example

Figure 8.9 Triangle tessellated using point mode

Figure 8.10 Tessellation using different subdivision modes

Figure 8.11 Displacement map used in terrain example

Figure 8.12 Terrain rendered using tessellation

Figure 8.13 Tessellated terrain in wireframe

Figure 8.14 Final rendering of a cubic Bézier patch

Figure 8.15 A Bézier patch and its control cage

Figure 8.16 Geometry culled from different viewpoints

Figure 8.17 Exploding a model using the geometry shader

Figure 8.18 Basic tessellation using the geometry shader

Figure 8.19 Displaying the normals of a model using a geometry shader

Figure 8.20 Lines produced using lines with adjacency primitives

Figure 8.21 Triangles produced using GL_TRIANGLES_ADJACENCY

Figure 8.22 Triangles produced using GL_TRIANGLE_STRIP_ADJACENCY

Figure 8.23 Ordering of vertices for GL_TRIANGLE_STRIP_ADJACENCY

Figure 8.24 Rendering a quad using a pair of triangles

Figure 8.25 Parameterization of a quad

Figure 8.26 Quad rendered using a geometry shader

Figure 8.27 Result of rendering to multiple viewports

Figure 9.1 Contrasting perspective-correct and linear interpolation

Figure 9.2 Rendering with four different scissor rectangles

Figure 9.3 Effect of depth clamping at the near plane

Figure 9.4 A clipped object with and without depth clamping

Figure 9.5 All possible combinations of blending functions

Figure 9.6 Result of rendering into a texture

Figure 9.7 Result of the layered rendering example

Figure 9.8 Result of stereo rendering to a stereo display

Figure 9.9 Antialiasing using line smoothing

Figure 9.10 Antialiasing using polygon smoothing

Figure 9.11 Antialiasing sample positions

Figure 9.12 No antialising (left) and eight-sample antialiasing (center and right)

Figure 9.13 Antialiasing of high-frequency shader output

Figure 9.14 Partially covered multi-sampled pixels

Figure 9.15 Different views of an HDR image

Figure 9.16 Histogram of levels for treelights.ktx

Figure 9.17 Naïve tone mapping by clamping

Figure 9.18 Transfer curve for adaptive tone mapping

Figure 9.19 Result of adaptive tone-mapping program

Figure 9.20 The effect of light bloom on an image

Figure 9.21 Original and thresholded output for bloom example

Figure 9.22 Blurred thresholded bloom colors

Figure 9.23 Result of the bloom program

Figure 9.24 Gamma curves for sRGB and simple powers

Figure 9.25 A particle effect in the flurry screen saver

Figure 9.26 The star texture map

Figure 9.27 Flying through space with point sprites

Figure 9.28 Two potential orientations of textures on a point sprite

Figure 9.29 Analytically generated point sprite shapes

Figure 10.1 Global and local compute work group dimensions

Figure 10.2 Effect of race conditions in a compute shader

Figure 10.3 Effect of barrier() on race conditions

Figure 10.4 Sample input and output of a prefix sum operation

Figure 10.5 Breaking a prefix sum into smaller chunks

Figure 10.6 A 2D prefix sum

Figure 10.7 Computing the sum of a rectangle in a summed area table

Figure 10.8 Variable filtering applied to an image

Figure 10.9 Depth of field in a photograph

Figure 10.10 Applying depth of field to an image

Figure 10.11 Effects achievable with depth of field

Figure 10.12 Stages in the iterative flocking algorithm

Figure 10.13 Output of compute shader flocking program

Figure 11.1 Output of the bindlesstex example application

Figure 11.2 Output of the sparsetexture example application

Figure 11.3 Representation of image data as endpoints of a line

Figure 11.4 Result of using RGTC texture compression on a distance field

Figure 11.5 Linear interpolation under high magnification

Figure 11.6 Graph showing linear interpolation

Figure 11.7 Graph showing smooth interpolation

Figure 11.8 Result of smooth interpolation

Figure 13.1 Vectors used in Phong lighting

Figure 13.2 Per-vertex lighting (Gouraud shading)

Figure 13.3 Per-fragment lighting (Phong shading)

Figure 13.4 Varying specular parameters of a material

Figure 13.5 Phong lighting (left) versus Blinn-Phong lighting (right)

Figure 13.6 Rim lighting vectors

Figure 13.7 Result of rim lighting example

Figure 13.8 Example normal map

Figure 13.9 Result of normal mapping example

Figure 13.10 A selection of spherical environment maps

Figure 13.11 Result of rendering with spherical environment mapping

Figure 13.12 Example equirectangular environment map

Figure 13.13 Rendering result of equirectangular environment map

Figure 13.14 The layout of six cube faces in the cubemap sample program

Figure 13.15 Cubemap environment rendering with a skybox

Figure 13.16 Pre-filtered environment maps and gloss map

Figure 13.17 Result of per-pixel gloss example

Figure 13.18 Depth as seen from a light

Figure 13.19 Results of rendering with shadow maps

Figure 13.20 Graphs of exponential decay

Figure 13.21 Applying fog to a tessellated landscape

Figure 13.22 A one-dimensional color lookup table

Figure 13.23 A toon-shaded torus

Figure 13.24 Visualizing components of a G-buffer

Figure 13.25 Final rendering using deferred shading

Figure 13.26 Deferred shading with (left) and without (right) normal maps

Figure 13.27 Bumpy surface occluding points

Figure 13.28 Selection of random vector in an oriented hemisphere

Figure 13.29 Effect of increasing direction count on ambient occlusion

Figure 13.30 Effect of introducing noise in ambient occlusion

Figure 13.31 Ambient occlusion applied to a rendered scene

Figure 13.32 A few frames from the Julia set animation

Figure 13.33 Simplified 2D illustration of ray tracing

Figure 13.34 Our first ray-traced sphere

Figure 13.35 Our first lit ray-traced sphere

Figure 13.36 Implementing a stack using framebuffer objects

Figure 13.37 Ray-traced spheres with increasing ray bounces

Figure 13.38 Adding a ray-traced plane

Figure 13.39 Ray-traced spheres in a box

Figure 13.40 Low-resolution texture used for a logo

Figure 13.41 High-resolution texture used for a logo

Figure 13.42 Distance field of the OpenGL logo

Figure 13.43 Distance fields for a line

Figure 13.44 Output of distance field rendering application

Figure 13.45 Distance field for English characters

Figure 13.46 Distance field of a Chinese character

Figure 13.47 Chinese text rendered using distance fields

Figure 13.48 Two textures to be mixed using a distance field

Figure 13.49 Landscape map texture and distance field

Figure 13.50 Result of landscape texturing with distance fields

Figure 13.51 Output of font rendering demo

Figure 14.1 Output of the OpenMP particle simulator

Figure 14.2 CPU utilization of the ompparticles application

Figure 14.3 Indirect material parameters

Figure 14.4 Output of the cullindirect application

Figure 14.5 Synchronizing access to a mapped buffer

Figure 14.6 Persistent mapped Julia fractal

Figure 14.7 GPUView in action

Figure 14.8 Vsync seen in GPUView

Figure 14.9 A packet dialog in GPUView

Figure 14.10 GPU PerfStudio running an example application

Figure 14.11 GPU PerfStudio frame debugger

Figure 14.12 GPU PerfStudio HUD control window

Figure 14.13 GPU PerfStudio overlaying information

Figure 14.14 GPU PerfStudio showing AMD performance counters

Figure 14.15 GPUView showing the effect of glReadPixels() into system memory

Figure 14.16 GPUView showing the effect of glReadPixels() into a buffer

Figure B.1 Dump of example SBM file

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset