Recent innovations in computer hardware architecture—the arrival of multi-core CPUs, the generalization of
graphics processing units (GPUs), and the imminent increase in bandwidth available between CPU and GPU
cores—make a new era of interactive graphics possible. As a result of these changes, game consoles, PCs
and laptops will have the potential to provide unprecedented levels of visual richness, realism, and
immersiveness, making interactive graphics a compelling killer app for these modern computer systems.
However, current graphics programming models and APIs, which were conceived of and developed for the
previous generation of GPU-only rendering pipelines, severely hamper the type and quality of imagery that
can be produced on these systems. Fulfilling the promise of programmable graphics—the new era of
cooperatively using the CPU, GPU, and complex, dynamic data structures to efficiently synthesize images—
requires new programming models, tools, and rendering systems that are designed to take full advantage of
these new parallel heterogeneous architectures.