OpenGL (R) Shading Language Paperback – 12 Feb 2004
Customers who viewed this item also viewed
What other items do customers buy after viewing this item?
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Would you like to tell us about a lower price?
If you are a seller for this product, would you like to suggest updates through seller support?
From the Back Cover
Praise for OpenGL® Shading Language
“OpenGL® Shading Language provides a timely, thorough, and entertaining introduction to the only OpenGL ARB-approved high-level shading language in existence. Whether an expert or a novice, there are gems to be discovered throughout the book, and the reference pages will be your constant companion as you dig into the depths of the shading APIs. From algorithms to APIs, this book has you covered.”―Bob Kuehne
CEO, Blue Newt Software
“Computer graphics and rendering technologies just took a giant leap forward with hardware vendors rapidly adopting the new OpenGL Shading Language. This book presents a detailed treatment of these exciting technologies in a way that is extremely helpful for visualization and game developers.”―Andy McGovern
Founder, Virtual Geographics, Inc.
“The OpenGL Shading Language is at the epicenter of the programmable graphics revolution, and Randi Rost has been at the center of the development of this significant new industry standard. If you need the inside track on how to use the OpenGL Shading Language to unleash new visual effects, and unlock the supercomputer hiding inside the new generation of graphics hardware, then this is the book for you.”―Neil Trevett
Senior Vice President Market Development, 3Dlabs
"The author has done an excellent job at setting the stage for shader development, what the purpose is, how to do it, and how it all fits together."
Strategic Software Program Manager, Intel Corporation
The OpenGL® Shading Language, a high-level procedural shading language for OpenGL®, is the most important new development in graphics programming to emerge in years. OpenGL is the leading cross-platform 3D-graphics API, and the OpenGL Shading Language allows developers to take total control over the most important stages of the graphics-processing pipeline.
OpenGL® Shading Language is the experienced application programmer's guide to writing shaders. Part reference, part tutorial, this book thoroughly explains the shift from fixed-functionality graphics hardware to the new era of programmable graphics hardware and the additions to the OpenGL API that support this programmability. With OpenGL and shaders written in the OpenGL Shading Language, applications can perform better, achieving stunning graphics effects by utilizing the capabilities of both the visual processing unit and the central processing unit.
In this book, you will find a detailed introduction to the OpenGL Shading Language and the new OpenGL function calls that support it. The text begins by describing the syntax and semantics of this high-level programming language. Once this foundation has been established, the book explores the creation and manipulation of shaders using new OpenGL function calls.
OpenGL® Shading Language features extensive examples of shaders and their underlying algorithms, including
- Procedural texturing
- Particle systems
- Analytic antialiasing
- Image processing
The color plate section illustrates the power and sophistication of the OpenGL Shading Language. The API Function Reference at the end of the book is an excellent quick reference to the API entry points that support the OpenGL Shading Language. An enhanced online index allows readers to quickly and easily search the entire text for specific topics.
About the Author
Randi Rost is an ISV Manager in the Software and Solutions Group at Intel. Randy serves on the OpenGL ARB, led the 3Dlabs team responsible for defining and implementing OpenGL 2.0, and is one of the first programmers to design and implement shaders using the OpenGL Shading Language.
Top customer reviews
I got slightly frustrated that it took several chapters to get into the meat of the book: before the authors got to creating useful shaders. But with hindsight, the basic material is very useful. There are gotcha's in the shading language, and the authors do a good job of making the path as plain as possible.
Even though fewer and fewer projects I work on (I work in the games industry) use OpenGL, the shading language is probably the most important addition to the OpenGL API for years. It is a standard, and the book was designed to document that standard. Most of the last section of the book is an in depth reference which is useful to have.
I found some chapters absolutely superb. But a lot of the book's material was wasted on me. The stuff on procedural shading is much better covered in other books. Generating a mandlebrot shader, for example, is hardly useful in a real project, in my opinion.
So I'd recommend the book to anyone who needs to understand GLSL. The bit that's useful is very useful, and I felt it was completely worth the cover price. The rest of the book, as my wife said, is a bit of a waste of trees.
Most helpful customer reviews on Amazon.com
Sorry my bad english. best of the best
Recently, programmable graphics hardware capable of rendering such algorithms in realtime has become inexpensive and widely available. The result-a small handful of proprietary shading languages created and proposed as standards for this new industry.
OpenGL Shading Language by Randi Rost (Addison-Wesley, 458 pages) describes the OpenGL Shading Language, the first shading language designed as a cross-platform open standard by a group of graphics hardware and software vendors.
The author is a veteran of the computer graphics industry. Rost started programming graphics on an Apple II in the late 1970s. He was working on programmable graphics hardware as early as 1983, when programmable graphics hardware meant little more than a framebuffer with a microcode interface.
Graphics hardware has advanced dramatically since then and continues to advance rapidly today. Most modern 3D hardware supports some type of programmable interface, and should support the Architectural Review Board (ARB)-approved OpenGL Shading Language in the near future. "We think the hardware designs are moving quite rapidly," said Rost. "It should only be a generation or two before all OpenGL hardware vendors fully support the OpenGL Shading Language."
The first chapter is a whirlwind overview of OpenGL. You might be tempted to skip this chapter. But before you do, consider that the author is one of only a few who have contributed to every major revision of OpenGL-who better to learn from? If you're a beginner or intermediate OpenGL programmer, you'll certainly learn something in this brief review.
Chapters 2 through 7 introduce the reader to the OpenGL Shading Language, covering topics such as language semantics, built-in functions, and OpenGL entry points for specifying shaders.
Chapter 8 discusses shader development and performance issues. As you might expect from a book on a shading language, much of the performance discussion concerns shaving cycles from vertex- and pixel-shaders. The information is practical and not obvious even to intermediate programmers, such as using min() or max() instead of clamp() when you know the variable will only exceed one end of a range. However, I found little discussion on how a developer might determine which stage of the rendering pipeline is the performance bottleneck. Since this subject is considered black magic by many young and enthusiastic graphics developers, Rost could have added value to his book with a short section on this subject.
In programming, a few lines of code are worth a thousand words. Rost demonstrates this principle in chapter 9 where he provides shader listings for implementing core OpenGL functionality. The OpenGL Specification is the ultimate definition of OpenGL internal functionality, but the spec is mostly text and formulas, with only a few code listings. A programmer can quickly learn what OpenGL is doing under the hood by reading through the listings in chapter 9. These well-written, concise, and efficient examples of shader code are both illuminating and instructive.
Chapters 10 through 16 provide the computer graphics developer with real-time working OpenGL Shading Language source code for implementing several major computer graphics algorithms and techniques from the past 25 years. Topic areas include lighting, Phong shading, texture mapping, bump mapping, multi-texturing, procedural texture mapping, lattice shaders, noise, turbulence, shadows, animation, particle systems, antialiasing, hatching and other non-photorealistic techniques, vertex and image blending, image convolution, and many more.
These examples demonstrate the range of OpenGL Shading Language applications, and give developers a basis for writing new shaders. Rost's explanations of the algorithms are easy to read and comprehend, and demonstrate the depth and breadth of knowledge he has accumulated during his 25-year career in graphics.
"Designing and implementing programmable graphics hardware and a compiler for the OpenGL Shading Language required a lot of hard work by everyone involved," said Rost. "But with those pieces in place, it turned out to be remarkably easy to write shaders for a variety of interesting shading tasks. When we got these shaders working for the first time, it was a jaw-dropping experience."
Conspicuously missing is any mention of global illumination algorithms such as ray tracing and radiosity. Such scene-based algorithms present obvious challenges to vertex- and pixel-based shading languages. Rost confessed they have a rough ray-tracing demo that was not ready for publication when this book went to press. He expressed optimism about the OpenGL Shading Language's ability to accelerate programs of this type. "In future revisions of hardware, we'll be able to implement more interesting algorithms [than currently appear in this book]."
While reading OpenGL Shading Language, I often found myself noting similarities and differences between the OpenGL Shading Language and interfaces to other programmable graphics hardware I've used. The book's final chapter covers this topic by comparing and contrasting the OpenGL Shading Language to current commercial shading languages, such as RenderMan, ISL, HLSL, and Cg.
Two appendices serve as useful reference material. Appendix A covers OpenGL Shading Language grammar, and Appendix B documents OpenGL entry points for creating and managing shaders. The book also contains an index, a glossary, an extensive bibliography, and several diagrams and color images.
In general, the computer industry often provides two solutions, one proprietary and the other an open standard. As the only open standard shading language available that is designed for modern graphics hardware, the OpenGL Shading Language is certain to be around for several years to come. OpenGL Shading Language stands on its own as both a programming guide and reference manual for this significant new industry standard.
However, this book goes further by providing real-time examples of classic computer graphics techniques. OpenGL Shading Language is a must-have algorithm book that should be on every computer graphics developer's bookshelf.
The book begins with a review of OpenGL basics, followed by an introduction to shaders and how they fit into the pipeline. It then covers the language itself, including data types, operators, interaction with the OpenGL state machine and fixed function pipeline, built-in functions, and more. It also introduces and explains the OpenGL APIs needed to use shaders.
The last half of the book focuses on shader development, including general process and workflow, and coverage of many specific techniques, such as procedural textures and GPU-based animation. It even includes a section on implementing the fixed function pipeline using shaders.
The book ends with a handy comparison of GLSL with other shading languages, such as Cg and HLSL, and a couple of appendices providing a language grammar and API reference.
If you're doing shader development with OpenGL, you'll definitely want this book on your desk. My only complaint about it is that it was written before GLSL was officially promoted to the core. When that happened, a number of important things were changed that aren't reflected in the book. However, determining the differences isn't difficult, so don't let that deter you from picking this up.
The language and structure of the book is clear, easy to follow and precise (especially compared to the Direct3D SDK documentation). Very useful is the appendix containing a shading language and API reference. Whoever works on realtime computer graphics should have this book in his shelf.
One minor warning for beginners: The book assumes that you are familar with OpenGL itself. The book does not replace an introduction into OpenGL.
The first two chapters stand out as a nice introduction to the topic and to the shading language in particular. After that the book is an on-and-off introduction and reference that will bring you up to speed today and act as a reference later on.
If I have one complaint it's that the reference materials, particularly in Appendix B could have been formatted and cross referenced a little better. As it stands they feel more like slightly reformatted UNIX man pages.
For those that need this book, and you know who you are, this an invaluable reference, and it's well written to boot.
Look for similar items by category
- Books > Computing & Internet > PC & Video Games
- Books > Computing & Internet > Programming > Games
- Books > Computing & Internet > Programming > Graphics & Multimedia
- Books > Computing & Internet > Programming > Languages & Tools
- Books > Computing & Internet > Software & Graphics > Graphics & Multimedia > 3-D Graphics
- Books > Computing & Internet > Software & Graphics > Graphics & Multimedia > Image Manipulation & Creation