Subject Index

A

Accumulation buffer
blending artifacts, 193
convolution utilization, 228–230
operations, 116–117
supersampling, 173–175
Adaptive tessellation, 319
Alias, definition, 60, 169
Alpha
acceleration, 139
color computation, 39
Alpha-blended transparency
depth peeling, 205
dynamic objects, 202–203
ordering, 200–201
output color, 200–202
transparency mapping, 203
transparency sorting, 204–205
Alpha test, fragment operations, 111
Ambient lighting, See Lighting
Ambient occlusion, global illumination, 357–359
Andrews plot, point data visualization, 536–537
Animation, textures, 302–306
Anisotropic lighting model, 337–340
Antialiasing
area sampling, 177–178
artifact prevention in line renderings, 389–390
full-scene, 170
line antialiasing, 178–180
point antialiasing, 178–180
polygon antialiasing, 181–182
rationale, 169–170
small particles, 472
supersampling, See Supersampling
temporal antialiasing, 182–184
texturing, 180–181
Application performance
bottlenecks
finding
application subsystem
bottlenecks,
overview, 583–584
geometry subsystem
bottlenecks, 584
rasterization subsystem
bottlenecks, 584–585
subsystem sites, 581–583
cache and memory usage optimization, 585–586
depth complexity, measuring, 589–591
measurement
finish versus flush, 588–589
video refresh
quantization, 587–588
pipeline interleaving, 591–592
state change minimization, 586
ARB imaging subset
color matrix transform, 68
color tables, 70
constant color bending, 71–72
convolution, 68
histogram, 69–70
minmax operation, 70
ARB_buffer_region, 599
ARB_depth_texture, 598
ARB_extensions_string, 599
ARB_fragment_program, 100, 102, 161, 465, 598
ARB_fragment_shader, 598
ARB_make_current_read, 599
ARB_matrix_palette, 598
ARB_multisample, 207, 598
ARB_multitexture, 598
ARB_occlusion_query, 373, 598
ARB_pbuffer, 599
ARB_pixel_format, 599
ARB_point_parameters, 472, 598
ARB_point_sprite, 598
ARB_render_texture, 80, 126, 314, 599
ARB_shader_objects, 598
ARB_shading_language, 100, 598
ARB_shadow, 598
ARB_shadow_ambient, 598
ARB_texture_border_clamp, 598
ARB_texture_compression, 598
ARB_texture_cube_map, 598
ARB_texture_env_add, 99, 598
ARB_texture_env_combine, 97, 99, 598
ARB_texture_env_crossbar, 97, 100, 598
ARB_texture_env_dot3, 97, 100, 598
ARB_texture_mirrored_repeat, 598
ARB_texture_non_power_of_two, 274, 286, 598
ARB_transpose_matrix, 598
ARB_vertex_blend, 598
ARB_vertex_buffer_object, 576, 598
ARB_vertex_program, 33, 598
ARB_vertex_shader, 598
ARB_window_pos, 598
Area sampling, 177–178
Atlas, texture, See Texture mapping
ATI_envmap_bumpmap, 354, 447
ATI_vertex_array_object, 576
Attenuate operator, blending for volume visualization, 552
Attenuation, positional light, 47
Axonometric projection, 502–503

B

Bidirectional reflectance distribution function, lighting, 46, 332
Billboarding, geometry and transformation, 257–261
Bitmaps
images, 63
rasterization, 107
Blending
acceleration, 140
alpha blending, See Alpha-blended transparency
artifacts
accumulation buffer blending, 193
approximation errors, 193
arithmetic errors, 192–193
gamma correction errors, 193–194
operations
constant colors, 196
fragment operations, 112–114
min/max, 196
modulating an image, 196
subtraction, 196
summing two images, 196
Blinn lighting model, 335
Bottlenecks, See Application performance
Box filter, 61
Bump mapping
applications, 343–344
approximation using texture, 345
forward differencing, 347, 349–351
limitations, 351
overview, 344–345
reflections, 353–354
tangent space, 346–347

C

cast_ray(), 440, 442
Chart, point data visualization, 537
Choropleth, scalar field visualization, 541, 543
Circle of confusion, definition, 239
Clip mapping, See Texture mapping
Clip space, perspective divide, 22
Clouds
dynamic mesh modeling, 486–487
particle system modeling, 482–483
Color
alpha, 39
biased representation, 54–56
final color value calculation, 46, 53
fixed-point representation, 53
floating-point representation, 53
gamma, 37–39
image processing, See Image processing
interpolation in rasterization, 108–109
reflectance values, 46
representation of color space, 35–40
resolution and dynamic range, 36–37
Color index mode, applications, 39–40
Color space
conversion
YIQ, 222
definition, 35
Comb function, frequency domain analysis, 60
Common profile, OpenGL ES, 133–136
Common-Lite profile, OpenGL ES, 133–134
Composite materials, classification for lighting, 50
Compositing
alpha division operation, 190
definition, 185
depth images, 194–195
multiple images, 187–190
operators, 190–191
two images, 185–187
Computer-aided design capping clipped solids, 392–393
Constructive solid geometry, model construction, 393–401
Convolution
accumulation buffer utilization, 228–230
ARB imaging subset, 68
correlation and feature detection, 233, 235
definition, 62
extension utilization, 230
filtering using texture convolution, 490–495
filters
arithmetic mean, 231–232
basic smooth, 232
gradient detection, 231
high-pass filters, 232
Laplacian filter, 232
line detection, 231
smoothing and blurring, 231
Sobel filter, 232–233
kernels, 62–63
separable filters, 227–228
Cook-Torrance lighting model, 342–343
Cube map
ray casting, 549–440
textures, 83–85, 437–440
warping, 434–436
Culling,
geometric level of detail
changing detail, 374–375
principles, 373–374
transition techniques, 375–377
occlusion culling
depth estimation buffer
building, 372
occluder selection, 371
occlusion map building, 371
principles, 370–371
testing, 372–373
overview, 369–370
Cutaway views
generation, 508–510
surface texture management
alpha buffer approach, 510–511
two buffer approach, 511
Cyan magenta yellow black, color representation, 36

D

Data representation, transformed data, 19
Data visualization, See Scientific visualization
Decaling, polygons, 390–392
Decompensation, polygon, 4–5
Deferred shading, multipass rendering, 167
Depth complexity, measuring, 589–591
Depth cuing, implementation, 511–512
Depth of field
geometric modeling, 252–254
image-based modeling, 238–241
Depth peeling, alpha-blended transparency, 205
Depth range
line renderings, 384–385
perspective projection, 31
viewport transform, 23
Depth test, acceleration, 139–140
Detail textures, See Texture mapping
Dielectrics, material classification for lighting, 49
Diffuse lighting, See Lighting
Dissolves, 186
definition, 196
masking operations, 197
stenciling, 197–198
Distortion mesh
dual-paraboloid maps, 448–449
environment map creation, 434
Drawing, two-dimensional
accuracy, 516–517
limitations of OpenGL, 516
line joins, 517–518
trim curves, 518–519
Dual-paraboloid mapping, See Environment maps
Dynamic mesh
cloud modeling, 486–487
components, 484–485
water modeling, 485–486
Dynamic range

E

Edge antialiasing, 105
Emissive lighting, See Lighting
Environment maps
creation
cube map textures, 437–440
ray casting, 433–434
sphere map textures, 440–443
texture warping, 434–436
curved reflectors, 419
dual-paraboloid mapping
environment mapping between cube and sphere maps, 443, 445
ray casting, 445–447
sampling characteristics, 445
textures
mathematics, 291–294
OpenGL support, 296
using, 294–295
warping, 447–448
dynamic updating, 448–449
refraction, 429–430
sampling rate, 432
specular lighting
multitexture, 326–327
two-pass method, 325–326
texture mapping
cube mapping, 83–85
overview, 80–81
sphere mapping, 85–88
texture coordinate generation, 81–82
texture maps, 82–83
Explosions, particle system modeling, 482
EXT_bgra, 599–602
EXT_color_table, 212, 555
EXT_convolution, 212
EXT_CMYKA, 222
EXT_paletted_texture
EXT_point_parameters, 595, 603
EXT_texture_compression_s3tc, 76
EXT_texture_filter_anisotropic, 91
EXT_texture_lod, 284
EXT_texture_rectangle, 274
Extensions, OpenGL
ARB extension types, 598–599
convolution, 230
documentation, 593–594
function pointers, 602–604
overview, 131
portable use, 599–601
specifications
format, 594–598
resources, 594
Eye space, projection transform, 21–22

F

Facet normal, computation, 8–9
False coloring, scalar field visualization, 540–541, 543
Fan winding, 12
Filtered noise functions, procedural texture generation, 487–489
Filtering See also (Convolution)
applications, 60–61
box filter, 61
texture mapping, 90–91
Fire, particle system modeling, 481–482
Fog
acceleration, 139
z coordinate in computation, 32
Fourier analysis
convolution, 63
sampling, 59
Fragment operations
alpha test, 111
blending, 112–114
comparison operators, 110
logical operation, 114–115
multisample operations, 111
stencil test, 111–112
Fragment programs, texture environment function, 100–102
Framebuffer
operations, 115–117, 140
texture image loading, 270
texture mapping of images, 79–80
Frame rate, 182, 302–303, 577, 581, 587–588
Frame time management
overview, 577–579
phases
computation phase, 580–581
input phase, 579
rendering phase, 579–580
safety margin, 581
Fresnel reflection lighting model, 335–336
Function approximations
hypotenuse, 613
Newton-Raphson method, 612–613
Taylor series expansion, 612

G

Gamma
computer display value, 37–38
correction, 37–39
correction errors, 193–194
Gaussian reflection lighting model, 336
Geometrical attenuation factor, 340
glAccum, 214, 228–229, 497, 515
glActiveTexture, 96
glAlphaFunc, 157
glBegin, 133, 144, 381, 475, 574–575, 584
glBeginQuery, 373
glBindProgramARB, 101
glBindTexture, 94
glBitmap, 134, 520–521
glBlendColor, 71, 552
glBlendEquation, 71, 552
glBlendFunc, 157, 191, 216, 552
glBufferData, 16
glCallLists, 521–522
glClear, 195, 198, 399, 590
glClearDepth, 399
glClearStencil, 400
glClientActiveTexture, 96–97
glColor, 356
glColor3fv, 584
glColor3ub, 366
glColorMask, 111, 115, 158, 195, 198, 382–383, 399, 408
glColorMaterial, 133, 356
glColorTable, 235
glCompressedTexImage, 76
glCopyConvolutionFilter, 2D, 230, 235
glCopyPixels, 124, 134, 160–161, 191, 228, 329, 511, 515, 568
glCopyTexImage, 80, 314, 438
glCopyTexImage2D, 83, 160, 162, 212, 301, 409, 443
glCopyTexture, 124, 127
glCopyTexture2D, 133
glCullFace, 392, 399
glDeleteProgramARB, 101
glDepthFunc, 157
glDepthMask, 111, 179, 198, 201, 400
glDepthRange, 133, 382, 384, 608
glDisable, 96, 195, 383, 391, 584
glDisableClientState, 96–97
glDrawElements, 16, 145, 567
glDrawPixels, 134, 194–195, 198, 212, 215, 270, 399, 513, 515, 521–522, 590, 600–601
glEnable, 83, 86, 96, 198, 235, 382–384, 390, 590
glEnableClientState, 96
glEnd, 133, 144, 475, 574–575, 584
glEndQuery, 373
glFinish, 579, 589
glFlush, 589
glFrontFace, 205
glGenTextures, 94
glGet, 90, 261
glGetIntegerv, 96
glGetPointerv, 96
glGetQueryObject, 373
glGetString, 595–596, 600
glGetTexImage, 94
glGetTexLevelParameter, 77, 94
glGetTexParameter, 94
glLight, 21, 356
glLineSmooth, 133
glListBase, 521
glLoadIdentity, 218, 438
glLoadMatrix, 248, 262
glLogicOp, 157
glLookAt, 251, 262
glMapBuffer, 16
glMaterial, 356
glMatrixMode, 96, 255, 438
glMultiTexCoord, 96
glMultMatrix, 248
glNormal3f, 378
glNormal3fv, 584
glNormalPointer(), 16
Global illumination, See Lighting
glOrtho, 30, 255, 262, 502, 607
glPixelMap, 515, 590
glPixelTransfer, 195
glPixelTransferi, 590
glPixelZoom, 235, 515
glPointParameter, 477–478
glPointParameterfEXT, 603
glPointParameterfvEXT, 603
glPointSmooth, 133
glPolygonMode, 381–382
glPolygonOffset, 107, 157, 382, 384, 388–389
glPolygonSmooth, 133
glPolygonStipple, 206, 513
glPopAttrib, 97
glPopClientAttrib, 97
glPopMatrix, 96
glProgramEnvParameter, 101
glProgramLocalParameter, 101
glProgramStringARB, 101
glPushAttrib, 97
glPushClientAttrib, 97
glPushMatrix, 96
glRasterPost, 522
glReadPixels, 79–80, 124, 175, 194, 212, 301, 515
glRotate, 218, 248, 261
glRotatef, 609
glSampleCoverage, 207, 376
glScale, 248, 261, 262
glScalef, 451, 609
glScissor, 157
glStencilFunc, 111, 157, 195, 198, 383, 389, 391–392, 400, 408, 590
glStencilMask, 391, 399–400
glStencilOp, 111, 157, 194–195, 198, 383, 390, 392, 400, 408, 590
glTexCoord, 576
glTexCoord3f, 84, 294, 378
glTexCoordPointer, 96
glTexEnv, 98–100
glTexGen, 81, 84, 86, 96, 330–331, 410, 512
glTexImage, 75, 94
glTexImage2D, 79, 83, 96, 133
glTexImage3D, 90, 304
glTexParameter, 75, 94, 96, 284
glTexSubImage2D, 302
glTranslate, 248, 253, 261–262
glTranslatef, 522, 609
gluBuild2DMipmaps, 313
gluLookAt, 438, 503, 608
gluPerspective, 31, 255, 323, 608
gluScaleImage, 312
glVertex, 107
glVertex3fv, 584
glViewpor, 228
glxCreateContext, 120
glxCreatePbuffer, 126
glXQueryClientString, 596
glXQueryExtensionsString, 596
glXQueryServerString, 596
glXUseXFont, 520
GL_ACCUM, 117, 228–229, 515
GL_ADD, 99, 119, 134, 160
GL_ADD_SIGNED, 55, 310
GL_ALPHA, 134, 279, 460, 508
GL_ALWAYS, 110, 383, 390, 590
GL_AMBIENT, 50–52
GL_AMBIENT_AND_DIFFUSE, 133
GL_ARB_depth_texture, 460
GL_ARB_point_sprite, 472
GL_ARB_shadow, 460
GL_BACK, 392
GL_BGRA_EXT, 600–602
GL_BGR_EXT, 602
GL_BLEND, 98, 134, 295, 471
GL_CLAMP, 75, 297, 324, 331, 506
GL_CLAMP_TO_BORDER, 279, 297
GL_CLAMP_TO_EDGE, 75, 275, 324, 439
GL_COLOR_INDEX, 590
GL_COLOR_MATERIAL, 41
GL_COLOR_TABLE, 70
GL_COMBINE, 55, 99, 160, 166, 310, 352
GL_COMPARE_R_TO_TEXTURE, 460
GL_CONSTANT, 99
GL_CONSTANT_ALPHA, 202, 552
GL_CONSTANT_COLOR, 376
GL_CONVOLUTION_2D, 235
GL_COPY, 115
GL_DECAL, 98, 134
GL_DEPTH_BIAS, 195
GL_DEPTH_BUFFER_BIT, 399, 590
GL_DEPTH_COMPONENT, 195
GL_DEPTH_SCALE, 195
GL_DEPTH_TEST, 382–383, 391
GL_DEPTH_TEXTURE_MODE, 460–461
GL_DIFFUSE, 50–52
GL_DONT_CARE, 179
GL_DOT3_RGB, 160, 352
GL_DOT3_RGBA, 160
GL_DST_ALPHA, 189, 519
GL_DST_COLOR, 196, 324
GL_EQUAL, 158, 167, 324, 333, 391, 393
GL_EQUIV, 115
GL_EXTENSIONS, 595, 600, 602
GL_EYE_LINEAR, 79, 84, 299
GL_EYE_PLANE, 330
GL_FALSE, 179, 391
GL_FASTEST, 179
GL_FILL, 105
GL_FLAT, 41
GL_FLOAT, 576
GL_FRONT, 392
GL_FRONT_AND_BACK, 133, 381
GL_FUNC_ADD, 114
GL_FUNC_REVERSE_SUBTRACT, 114
GL_FUNC_SUBTRACT, 114
GL_GREATER, 412
GL_INCR, 590
GL_KEEP, 383, 390, 590
GL_LEQUAL, 329, 368, 383, 460
GL_LESS, 110, 158
GL_LIGHTING, 584
GL_LINE, 105, 381
GL_LINEAR, 75, 84, 91, 271, 273, 287, 301, 304, 314, 327, 329, 331, 461
GL_LINEAR_MIPMAP_LINEAR, 84, 91–92, 139, 147, 313
GL_LINES, 381, 517
GL_LINE_LOOP, 381, 389, 517
GL_LINE_SMOOTH, 179
GL_LINE_STRIP, 381, 517
GL_LOAD, 515
GL_LUMINANCE, 75, 134
GL_LUMINANCE12_ALPHA, 4, 76
GL_MAP_COLOR, 590
GL_MAX, 114
GL_MAX_3D_TEXTURE_SIZE, 90
GL_MAX_EXT, 552
GL_MAX_TEXTURE_UNITS, 96
GL_MIN, 114
GL_MODELVIEW, 438
GL_MODULATE, 42, 53, 98–99, 134, 160, 180, 203, 297, 323, 471, 480, 484–485, 491
GL_MULT, 229, 497
GL_NEAREST, 75, 91, 273, 279, 287, 460, 494
GL_NEVER, 110
GL_NICEST, 179
GL_NORMALIZE, 30, 378, 569
GL_NORMAL_MAP, 81, 84, 164, 378, 436
GL_NOTEQUAL, 389
GL_OBJECT_LINEAR, 79, 299, 410
GL_OBJECT_PLANE, 299
GL_ONE, 114, 156, 179, 181, 189, 196, 201, 216, 311, 323, 329, 333, 473, 491, 497, 510–511, 552
GL_ONE_MINUS_ALPHA, 114
GL_ONE_MINUS_CONSTANT_ALPHA, 202
GL_ONE_MINUS_CONSTANT_COLOR, 376
GL_ONE_MINUS_DST, 552
GL_ONE_MINUS_DST_ALPHA, 510, 519
GL_ONE_MINUS_SRC_ALPHA, 179–180, 187–189, 200–201, 473–475, 509–511, 552
GL_PIXEL_MAP_A_TO_A, 215
GL_POINT_SMOOTH, 179, 472
GL_POLYGON, 381
GL_POLYGON_OFFSET_FILL, 384
GL_POLYGON_OFFSET_LINE, 384
GL_POLYGON_SMOOTH, 170, 181
GL_POLYGON_SMOOTH_HINT, 181
GL_POLYGON_STIPPLE, 206
GL_POST_COLOR_MATTRIX_COLOR_TABLE, 70
GL_POST_CONVOLUTION_COLOR_TABLE, 70, 235
GL_PREVIOUS, 99
GL_PRIMARY_COLOR, 99, 329
GL_PROJECTION, 255, 438
GL_PROXY_TEXTURE_1D, 77
GL_PROXY_TEXTURE_2D, 77
GL_PROXY_TEXTURE_3D, 90
GL_REFLECTION_MAP, 81, 84, 164, 294, 436
GL_REPEAT, 283, 299, 305, 309, 314, 329, 331, 493–494, 513
GL_REPLACE, 98, 314, 162, 203, 206, 279, 295, 383, 390, 461, 508
GL_RESCALE_NORMAL, 25
GL_RETURN, 497, 515
GL_RGB, 75, 134
GL_RGB5_A1, 139
GL_RGBA, 76, 134, 195
GL_RGBA4, 76, 139
GL_RGBA8, 76
GL_RGB_SCALE, 311
GL_S, 84, 330
GL_SAMPLE_ALPHA_TO_COVERAGE, 207
GL_SAMPLE_COVERAGE_VALUE, 207
GL_SEPARATE_SPECULAR_COLOR, 53
GL_SHININESS, 50–52
GL_SKIP_PIXELS, 283
GL_SKIP_ROWS, 283
GL_SMOOTH, 41–42
GL_SOURCEO_ALPHA, 329
GL_SOURCEO_RGB, 329
GL_SPECULAR, 50–52
GL_SPHERE_MAP, 81
GL_SRC_ALPHA, 114, 179, 187–188, 200, 215, 333–334, 473–475, 509, 511, 552
GL_SRC_ALPHA_SATURATE, 114, 181, 189, 552
GL_SRC_COLOR, 196, 311, 329
GL_STENCIL_BUFFER_BIT, 195, 400–401, 590
GL_STENCIL_INDEX, 590
GL_STENCIL_TEST, 198, 383, 390, 590
GL_T, 330
GL_TEXTURE, 99
GL_TEXTURE_1D, 77, 88, 94
GL_TEXTURE_2D, 77, 84, 88, 94
GL_TEXTURE_3D, 88, 94
GL_TEXTURE_BASE_LEVEL, 92, 284
GL_TEXTURE_BORDER_COLOR, 75
GL_TEXTURE_COMPARE_FUNC, 460
GL_TEXTURE_COMPARE_MODE, 460
GL_TEXTURE_CUBE_MAP, 83, 94
GL_TEXTURE_CUBE_MAP_POSITIVE, 438
GL_TEXTURE_GEN_MODE, 84
GL_TEXTURE_MAG_FILTER, 273
GL_TEXTURE_MAX_LEVEL, 92, 284
GL_TEXTURE_MAX_LOD, 93, 284
GL_TEXTURE_MIN_FILTER, 273
GL_TEXTURE_MIN_LOD, 93, 284
GL_TEXTURE_WIDTH, 77
GL_TEXTURE_WRAP_R, 305
GL_TEXTURE_WRAP_S, 282
GL_TEXTURE_WRAP_T, 282
GL_TRIANGLES, 16
GL_TRIANGLE_FAN, 12
GL_TRIANGLE_STRIP, 12
GL_TRUE, 590
GL_UNSIGNED_BYTE, 521
GL_UNSIGNED_SHORT, 576
GL_VERTEX_PROGRAM_ARB, 33
GL_ZERO, 114, 156, 189, 196, 311, 329, 390, 510–511, 519
GLX buffers, off-screen rendering, 125–126
Graphics processing
application optimization, 571–572
frame time management
overview, 577–579
phases
computation phase, 580–581
input phase, 579
rendering phase, 579–580
safety margin, 581
scene graphs
principles, 572–573
update stages
display, 575
generation, 573–574
rasterization, 575
transform, 575
traversal, 574
texture updates, 576–577
vertex updates, 575–576
Greedy tri-stripping, 13

H

Halftones
implementation, 515–516
three-dimensional, 513–515
Hardware acceleration
early-Z processing, 148–149
latency hiding, 148
processing forms, 142–144
rasterization, 145–148
vertex caching, 145
vertex efficiency, 144–145
Hatching, implementation, 512–515
High dynamic range imaging, 241–245
Highlighting
foreground object manipulation, 369
overview, 367–368
XOR highlighting, 368
Histogram
ARB imaging subset, 69–70
equalization, 224
point data visualization, 537
reduction implementation, 226
Hue saturation value, color representation, 36
Hyperstreamlines, tensor field visualization, 569–570
Hyperthreading, latency hiding, 148, 592
Hypotenuse, estimation, 613

I

Icons, vector field visualization, 561
Illustrations
cutaway views, See Cutaway views
edge lines, 507–508
nonphotorealistic lighting models
matte surfaces, 505–506
metallic surfaces, 506–507
perspective, 501
projections
axonometric projection, 502–503
oblique projection, 503–505
Image display, scalar field visualization, 540–541, 543
Image processing
convolution, See Convolution
depth of field modeling, 238–241
dynamic range
half-float representation, 241–242
shared exponent representation, 242
geometric operations
distortion correction, 237–238
pixel zoom, 235–236
rotation using texture mapping, 237
scaling using texture mapping, 236
human adaptation process modeling, 245
overview, 211–212
point operations
color adjustment, 213
color space conversion
YIQ, 222
interpolation and extrapolation, 213–214
luminance image conversion from color image, 216
rotating hue, 218–219
saturation manipulation, 216, 218
scale and bias, 215
thresholding, 215–216
reduction operations, 225–226
region-based operations
contrast stretching, 224
histogram equalization, 224
tone mapping
curve scaling, 244
local scaling, 244
luminance scaling, 243–244
operator, 243
Images
combining, See Compositing
dissolves, See Dissolves
off-screen processing, 72
positioning, 65
representation, digital, 57–60
storage, 212–213
tiling, 254–257
types in OpenGL, 63
Instancing, geometric, 364–365, 573
Inverse transforms, computation, 247–249
Isosurfaces, scalar field visualization, 545–546

K

Kernal, See Filtering
Keying, definition, 192

L

Laplacian filter, 232
Lighting
bidirectional reflectance distribution function, 46, 332
bump mapping, See Bump mapping
clamped dot product, 44
closed versus open surfaces, 44
diffuse versus specular reflection, 45
directional light, 47
equations, 610–612
global illumination
ambient occlusion, 357–359
radiosity combination technique, 356–357
virtual light technique, 355–356
half-angle vectors, 45
high dynamic range lighting, 354–355
infinite light, see directional light
light source properties, 47–49
local versus infinite viewer, 45–46
material properties, 46–47, 49–53
model components, 43
models
anisotropic lighting, 337–340
Blinn, 335
Cook-Torrance, 342–343
Fresnel reflection, 335–336
Gaussian reflection, 336
Oren-Nayer, 340
Phong, 43
nonphotorealistic lighting models for illustrations
matte surfaces, 505–506
metallic surfaces, 506–507
per-fragment computations, 334–335
positional light, 47
reflectance maps
emission maps, 334
gloss maps, 332–334
tangent space, 334–335, 346–347
texture mapping applications
fragment lighting, 321–322
light maps
three-dimensional texture light maps, 330–331
two-dimensional texture light maps, 327–330
normal maps, 352–353
specular lighting using environment maps
multitexture, 326–327
two-pass method, 325–326
spotlight effects using projective textures, 322–324
transform and lighting acceleration, 141–142
two-sided lighting, 44
vertex lighting
computation, 40–41
limitations, 317–318
local light and spotlight attenuation, 320–321
tessellation, 319–320
Light points, particle system modeling, 483–484
Light position, multipass rendering, 164–165
Line antialiasing, 178–180
Line integral convolution, vector field visualization, 564–568
Line renderings
antialiasing artifact prevention, 389–390
depth range, 384–385
end caps on wide lines, 390
haloed lines, 385–386
hidden lines, 382–384
polygon offset, 384
silhouette edges, 386–389
wireframe models, 381–382
Logical operation, fragment operations, 114–115
Luminance image, conversion from color image, 216

M

Matting, definition, 192
Maximum intensity projection, blending for volume visualization, 552
Metals
material classification for lighting, 49–50
program parameters by metal type, 51–52
Minmax operation, ARB imaging subset, 70
Mipmap images, 63, 89, 313–315
Modeling
definition, 3
representations, 17
transforms, 27–28
Modeling transforms
rotation, 309–310
scaling, 609
translation, 609
Modelview matrix
object space transformation, 20–21
orthonormal matrix, 24
inverse transpose, 24, 249
Mosaic, texture, See Texture mapping
Motion blur, temporal antialiasing, 183–184
Multipass rendering
deferred shading, 167
limitations, 155, 164–165
micropass comparison, 165–167
overview, 156–159
rasterization invariance, 105, 155–156
toolbox
arbitrary functions, 160–161
arithmetic operations, 159–160
conditionals, 161–162
parameters, 163–165
variables, 162–163
Multisampling, 175
multisample transparency, 207–208
multisample coverage, 207, 376
Multitexture
model, 96–97
multipass versus micropass environments, 166–167
overview, 95
texture environments, 97–98

N

Newton-Raphson method, 612–613
Noise
filtered noise functions, 487–489
three-dimensional noise generation, 498–500
Normal vectors, transformation, 23–25
Normalized device coordinate space, viewpoint transform, 22–23
NV_vertex_array_range, 576

O

Object space, transformation, 20–21
Oblique projection, 503–505
Occlusion culling
depth estimation buffer building, 372
occluder selection, 371
occlusion map building, 371
principles, 370–371
testing, 372–373
Off-screen rendering, See Window system
Opacity, definition, 199
OpenGL ES
Common profile and fixed-point arithmetic, 133–136
embedded profiles, 132–133
embedded systems, 132
revisions, 136
Safety Critical profile, 136
Oren-Nayer lighting model, 340
Outline fonts, 524–525
Over operator, blending for volume visualization, 552
Overlay window, See Window system

P

Paging, textures
hardware support, 286–287
image paging in system memory, 285–286
overview, 280–282
rationale, 279–280
texture subimage loading, 282–285
Painting
algorithms, 526–527
on images, 529–530
three-dimensional painting, 527–529
undo operations, 527
Particle systems
antialiasing small particles, 472
applications
clouds, 482–483
explosions, 482
fire, 481–482
light points, 483–484
precipitation, 478–480
smoke, 480
vapor trails, 481
interaction modeling, 473–475
limitations, 469
number of particles, 473
parameters, 468, 471, 476
representation
big particles, 469–471
small particles, 471–472
updating and rendering
software components, 475–476
sorting particles, 476–478
vertex programs, 478
Particle tracing, vector field visualization, 561–562
Patterning, implementation, 512–513
Pbuffers, off-screen rendering, 126
Penumbra, creation, 463
Performance, See Application performance
Perspective divide, clip space, 22
Perspective projection, 30–32
Phong lighting, 43
Phong shading, 42
Picking
alternative techniques, 367
mapping from window to object coordinates, 367
object tagging in color buffer, 365–366
OpenGL selection method, 364–365
proxy geometry, 366
Pipeline balance, optimization, 142
Pipeline evolution, OpenGL, 137–138, 149–151
Pipeline interleaving, performance optimization, 591–592
Pixel
center, 104, 517, 560
image representation, 57–58
Pixel storage
operations, 65–67
overview, 63–65
pack group, 66
unpack group, 66
Pixel transfer
bias operations, 67
mapping operations, 67–68
overview, 63–65
scale operations, 67
Pixmap images, 63, 521–522
Point antialiasing, 178–180
Point data
classification, 533
visualization
Andrews plots, 536–537
histograms and charts, 537
iconographic display, 535–536
scatter plots, 534–535
Polygon
antialiasing, 181–182
decaling, 390–392
representation, 3–4
Polygon normals, generation, 8
Polygon offset, line renderings, 384
Polygon stipling, screen-door transparency, 206
Precipitation, particle system modeling, 478–480
Primitive setup, acceleration, 14
Procedural texture
filtered noise functions for generation, 487–489
filtering using texture convolution, 490–495
noise function generation, 489–490
random image warping, 498
spectral synthesis, 495–496
three-dimensional noise generation, 498–500
turbulence modeling, 496–497
Projection matrices
alternative perspective projection, 608
orthogographic projection, 607
perspective projection, 607
perspective z-coordinate transformations, 608
Projection transform, 21–22, 30

R

Rasterization
accelerators
alpha, 139
blending, 140
depth test, 139–140
fog, 139
framebuffer operations, 140
scan conversion, 138–139
stencil test, 139–140
texture, 139
bitmaps, 107
consistency, 105, 155–156
edge antialiasing, 105
fragment operations, See Fragment operations
interpolation of texture, color, and depth, 108–109
parallel processing opportunities, 145–148
phases, 103–104
point sampling, 104
w buffering, 109
z-fighting, 105–107
Ray casting, cube maps, 549–440
Reconstruction, signal
aliasing, 60
images, 58
Red, green, and blue (RGB), color representation and OpenGL use, 35–36
Reflectance maps
emission maps, 334
gloss maps, 332–334
Reflection (Environmental maps)
curved reflectors
arbitrary reflectors, 412–415
environment mapping, 419
explosion maps, 415–419
implementation issues, 412
overview, 411–412
imperfect reflectors, 422–424
interreflections, 419–422
light, See Lighting
object-space versus image-space techniques, 404–405
planar reflections
clipping, 407–411
transformation matrix, 407
ray tracing, 404
virtual objects
clipping, 405–406
rendering issues, 406
Refraction
clipping of objects, 431–432
environment mapping, 429–430
equation, 424–426
modeling of multiple boundaries, 430–431
planar refraction, 426–427
Rendering
definition, 3
direct, 127
image-based rendering, 63
indirect, 127
line rendering, See Line renderings
multiple passes, See Multipass rendering
off-screen rendering, 124–126
text, See Text rendering
texture maps, 126–127
volume rendering
overview, 547–549
splatting, 556–559
texture slicing, 549–556

S

Sampling
definition, 58
Fourier analysis, 59
Nyquist limit, 60
rate, 58
undersampling, 59
Scalar field
data classification, 533
visualization
annotating metrics, 539–540
contour lines, 539
image display, 540–541, 543
isosurfaces, 545–546
line graphs, 538
splatting, 556–559
surface display, 543–545
texture slicing, 549–556
volume data creation, 559–560
volume rendering, 547–549
volume slicing, 546–547
Scatter plot, point data visualization, 534–535
Scene graphs
principles, 572–573
update stages
display, 575
generation, 573–574
rasterization, 575
transform, 575
traversal, 574
Scientific visualization
data characterization, 532–534
mapping numbers to pictures, 531
point data visualization
Andrews plots, 536–537
histograms and charts, 537
iconographic display, 535–536
scatter plots, 534–535
scalar field visualization
annotating metrics, 539–540
contour lines, 539
image display, 540–541, 543
isosurfaces, 545–546
line graphs, 538
splatting, 556–559
surface display, 543–545
texture slicing, 549–556
volume data creation, 559–560
volume rendering, 547–549
volume slicing, 546–547
tensor field visualization
hyperstreamlines, 569–570
overview, 568–569
vector field visualization
icons, 561
line integral convolution, 564–568
particle tracing, 561–562
stream lines and illumination, 563–564
visual clues and perception, 531–532
Screen-door transparency
limitations, 206–207
multisample transparency, 207–208
polygon stipling, 206
principles, 205–206
Self-occlusion, 44, 339, 343, 357, 461
Self-shadowing, See Self-occlusion
SGI_texture_color_table, 555
SGIS_pixel_texture, 161
SGIS_point_parameters, 594–595
SGIS_sharpen_texture, 313
SGIS_texture_filter4, 91
SGIS_texture_lod, 314
SGIX_clipmap, 286
Shading
deferred shading and multipass rendering, 167
definition, 40
facet normal computation, 8–9
models
constant shading, 41–42
Phong shading, 42
smooth shading, 42
texture shading, 42
polygon normals, generation, 8
rasterization, 41
smooth shading, 9–11
vertex lighting computation, 40–41
Shadows
projective shadows, 450–452
shadow mapping, 459–462
shadow volume technique
incremental updating of volumes, 457–458
light volumes, 457
limitations, 458
multiple light sources, 457
overview, 452–454
scene segmentation, 455–457
soft shadow creation
jittered lights, 463
penumbras, 463
receiver textures, 463–464
umbras, 463
Silhouette edge, 4, 386–389, 507
Singleton strip, avoidance, 13
Slicing, volume rendering
textures
blending operators, 551–552
mixing volumetric and geometric objects, 554
sampling frequency considerations, 552–553
shading volumes, 555–556
three-dimensional textures, 550
transfer functions, 555
two-dimensional textures, 551
virtualizing texture memory, 554
volume image shrinking, 554
volume-cutting planes, 555
warped volumes, 556
volumes, 546
Smoke, particle system modeling, 480
Smooth shading, 9–11
Sobel filter, 232–233
Specular lighting, See Lighting
Sphere map
ray casting, 441–442
texture mapping, 85–88
textures, 440–443
warping, 443
Splatting, volume rendering
artifacts, 557–558
principles, 556–557
shading, 559
slab width, 558
sRGB, color representation, 36
Stencil test
acceleration, 139–140
fragment operations, 111–112
Stereo viewing, geometry and transformations, 249–252
Stream lines
illumination, 563–564
vector field visualization, 563
Stroke fonts, 524
Subpixel
locations, 172-174
transparency, see Multisample transparency
points, 483
text positioning, 520
Supersampling
advantages, 171
definition, 171
drawbacks, 176–177
implementation
accumulation buffer, 173–175
overdrawing, 172–173
multisample antialiasing, 175–176
sample patterns, 171–172
stochastic supersampling, 171
Surface curvature
visualization, 379–380
Surface display, scalar field visualization, 543–545
Surface orientation
visualization, 377–379

T

Taylor series expansion, 612
Tangent space, See Lighting
Temporal antialiasing, 182–184
Tensor field
data classification, 533
visualization
hyperstreamlines, 569–570
overview, 568–569
Tessellation
definition, 4
icosahedron, 7–8
implementation, 5–8
octahedron, 6–7
sphere, 6
Texel, definition, 73
Text rendering
geometry-based text
geometric primitives, 523
outline fonts, 524–525
stroke fonts, 524
image-based text
bitmap primitives, 520
display list encodings, 520–521
kerning, 521
pixmap images, 521–523
texture images, 523
Texture coordinates, See also Procedural texture
color coding and contouring, 298–300
generation and transformation, 25, 27, 79, 262–263
geometric transformations, 262
map indexing, 25
overview, 74, 77–79
perspective correct interpolation, 78–79, 108–109, 297
transformation pipeline, 25–27
vertex to texture coordinate mapping, 263
Texture mapping
acceleration, 139
animation, 302–306
detail textures
creation, 311–312
magnification computation, 308–309
rationale, 306–308
signed intensity detail textures, 309–311
environment mapping
cube mapping, 83–85
dual-paraboloid environment mapping
mathematics, 291–294
OpenGL support, 296
using, 294–295
overview, 80–81
sphere mapping, 85–88
texture coordinate generation, 81–82
texture maps, 82–83
filtering, 90–91
level of detail, 91–93
lighting applications
bump mapping, 343–351
fragment lighting, 321–322
light maps
three-dimensional texture light maps, 330–331
two-dimensional texture light maps, 327–330
normal maps, 352–353
specular lighting using environment maps
multitexture, 326–327
two-pass method, 325–326
spotlight effects using projective textures, 322–324
limitations, 315–316
mipmap generation, 313–315
mosaicing, 274–276
multitexture
model, 96–97
overview, 95
texture environments, 97–98
paging
clip map, 286
hardware support, 286–287
image paging in system
memory, 285–286
overview, 280–282
rationale, 279–280
texture subimage loading, 282–285
prefiltering
rationale, 287–289
texel aspect ratio computation, 289–291
projected textures, 296–298
rationale, 73
refraction, 428–429
rendering to texture maps, 126–127
rotation, 237
scaling, 236
scene overlaying with texture map, 263–264
sharpening, 312–313
texture coordinate assignment optimization, 270–271
texture environment function
advanced functionality, 99–100
fragment programs, 100–102
overview, 98–99
texture image loading
compressed textures, 76
framebuffer images, 79–80, 270
internal texture formats, 75–76
overview, 73–74
proxy textures, 77
texture borders, 74–75, 151, 279, 281, 297
texture objects and targets, 93–95
three-dimensional textures
applications, 271, 274
filtering, 271, 273–274
indexing, 88–89
mipmapping, 89
solid material rendering, 89–90
tiling, 277–279
two-dimensional image warping, 300–302
Tiling
images, 254–257
textures, 277–279
Tone mapping
curve scaling, 244
local scaling, 244
luminance scaling, 243–244
operator, 243
Transfer function, 38, 553, 555
Transformation pipeline
clip space, 22
eye space, 21
modelview matrix, 20–21
normalized device coordinate space, 22
object space, 20
overview, 20
perspective divide, 22
projection transform, 22
texture coordinates, 25–27
viewpoint transform, 23
window space, 23
Transformation sequences
concatenation, 29
visualization, 28–29
Transparency
alpha-blended transparency
depth peeling, 205
dynamic objects, 202–203
ordering, 200–201
output color, 200–202
transparency mapping, 203
transparency sorting, 204–205
definition, 199
output color calculation, 199
screen-door transparency
limitations, 206–207
multisample transparency, 207–208
polygon stippling, 206
principles, 205–206
simulation, 199
sorting, 204–205
Triangle lists, 16
Triangle stripping
fan winding, 12
greedy tri-stripping, 13
meshes, 13
singleton strip avoidance, 13
strip winding, 12
Tuples, data representation, 19
Turbulence, procedural texture modeling, 496–497

U

Umbra, creation, 463
Under operator, blending for volume visualization, 552
Unsharp masking, 214, 312

V

Vapor trails, particle system modeling, 481
Vector field
data classification, 533
visualization
icons, 561
line integral convolution, 564–568
particle tracing, 561–562
stream lines and illumination, 563–564
Vectors
parallel, 610
perpendicular, 610
reflection vector, 610
three-dimensional
barycentric coordinates, 607
equations, 605
linear interpolation, 606
spherical coordinates, 606
Versions, OpenGL, 129–130
Vertex
arrays, 15
attribute specification, 14–15
buffer objects, 15–16
caching, 145
efficiency, 144–145
lighting computation, 40–41
programs, 32–33
triangle lists, 16
Vertex coordinates
interpolation of attributes to window space
component interpolation, 266–267
LOD computation, 278–268
transformation of vertex coordinates, 265–266
multipass rendering, 163–164
Vertex lighting, See Lighting
Vertex normals, 164
generating, 8
shading, See Shading
texture coordinate generation from, 81
transforming, 23–25
vertex arrays, 14
Viewing transforms, 608–609
Viewpoint mapping, 23, 266, 364, 367
Viewpoint transform, normalized device coordinate space, 22–23
Virtual light, global illumination, 355–356

W

Water, dynamic mesh modeling, 485–486
W buffering, rasterization, 109
wglBindTexImageARB, 126
wglCreateContext, 120
wglGetProcAddress, 603–604
wglMakeCurrent, 126
wglReleaseTexImageARB, 127
wglUseFontBitmaps, 520
wglUseFontOutlines, 525
WGL_ARB_make_current_read, 126
WGL_arb_pbuffer, 126
WGL_ARB_pixel_format, 126
Winding order, polygon, 11
Window space, definition, 23, 120
Window system
address space and threads, 121
multiple displays, 123
off-screen rendering, 124–126, 162–163, 212, 369, 527, 558
overlay windows, 122, 368
platform integration, 119–120
renderer and window state, 120–121
rendering
direct versus indirect, 127
texture maps, 126–127
underlay windows, 122
Wireframe models, line renderings, 381–382

Y

YCbCr, color representation, 36

Z

Z-fighting, rasterization, 105–107
..................Content has been hidden....................

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