Foreword |
|
xxix | |
Preface |
|
xxxi | |
Contributors |
|
xxxv | |
|
PART I GEOMETRIC COMPLEXITY |
|
|
1 | (136) |
|
Toward Photorealism in Virtual Botany |
|
|
7 | (20) |
|
|
|
7 | (4) |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (6) |
|
Simulating Alpha Transparency via Dissolve |
|
|
13 | (2) |
|
|
15 | (1) |
|
|
15 | (2) |
|
|
17 | (1) |
|
|
17 | (1) |
|
The Tree and Shrub Layers |
|
|
18 | (2) |
|
|
20 | (2) |
|
|
22 | (2) |
|
|
23 | (1) |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
24 | (3) |
|
Terrain Rendering Using GPU-Based Geometry Clipmaps |
|
|
27 | (20) |
|
|
|
Review of Geometry Clipmaps |
|
|
27 | (3) |
|
Overview of GPU Implementation |
|
|
30 | (2) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
32 | (7) |
|
|
32 | (1) |
|
|
33 | (2) |
|
|
35 | (1) |
|
|
35 | (1) |
|
|
36 | (2) |
|
|
38 | (1) |
|
|
39 | (4) |
|
|
40 | (2) |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (1) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
44 | (1) |
|
Memory-Free Terrain Synthesis |
|
|
44 | (1) |
|
|
44 | (3) |
|
Inside Geometry Instancing |
|
|
47 | (22) |
|
|
|
48 | (1) |
|
|
49 | (4) |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
50 | (1) |
|
Render and Texture Context |
|
|
50 | (1) |
|
|
50 | (3) |
|
|
53 | (12) |
|
|
54 | (2) |
|
|
56 | (1) |
|
Vertex Constants Instancing |
|
|
57 | (4) |
|
Batching with the Geometry Instancing API |
|
|
61 | (4) |
|
|
65 | (2) |
|
|
67 | (2) |
|
|
69 | (6) |
|
|
|
69 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
Segment Buffering, Step 1 |
|
|
71 | (1) |
|
Segment Buffering, Step 2 |
|
|
71 | (1) |
|
Segment Buffering, Step 3 |
|
|
72 | (1) |
|
|
72 | (1) |
|
|
72 | (1) |
|
|
73 | (2) |
|
Optimizing Resource Management with Multistreaming |
|
|
75 | (16) |
|
|
|
|
76 | (1) |
|
|
77 | (12) |
|
Multistreaming with DirectX 9.0 |
|
|
78 | (3) |
|
|
81 | (2) |
|
|
83 | (6) |
|
|
89 | (1) |
|
|
90 | (1) |
|
Hardware Occlusion Queries Made Useful |
|
|
91 | (18) |
|
|
|
|
91 | (1) |
|
For Which Scenes Are Occlusion Queries Effective? |
|
|
92 | (1) |
|
What Is Occlusion Culling? |
|
|
93 | (1) |
|
Hierarchical Stop-and-Wait Method |
|
|
94 | (3) |
|
The Naive Algorithm, or Why Use Hierarchies at All? |
|
|
94 | (1) |
|
Hierarchies to the Rescue! |
|
|
95 | (1) |
|
|
95 | (1) |
|
|
96 | (1) |
|
Problem 2: Query Overhead |
|
|
97 | (1) |
|
Coherent Hierarchical Culling |
|
|
97 | (8) |
|
Idea 1: Being Smart and Guessing |
|
|
97 | (1) |
|
|
98 | (1) |
|
|
99 | (1) |
|
|
100 | (3) |
|
Why Are There Fewer Stalls? |
|
|
103 | (1) |
|
Why Are There Fewer Queries? |
|
|
104 | (1) |
|
How to Traverse the Hierarchy |
|
|
104 | (1) |
|
|
105 | (1) |
|
Querying with Actual Geometry |
|
|
105 | (1) |
|
|
105 | (1) |
|
|
105 | (1) |
|
Conservative Visibility Testing |
|
|
106 | (1) |
|
|
106 | (2) |
|
|
108 | (1) |
|
Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping |
|
|
109 | (14) |
|
|
|
109 | (10) |
|
|
110 | (1) |
|
Catmull-Clark Subdivisions |
|
|
110 | (1) |
|
Using Subdivision for Tessellation |
|
|
111 | (1) |
|
|
112 | (2) |
|
The GPU Tessellation Algorithm |
|
|
114 | (4) |
|
|
118 | (1) |
|
|
119 | (3) |
|
Changing the Flatness Test |
|
|
120 | (1) |
|
Shading Using Normal Mapping |
|
|
120 | (2) |
|
|
122 | (1) |
|
|
122 | (1) |
|
Per-Pixel Displacement Mapping with Distance Functions |
|
|
123 | (14) |
|
|
|
123 | (2) |
|
|
125 | (1) |
|
The Distance-Mapping Algorithm |
|
|
126 | (4) |
|
|
129 | (1) |
|
Computing the Distance Map |
|
|
130 | (1) |
|
|
130 | (2) |
|
|
130 | (1) |
|
|
130 | (2) |
|
|
132 | (1) |
|
|
132 | (2) |
|
|
134 | (1) |
|
|
135 | (2) |
|
PART II SHADING, LIGHTING, AND SHADOWS |
|
|
137 | (170) |
|
Deferred Shading in S.T.A.L.K.E.R. |
|
|
143 | (24) |
|
|
|
143 | (2) |
|
|
145 | (2) |
|
|
147 | (7) |
|
|
147 | (1) |
|
|
148 | (3) |
|
G-Buffer-Creation Optimizations |
|
|
151 | (2) |
|
|
153 | (1) |
|
|
154 | (4) |
|
The Power of ``Virtual Position'' |
|
|
155 | (1) |
|
|
156 | (1) |
|
Materials and Surface-Light Interaction |
|
|
157 | (1) |
|
|
158 | (4) |
|
|
161 | (1) |
|
Dealing with Transparency |
|
|
162 | (1) |
|
Things We Tried but Did Not Include in the Final Code |
|
|
162 | (2) |
|
|
163 | (1) |
|
Real-Time Global Illumination |
|
|
163 | (1) |
|
|
164 | (1) |
|
|
165 | (2) |
|
Real-Time Computation of Dynamic Irradiance Environment Maps |
|
|
167 | (10) |
|
|
Irradiance Environment Maps |
|
|
167 | (3) |
|
Spherical Harmonic Convolution |
|
|
170 | (2) |
|
|
172 | (3) |
|
Spatial to Frequency Domain |
|
|
172 | (1) |
|
Convolution and Back Again |
|
|
173 | (2) |
|
|
175 | (1) |
|
|
176 | (1) |
|
|
176 | (1) |
|
Approximate Bidirectional Texture Functions |
|
|
177 | (12) |
|
|
|
177 | (2) |
|
|
179 | (2) |
|
|
179 | (1) |
|
Assembling the Shading Map |
|
|
179 | (2) |
|
|
181 | (3) |
|
|
181 | (1) |
|
|
182 | (2) |
|
|
184 | (3) |
|
|
186 | (1) |
|
|
187 | (1) |
|
|
187 | (2) |
|
Tile-Based Texture Mapping |
|
|
189 | (12) |
|
|
|
191 | (1) |
|
Texture Tile Construction |
|
|
191 | (1) |
|
|
192 | (3) |
|
|
195 | (2) |
|
|
197 | (1) |
|
|
198 | (1) |
|
|
199 | (2) |
|
Implementing the mental images Phenomena Renderer on the GPU |
|
|
201 | (22) |
|
|
|
201 | (1) |
|
|
202 | (3) |
|
Implementing Phenomena Using Cg |
|
|
205 | (16) |
|
The Cg Vertex Program and the Varying Parameters |
|
|
205 | (2) |
|
The main ( ) Entry Point for Fragment Shaders |
|
|
207 | (1) |
|
The General Shader Interfaces |
|
|
207 | (1) |
|
Example of a Simple Shader |
|
|
208 | (3) |
|
|
211 | (1) |
|
|
211 | (4) |
|
|
215 | (1) |
|
|
216 | (1) |
|
Environment and Volume Shaders |
|
|
217 | (1) |
|
Shaders Returning Structures |
|
|
218 | (2) |
|
|
220 | (1) |
|
|
220 | (1) |
|
|
221 | (1) |
|
|
222 | (1) |
|
Dynamic Ambient Occlusion and Indirect Lighting |
|
|
223 | (12) |
|
|
|
223 | (2) |
|
|
225 | (6) |
|
The Multipass Shadowing Algorithm |
|
|
226 | (2) |
|
|
228 | (3) |
|
Indirect Lighting and Area Lights |
|
|
231 | (1) |
|
|
232 | (1) |
|
|
233 | (2) |
|
Blueprint Rendering and ``Sketchy Drawings'' |
|
|
235 | (18) |
|
|
|
|
236 | (2) |
|
Intermediate Rendering Results |
|
|
236 | (1) |
|
|
236 | (1) |
|
|
237 | (1) |
|
|
238 | (6) |
|
|
238 | (3) |
|
Extracting Visible and Nonvisible Edges |
|
|
241 | (1) |
|
|
241 | (1) |
|
|
242 | (2) |
|
Visualizing Architecture Using Blueprint Rendering |
|
|
244 | (1) |
|
|
244 | (7) |
|
|
245 | (1) |
|
|
245 | (2) |
|
|
247 | (1) |
|
Variations of Sketchy Drawing |
|
|
247 | (1) |
|
|
248 | (2) |
|
Reducing the Shower-Door Effect |
|
|
250 | (1) |
|
|
251 | (1) |
|
|
252 | (1) |
|
Accurate Atmospheric Scattering |
|
|
253 | (16) |
|
|
|
253 | (1) |
|
Solving the Scattering Equations |
|
|
254 | (4) |
|
Rayleigh Scattering vs. Mie Scattering |
|
|
255 | (1) |
|
|
256 | (1) |
|
The Out-Scattering Equation |
|
|
256 | (1) |
|
The In-Scattering Equation |
|
|
257 | (1) |
|
The Surface-Scattering Equation |
|
|
257 | (1) |
|
|
258 | (2) |
|
Squeezing It into a Shader |
|
|
260 | (2) |
|
Eliminating One Dimension |
|
|
260 | (1) |
|
Eliminating the Other Dimension |
|
|
261 | (1) |
|
Implementing the Scattering Shaders |
|
|
262 | (3) |
|
|
262 | (2) |
|
|
264 | (1) |
|
Adding High-Dynamic-Range Rendering |
|
|
265 | (1) |
|
|
266 | (1) |
|
|
267 | (2) |
|
Efficient Soft-Edged Shadows Using Pixel Shader Branching |
|
|
269 | (14) |
|
|
Current Shadowing Techniques |
|
|
270 | (1) |
|
Soft Shadows with a Single Shadow Map |
|
|
271 | (10) |
|
Blurring Hard-Edged Shadows |
|
|
271 | (3) |
|
|
274 | (3) |
|
|
277 | (4) |
|
|
281 | (1) |
|
|
282 | (1) |
|
Using Vertex Texture Displacement for Realistic Water Rendering |
|
|
283 | (12) |
|
|
|
283 | (1) |
|
|
284 | (10) |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
286 | (2) |
|
Quality Improvements and Optimizations |
|
|
288 | (4) |
|
Rendering Local Perturbations |
|
|
292 | (2) |
|
|
294 | (1) |
|
|
294 | (1) |
|
Generic Refraction Simulation |
|
|
295 | (12) |
|
|
|
296 | (1) |
|
|
297 | (3) |
|
|
300 | (5) |
|
|
300 | (3) |
|
|
303 | (2) |
|
|
305 | (1) |
|
|
305 | (2) |
|
PART III HIGH-QUALITY RENDERING |
|
|
307 | (144) |
|
Fast Third-Order Texture Filtering |
|
|
313 | (18) |
|
|
|
|
314 | (1) |
|
Fast Recursive Cubic Convolution |
|
|
315 | (5) |
|
|
320 | (4) |
|
Derivative Reconstruction |
|
|
324 | (3) |
|
|
327 | (1) |
|
|
328 | (3) |
|
High-Quality Antialiased Rasterization |
|
|
331 | (14) |
|
|
|
|
331 | (3) |
|
|
334 | (2) |
|
Comparison to Existing Hardware and Software |
|
|
334 | (2) |
|
|
336 | (1) |
|
|
336 | (1) |
|
|
337 | (1) |
|
Two-Pass Separable Filtering |
|
|
338 | (1) |
|
|
339 | (1) |
|
|
339 | (5) |
|
|
340 | (1) |
|
|
341 | (2) |
|
|
343 | (1) |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
345 | (16) |
|
|
|
|
345 | (2) |
|
|
347 | (2) |
|
|
347 | (2) |
|
|
349 | (2) |
|
|
351 | (4) |
|
|
352 | (1) |
|
|
353 | (2) |
|
|
355 | (1) |
|
|
355 | (1) |
|
Compositing Multiple Lines |
|
|
355 | (1) |
|
|
356 | (2) |
|
|
358 | (1) |
|
|
359 | (2) |
|
Hair Animation and Rendering in the Nalu Demo |
|
|
361 | (20) |
|
|
|
|
362 | (4) |
|
|
362 | (1) |
|
|
362 | (2) |
|
|
364 | (1) |
|
|
364 | (1) |
|
|
364 | (2) |
|
|
366 | (3) |
|
|
366 | (1) |
|
|
367 | (1) |
|
|
368 | (1) |
|
|
369 | (9) |
|
A Real-Time Reflectance Model for Hair |
|
|
369 | (6) |
|
Real-Time Volumetric Shadows in Hair |
|
|
375 | (3) |
|
Conclusion and Future Work |
|
|
378 | (2) |
|
|
380 | (1) |
|
Using Lookup Tables to Accelerate Color Transformations |
|
|
381 | (12) |
|
|
|
381 | (5) |
|
|
382 | (1) |
|
|
383 | (2) |
|
|
385 | (1) |
|
|
386 | (6) |
|
Strategy for Mapping LUTs to the GPU |
|
|
386 | (1) |
|
|
386 | (3) |
|
|
389 | (1) |
|
Extending 3D LUTs for Use with High-Dynamic-Range Imagery |
|
|
390 | (2) |
|
|
392 | (1) |
|
|
392 | (1) |
|
GPU Image Processing in Apple's Motion |
|
|
393 | (16) |
|
|
|
393 | (4) |
|
|
394 | (2) |
|
|
396 | (1) |
|
|
396 | (1) |
|
|
397 | (9) |
|
|
397 | (2) |
|
|
399 | (1) |
|
Loss of Vertex Components |
|
|
400 | (1) |
|
|
400 | (5) |
|
|
405 | (1) |
|
|
406 | (1) |
|
|
407 | (1) |
|
|
408 | (1) |
|
Implementing Improved Perlin Noise |
|
|
409 | (8) |
|
|
|
409 | (1) |
|
|
410 | (1) |
|
|
411 | (4) |
|
|
415 | (1) |
|
|
415 | (1) |
|
|
416 | (1) |
|
Advanced High-Quality Filtering |
|
|
417 | (20) |
|
|
Implementing Filters on GPUs |
|
|
417 | (5) |
|
|
418 | (1) |
|
|
419 | (3) |
|
The Problem of Digital Image Resampling |
|
|
422 | (8) |
|
|
423 | (1) |
|
|
423 | (4) |
|
|
427 | (3) |
|
Shock Filtering: A Method for Deblurring Images |
|
|
430 | (3) |
|
Filter Implementation Tips |
|
|
433 | (1) |
|
|
433 | (1) |
|
|
433 | (1) |
|
|
434 | (1) |
|
Adaptive Texture Filtering |
|
|
434 | (1) |
|
|
434 | (1) |
|
|
435 | (2) |
|
|
437 | (14) |
|
|
Which Mipmap Level Is Visible? |
|
|
438 | (1) |
|
|
439 | (8) |
|
|
439 | (3) |
|
Practical Considerations in an Engine |
|
|
442 | (3) |
|
|
445 | (2) |
|
|
447 | (1) |
|
|
448 | (1) |
|
|
449 | (2) |
|
PART IV GENERAL-PURPOSE COMPUTATION ON GPUS: A PRIMER |
|
|
451 | (140) |
|
Streaming Architectures and Technology Trends |
|
|
457 | (14) |
|
|
|
457 | (4) |
|
|
458 | (1) |
|
|
458 | (3) |
|
Keys to High-Performance Computing |
|
|
461 | (3) |
|
Methods for Efficient Computation |
|
|
462 | (1) |
|
Methods for Efficient Communication |
|
|
462 | (1) |
|
|
463 | (1) |
|
|
464 | (4) |
|
The Stream Programming Model |
|
|
464 | (2) |
|
Building a Stream Processor |
|
|
466 | (2) |
|
The Future and Challenges |
|
|
468 | (2) |
|
Challenge: Technology Trends |
|
|
468 | (1) |
|
Challenge: Power Management |
|
|
468 | (1) |
|
Challenge: Supporting More Programmability and Functionality |
|
|
469 | (1) |
|
Challenge: GPU Functionality Subsumed by CPU (or Vice Versa)? |
|
|
470 | (1) |
|
|
470 | (1) |
|
The GeForce 6 Series GPU Architecture |
|
|
471 | (22) |
|
|
|
How the GPU Fits into the Overall Computer System |
|
|
471 | (2) |
|
Overall System Architecture |
|
|
473 | (8) |
|
Functional Block Diagram for Graphics Operations |
|
|
473 | (5) |
|
Functional Block Diagram for Non-Graphics Operations |
|
|
478 | (3) |
|
|
481 | (7) |
|
|
481 | (2) |
|
Shader Model 3.0 Programming Model |
|
|
483 | (5) |
|
Supported Data Storage Formats |
|
|
488 | (1) |
|
|
488 | (2) |
|
Achieving Optimal Performance |
|
|
490 | (1) |
|
Use Z-Culling Aggressively |
|
|
490 | (1) |
|
Exploit Texture Math When Loading Data |
|
|
490 | (1) |
|
Use Branching in Fragment Programs Judiciously |
|
|
490 | (1) |
|
Use fp16 Intermediate Values Wherever Possible |
|
|
491 | (1) |
|
|
491 | (2) |
|
Mapping Computational Concepts to GPUs |
|
|
493 | (16) |
|
|
The Importance of Data Parallelism |
|
|
493 | (4) |
|
What Kinds of Computation Map Well to GPUs? |
|
|
494 | (1) |
|
Example: Simulation on a Grid |
|
|
495 | (1) |
|
Stream Communication: Gather vs. Scatter |
|
|
496 | (1) |
|
An Inventory of GPU Computational Resources |
|
|
497 | (3) |
|
Programmable Parallel Processors |
|
|
497 | (3) |
|
|
500 | (3) |
|
Streams: GPU Textures = CPU Arrays |
|
|
500 | (1) |
|
Kernels: GPU Fragment Programs = CPU ``Inner Loops'' |
|
|
500 | (1) |
|
Render-to-Texture = Feedback |
|
|
501 | (1) |
|
Geometry Rasterization = Computation Invocation |
|
|
501 | (1) |
|
Texture Coordinates = Computational Domain |
|
|
501 | (1) |
|
Vertex Coordinates = Computational Range |
|
|
502 | (1) |
|
|
502 | (1) |
|
From Analogies to Implementation |
|
|
503 | (2) |
|
Putting It All Together: A Basic GPGPU Framework |
|
|
503 | (2) |
|
|
505 | (3) |
|
|
508 | (1) |
|
|
508 | (1) |
|
Taking the Plunge into GPU Computing |
|
|
509 | (12) |
|
|
Choosing a Fast Algorithm |
|
|
509 | (4) |
|
Locality, Locality, Locality |
|
|
510 | (1) |
|
|
511 | (1) |
|
Considering Download and Readback |
|
|
512 | (1) |
|
Understanding Floating Point |
|
|
513 | (2) |
|
|
514 | (1) |
|
|
515 | (3) |
|
|
515 | (1) |
|
|
516 | (2) |
|
|
518 | (1) |
|
|
518 | (1) |
|
|
519 | (2) |
|
Implementing Efficient Parallel Data Structures on GPUs |
|
|
521 | (26) |
|
|
|
|
|
521 | (3) |
|
|
524 | (4) |
|
|
524 | (1) |
|
|
525 | (2) |
|
|
527 | (1) |
|
GPU-Based Data Structures |
|
|
528 | (12) |
|
|
528 | (6) |
|
|
534 | (1) |
|
|
535 | (5) |
|
Performance Considerations |
|
|
540 | (3) |
|
|
540 | (1) |
|
|
541 | (1) |
|
|
541 | (2) |
|
|
543 | (1) |
|
|
544 | (3) |
|
|
547 | (10) |
|
|
|
|
547 | (2) |
|
Basic Flow-Control Strategies |
|
|
549 | (5) |
|
|
549 | (1) |
|
Moving Branching up the Pipeline |
|
|
549 | (1) |
|
|
550 | (3) |
|
|
553 | (1) |
|
Choosing a Branching Mechanism |
|
|
553 | (1) |
|
Data-Dependent Looping with Occlusion Queries |
|
|
554 | (1) |
|
|
555 | (2) |
|
|
557 | (16) |
|
|
|
557 | (4) |
|
Instruction-Level Parallelism |
|
|
558 | (2) |
|
|
560 | (1) |
|
|
561 | (7) |
|
Precomputation of Loop Invariants |
|
|
563 | (1) |
|
Precomputation Using Lookup Tables |
|
|
564 | (2) |
|
Avoid Inner-Loop Branching |
|
|
566 | (1) |
|
|
566 | (2) |
|
Profiling and Load Balancing |
|
|
568 | (2) |
|
|
570 | (1) |
|
|
570 | (3) |
|
Stream Reduction Operations for GPGPU Applications |
|
|
573 | (18) |
|
|
Filtering Through Compaction |
|
|
574 | (5) |
|
|
574 | (1) |
|
Scatter Through Search/Gather |
|
|
575 | (4) |
|
|
579 | (1) |
|
Motivation: Collision Detection |
|
|
579 | (4) |
|
Filtering for Subdivision Surfaces |
|
|
583 | (4) |
|
Subdivision on Streaming Architectures |
|
|
584 | (3) |
|
|
587 | (1) |
|
|
587 | (4) |
|
PART V IMAGE-ORIENTED COMPUTING |
|
|
591 | (100) |
|
Octree Textures on the GPU |
|
|
595 | (20) |
|
|
|
|
A GPU-Accelerated Hierarchical Structure: The N3-Tree |
|
|
597 | (5) |
|
|
597 | (1) |
|
|
598 | (4) |
|
Application 1: Painting on Meshes |
|
|
602 | (9) |
|
|
603 | (1) |
|
|
604 | (1) |
|
|
604 | (3) |
|
Converting the Octree Texture to a Standard 2D Texture |
|
|
607 | (4) |
|
Application 2: Surface Simulation |
|
|
611 | (1) |
|
|
612 | (1) |
|
|
613 | (2) |
|
High-Quality Global Illumination Rendering Using Rasterization |
|
|
615 | (20) |
|
|
Global Illumination via Rasterization |
|
|
616 | (1) |
|
Overview of Final Gathering |
|
|
617 | (4) |
|
|
617 | (1) |
|
|
618 | (1) |
|
Problems with Two-Pass Methods |
|
|
619 | (2) |
|
Final Gathering via Rasterization |
|
|
621 | (4) |
|
Clustering of Final Gathering Rays |
|
|
621 | (2) |
|
Ray Casting as Multiple Parallel Projection |
|
|
623 | (2) |
|
|
625 | (2) |
|
|
625 | (1) |
|
|
626 | (1) |
|
|
627 | (1) |
|
|
627 | (1) |
|
A Global Illumination Renderer on the GPU |
|
|
627 | (5) |
|
|
628 | (1) |
|
Generating Visible Points Data |
|
|
628 | (1) |
|
|
629 | (1) |
|
|
629 | (3) |
|
|
632 | (1) |
|
|
632 | (3) |
|
Global Illumination Using Progressive Refinement Radiosity |
|
|
635 | (14) |
|
|
|
|
636 | (2) |
|
|
637 | (1) |
|
|
638 | (5) |
|
Visibility Using Hemispherical Projection |
|
|
639 | (2) |
|
|
641 | (2) |
|
Choosing the Next Shooter |
|
|
643 | (1) |
|
|
643 | (2) |
|
|
644 | (1) |
|
|
644 | (1) |
|
|
645 | (1) |
|
|
645 | (2) |
|
|
647 | (2) |
|
Computer Vision on the GPU |
|
|
649 | (18) |
|
|
|
649 | (1) |
|
|
650 | (1) |
|
|
651 | (13) |
|
Using Sequences of Fragment Programs for Computer Vision |
|
|
651 | (4) |
|
|
655 | (3) |
|
Systems of Equations for Creating Image Panoramas |
|
|
658 | (3) |
|
Feature Vector Computations |
|
|
661 | (3) |
|
Parallel Computer Vision Processing |
|
|
664 | (1) |
|
|
664 | (1) |
|
|
665 | (2) |
|
Deferred Filtering: Rendering from Difficult Data Formats |
|
|
667 | (10) |
|
|
|
|
|
667 | (1) |
|
|
668 | (1) |
|
Deferred Filtering Algorithm |
|
|
669 | (4) |
|
|
673 | (1) |
|
Conclusions: When to Defer |
|
|
673 | (1) |
|
|
674 | (3) |
|
Conservative Rasterization |
|
|
677 | (14) |
|
|
|
|
|
678 | (1) |
|
Two Conservative Algorithms |
|
|
679 | (7) |
|
|
681 | (1) |
|
|
681 | (2) |
|
|
683 | (3) |
|
|
686 | (1) |
|
|
687 | (2) |
|
|
689 | (1) |
|
|
690 | (1) |
|
PART VI SIMULATION AND NUMERICAL ALGORITHMS |
|
|
691 | (94) |
|
GPU Computing for Protein Structure Prediction |
|
|
695 | (8) |
|
|
|
695 | (2) |
|
The Floyd-Warshall Algorithm and Distance-Bound Smoothing |
|
|
697 | (1) |
|
|
698 | (3) |
|
|
698 | (1) |
|
|
698 | (1) |
|
|
699 | (1) |
|
|
699 | (2) |
|
|
701 | (1) |
|
Conclusions and Further Work |
|
|
701 | (1) |
|
|
702 | (1) |
|
A GPU Framework for Solving Systems of Linear Equations |
|
|
703 | (16) |
|
|
|
|
703 | (1) |
|
|
704 | (4) |
|
The ``Single Float'' Representation |
|
|
704 | (1) |
|
|
704 | (2) |
|
|
706 | (2) |
|
|
708 | (6) |
|
|
709 | (1) |
|
|
709 | (1) |
|
|
710 | (2) |
|
|
712 | (1) |
|
Conjugate Gradient Solver |
|
|
713 | (1) |
|
A Sample Partial Differential Equation |
|
|
714 | (4) |
|
The Crank-Nicholson Scheme |
|
|
716 | (2) |
|
|
718 | (1) |
|
|
718 | (1) |
|
Options Pricing on the GPU |
|
|
719 | (14) |
|
|
|
|
719 | (2) |
|
|
721 | (4) |
|
|
725 | (5) |
|
|
725 | (1) |
|
|
726 | (4) |
|
|
730 | (1) |
|
|
731 | (2) |
|
|
733 | (14) |
|
|
|
|
733 | (1) |
|
|
734 | (1) |
|
|
735 | (3) |
|
Implementing Odd-Even Merge Sort |
|
|
737 | (1) |
|
|
738 | (7) |
|
Implementing Bitonic Merge Sort |
|
|
743 | (2) |
|
|
745 | (1) |
|
|
746 | (1) |
|
Flow Simulation with Complex Boundaries |
|
|
747 | (18) |
|
|
|
|
|
|
747 | (1) |
|
The Lattice Boltzmann Method |
|
|
748 | (1) |
|
|
749 | (4) |
|
|
749 | (2) |
|
|
751 | (1) |
|
|
752 | (1) |
|
GPU-Based Boundary Handling |
|
|
753 | (6) |
|
|
754 | (2) |
|
|
756 | (1) |
|
|
756 | (1) |
|
|
757 | (2) |
|
|
759 | (1) |
|
|
760 | (1) |
|
|
761 | (2) |
|
|
763 | (2) |
|
Medical Image Reconstruction with the FFT |
|
|
765 | (20) |
|
|
|
|
765 | (1) |
|
|
766 | (1) |
|
|
767 | (1) |
|
Implementation on the GPU |
|
|
768 | (8) |
|
Approach 1: Mostly Loading the Fragment Processor |
|
|
770 | (2) |
|
Approach 2: Loading the Vertex Processor, the Rasterizer, and the Fragment Processor |
|
|
772 | (3) |
|
|
775 | (1) |
|
|
775 | (1) |
|
The FFT in Medical Imaging |
|
|
776 | (7) |
|
Magnetic Resonance Imaging |
|
|
776 | (2) |
|
|
778 | (2) |
|
|
780 | (3) |
|
|
783 | (1) |
|
|
784 | (1) |
Index |
|
785 | |