Real-Time Shading

In this part, we introduce notation used throughout the rest of the book, and give a brief background on the shading models, tech niques and hardware that are the basis for the remainder of the book.
Procedural shading and real-time rendering have long been considered to be at opposite ends of the quality/interactivity spectrum. Exciting advances in the past several years have changed this completely. Now it is not only possible, but common, to see real-time procedural shading on even the most inexpensive of graphics accelerators.
In graphics, one often reads that a given algorithm is suitable for implementation on hardware. What that (usually) means is that the algorithm was designed to make use of the operations available on a graphics accelerator, not that the author was targeting a direct hardware implementation (again, usually). However, this is slightly misleading, since the graphics accelerator may have programmable (software-driven) components.
This book is, in large part, about shading algorithms suitable for implementation on hardware. The algorithms that we will discuss have been designed to (a) be as simple and efficient as possible, (b) avoid operations not available on graphics accelerators, and (c) provide high-quality visual results even in the face of the shortcomings of current accelerators.
Unfortunately (and fortunately), graphics accelerators are constantly evolving. The available operations and the limitations of today s accelerators may not be true of tomorrow s accelerators.