The chapters are arranged to suit the needs of the reader who is least familiar with OpenGL and shading languages. Certain chapters can be skipped by readers who are more familiar with both topics. This book has somewhat compartmentalized chapters in order to allow such usage.
Chapter 1 reviews the fundamentals of the OpenGL API. Readers already familiar with OpenGL may skip to Chapter 2.
Chapter 2 introduces the OpenGL Shading Language and the OpenGL entry points that have been added to support it. If you want to know what the OpenGL Shading Language is all about and you have time to read only two chapters of this book, this chapter and Chapter 3 are the ones to read.
Chapter 3 thoroughly describes the OpenGL Shading Language. This material is organized to present the details of a programming language. This section serves as a useful reference section for readers who have developed a general understanding of the language.
Chapter 4 discusses how the newly defined programmable parts of the rendering pipeline interact with each other and with OpenGL's fixed functionality. This discussion includes descriptions of the built-in variables defined in the OpenGL Shading Language.
Chapter 5 describes the built-in functions that are part of the OpenGL Shading Language. This section is a useful reference section for readers with an understanding of the language.
Chapter 6 presents and discusses a fairly simple shader example. People who learn best by diving in and studying a real example will benefit from the discussion in this chapter.
Chapter 7 describes the entry points that have been added to OpenGL to support the creation and manipulation of shaders. Application programmers who want to use shaders in their application must understand this material.
Chapter 8 presents some general advice on shader development and describes the shader development process. It also describes tools that are currently available to aid the shader development process.
Chapter 9 begins a series of chapters that present and discuss shaders with a common characteristic. In this chapter, shaders that duplicate some of the fixed functionality of the OpenGL pipeline are presented.
Chapter 10 presents a few shaders that are based on the capability to store data in and retrieve data from texture maps.
Chapter 11 is devoted to shaders that are procedural in nature; that is, effects are computed algorithmically rather than being based on information stored in textures.
Chapter 12 presents several alternative lighting models that can be implemented with OpenGL shaders.
Chapter 13 discusses algorithms and shaders for producing shadows.
Chapter 14 delves into the details of shaders that implement more realistic surface characteristics, including refraction, diffraction, and more realistic reflection.
Chapter 15 describes noise and the effects that can be achieved with its proper use.
Chapter 16 contains examples of how shaders can create rendering effects that vary over time.
Chapter 17 contains a discussion of the aliasing problem and how shaders can be written to reduce the effects of aliasing.
Chapter 18 illustrates shaders that achieve effects other than photorealism. Such effects include technical illustration, sketching or hatching effects, and other stylized rendering.
Chapter 19 presents several shaders that modify images as they are being drawn with OpenGL.
Chapter 20 describes some of the techniques and algorithms used in a complex OpenGL application that makes extensive use of the OpenGL Shading Language.
Chapter 21 compares the OpenGL Shading Language with other notable commercial shading languages.
Appendix A contains the language grammar that more clearly specifies the OpenGL Shading Language.
Appendix B contains reference pages for the API entry points that are related to the OpenGL Shading Language.
Finally, Glossary collects terms defined in the book, Further Reading gathers all the chapter references and adds more, and Index ends the book.