Synopses & Reviews
OpenGL is a powerful software library that uses programmable shaders, texture maps, and advanced geometric techniques to manipulate and color 2D and 3D objects to produce high-quality, computer-generated images and compelling interactive applications.
The OpenGL Programming Guide, Eighth Edition, provides a comprehensive overview of the OpenGL application programming interface (API) and its associated language for programmable shaders, the OpenGL Shading Language (GLSL). This edition, completely rewritten to explain the most recent techniques in OpenGL programming, combines the API coverage of previous editions of the best-selling "red book", and the programmable shading elements of the "orange book" into a single updated reference.
In this edition, you'll find simple explanations of the OpenGL shading pipeline, guiding the beginner programmer through creating their first OpenGL applications by writing and compiling shaders; specifying and rendering 3D objects; interactively viewing objects from different perspective vantage points; employing lighting, texture maps, and other shading techniques to create compelling visual effects. For the more experienced OpenGL programmer, this book explores all of the shading capabilities available in GLSL and OpenGL's shading stages, including geometry and tessellation shaders, demonstrating common advanced techniques.
This eighth edition contains over 75% new material describing the latest features of OpenGL through just released Version 4.3, including:
• initializing all of the geometry-processing shader stages: vertex, geometry, and tessellation shaders; and a through discussion of shading using fragment shaders
• a through coverage of the OpenGL shading language and its features
• advanced discussions of rendering techniques including instanced rendering, and transform feedback
• intense rendering techniques that include bump mapping for visual effects, and vertex texture mapping for displacement mapping
The OpenGL Technical Library, which includes The OpenGL Programming Guide, Eighth Edition, provides tutorial and reference books for OpenGL. The Library enables programmers to gain a practical understanding of OpenGL, and helps them unlock its full potential. The OpenGL Technical Library, like OpenGL itself, continues to evolve under the influences of the OpenGL ARB Working Group, which is part of the industry consortium Khronos Group.
Review
“Wow! This book is basically one-stop shopping for OpenGL information. It is the kind of book that I will be reaching for a lot. Thanks to Dave, Graham, John, and Bill for an amazing effort.”
—Mike Bailey, professor, Oregon State University
“The most recent Red Book parallels the grand tradition of OpenGL; continuous evolution towards ever-greater power and efficiency. The eighth edition contains up-to-the minute information about the latest standard and new features, along with a solid grounding in modern OpenGL techniques that will work anywhere. The Red Book continues to be an essential reference for all new employees at my simulation company. What else can be said about this essential guide? I laughed, I cried, it was much better than Cats—I’ll read it again and again.”
—Bob Kuehne, president, Blue Newt Software
“OpenGL has undergone enormous changes since its inception twenty years ago. This new edition is your practical guide to using the OpenGL of today. Modern OpenGL is centered on the use of shaders, and this edition of the Programming Guide jumps right in, with shaders covered in depth in Chapter 2. It continues in later chapters with even more specifics on everything from texturing to compute shaders. No matter how well you know it or how long you’ve been doing it, if you are going to write an OpenGL program, you want to have a copy of the OpenGL® Programming Guide handy.”
—Marc Olano, associate professor, UMBC
“If you are looking for the definitive guide to programming with the very latest version of OpenGL, look no further. The authors of this book have been deeply involved in the creation of OpenGL 4.3, and everything you need to know about the cutting edge of this industry-leading API is laid out here in a clear, logical, and insightful manner.”
—Neil Trevett, president, Khronos Group
Synopsis
OpenGL is a powerful software library that uses programmable shaders, texture maps, and advanced geometric techniques to manipulate and color 2D and 3D objects to produce high-quality, computer-generated images and compelling interactive applications.
The OpenGL Programming Guide, Eighth Edition, provides a comprehensive overview of the OpenGL application programming interface (API) and its associated language for programmable shaders, the OpenGL Shading Language (GLSL). This new 8th edition, completely rewritten to explain the most recent techniques in OpenGL programming, combines the API coverage of previous editions of the best-selling "red book", and the programmable shading elements of the "orange book" into a single updated reference.
In the 8th edition, you'll find simple explanations of the OpenGL shading pipeline, guiding the beginner programmer through creating their OpenGL application by writing and compiling shaders; specifying and rendering 3D objects; interactively viewing objects from different perspective vantage points; employing lighting, texture maps, and other shading techniques to create compelling visual effects. In addition, this book also explores all of the shading capabilities available in GLSL and OpenGL's shading stages, including geometry and tessellation shaders.
This 8th edition contains over 85% new material describing the latest features of OpenGL through Version 4.2, including:
- initializing all of the geometry-processing shader stages: vertex, geometry, and tessellation shaders; and a through discussion of shading using fragment shaders
- a thorough coverage of the OpenGL shading language and its features
- advanced discussions of rendering techniques including instanced rendering, and transform feedback
- intense rendering techniques that include bump mapping for visual effects, and vertex texture mapping for displacement mapping
The OpenGL Technical Library, which includes The OpenGL Programming Guide, Eighth Edition, provides tutorial and reference books for OpenGL. The Library enables programmers to gain a practical understanding of OpenGL, and helps them unlock its full potential. The OpenGL Technical Library, like OpenGL itself, continues to evolve under the influences of the OpenGL ARB Working Group, which is part of the industry consortium Khronos Group.
Synopsis
Includes Complete Coverage of the OpenGL® Shading Language!
Today’s OpenGL software interface enables programmers to produce extraordinarily high-quality computer-generated images and interactive applications using 2D and 3D objects, color images, and programmable shaders.
OpenGL® Programming Guide: The Official Guide to Learning OpenGL®, Version 4.3, Eighth Edition, has been almost completely rewritten and provides definitive, comprehensive information on OpenGL and the OpenGL Shading Language. This edition of the best-selling “Red Book” describes the features through OpenGL version 4.3. It also includes updated information and techniques formerly covered in OpenGL® Shading Language (the “Orange Book”).
For the first time, this guide completely integrates shader techniques, alongside classic, functioncentric techniques. Extensive new text and code are presented, demonstrating the latest in OpenGL programming techniques.
OpenGL® Programming Guide, Eighth Edition, provides clear explanations of OpenGL functionality and techniques, including processing geometric objects with vertex, tessellation, and geometry shaders using geometric transformations and viewing matrices; working with pixels and texture maps through fragment shaders; and advanced data techniques using framebuffer objects and compute shaders.
New OpenGL features covered in this edition include
- Best practices and sample code for taking full advantage of shaders and the entire shading pipeline (including geometry and tessellation shaders)
- Integration of general computation into the rendering pipeline via compute shaders
- Techniques for binding multiple shader programs at once during application execution
- Latest GLSL features for doing advanced shading techniques
- Additional new techniques for optimizing graphics program performance
Synopsis
Includes Complete Coverage of the OpenGL® Shading Language!
Today’s OpenGL software interface enables programmers to produce extraordinarily high-quality computer-generated images and interactive applications using 2D and 3D objects, color images, and programmable shaders.
OpenGL® Programming Guide: The Official Guide to Learning OpenGL®, Version 4.3, Eighth Edition, has been almost completely rewritten and provides definitive, comprehensive information on OpenGL and the OpenGL Shading Language. This edition of the best-selling “Red Book” describes the features through OpenGL version 4.3. It also includes updated information and techniques formerly covered in OpenGL® Shading Language (the “Orange Book”).
For the first time, this guide completely integrates shader techniques, alongside classic, functioncentric techniques. Extensive new text and code are presented, demonstrating the latest in OpenGL programming techniques.
OpenGL® Programming Guide, Eighth Edition, provides clear explanations of OpenGL functionality and techniques, including processing geometric objects with vertex, tessellation, and geometry shaders using geometric transformations and viewing matrices; working with pixels and texture maps through fragment shaders; and advanced data techniques using framebuffer objects and compute shaders.
New OpenGL features covered in this edition include
- Best practices and sample code for taking full advantage of shaders and the entire shading pipeline (including geometry and tessellation shaders)
- Integration of general computation into the rendering pipeline via compute shaders
- Techniques for binding multiple shader programs at once during application execution
- Latest GLSL features for doing advanced shading techniques
- Additional new techniques for optimizing graphics program performance
About the Author
Dave Shreiner, Director of Graphics and GPU Computing at ARM, Inc., has been active in OpenGL development nearly since its inception. He created the first commercial OpenGL training course and has taught OpenGL programming for twenty years.
Graham Sellers, coauthor of OpenGL® SuperBible, manages OpenGL Software Development at AMD. He authored many OpenGL feature specifications and helped bring OpenGL ES to desktop computers.
John Kessenich, OpenGL Shading Language Specification Editor, consults at LunarG, Inc., building compiler technology for GLSL. He helped develop OpenGL 2.0 and OpenGL ES 2.0 at 3Dlabs and Intel.
Bill Licea-Kane is Principal Member of Technical Staff at AMD, coauthor of OpenGL® Shading Language Guide, and chairs the OpenGL Shading Language technical subgroup.
Table of Contents
Figures xxiii
Tables xxix
Examples xxxiii
About This Guide xli
Chapter 1: Introduction to OpenGL 1
What Is OpenGL? 2
Your First Look at an OpenGL Program 3
OpenGL Syntax 8
OpenGL’s Rendering Pipeline 10
Our First Program: A Detailed Discussion 14
Chapter 2: Shader Fundamentals 33
Shaders and OpenGL 34
OpenGL’s Programmable Pipeline 35
An Overview of the OpenGL Shading Language 37
Interface Blocks 60
Compiling Shaders 70
Shader Subroutines 76
Separate Shader Objects 81
Chapter 3: Drawing with OpenGL 85
OpenGL Graphics Primitives 86
Data in OpenGL Buffers 92
Vertex Specification 108
OpenGL Drawing Commands 115
Instanced Rendering 128
Chapter 4: Color, Pixels, and Framebuffers 141
Basic Color Theory 142
Buffers and Their Uses 144
Color and OpenGL 148
Multisampling 153
Testing and Operating on Fragments 156
Per-Primitive Antialiasing 178
Framebuffer Objects 180
Writing to Multiple Renderbuffers Simultaneously 193
Reading and Copying Pixel Data 200
Copying Pixel Rectangles 203
Chapter 5: Viewing Transformations, Clipping, and Feedback 205
Viewing 206
User Transformations 212
OpenGL Transformations 236
Transform Feedback 239
Chapter 6: Textures 259
Texture Mapping 261
Basic Texture Types 262
Creating and Initializing Textures 263
Proxy Textures 276
Specifying Texture Data 277
Sampler Objects 292
Using Textures 295
Complex Texture Types 306
Texture Views 321
Compressed Textures 326
Filtering 329
Advanced Texture Lookup Functions 340
Point Sprites 346
Rendering to Texture Maps 351
Chapter Summary 356
Chapter 7: Light and Shadow 359
Lighting Introduction 360
Classic Lighting Model 361
Advanced Lighting Models 384
Shadow Mapping 400
Chapter 8: Procedural Texturing 411
Procedural Texturing 412
Bump Mapping 433
Antialiasing Procedural Textures 442
Noise 460
Further Information 483
Chapter 9: Tessellation Shaders 485
Tessellation Shaders 486
Tessellation Patches 487
Tessellation Control Shaders 488
Tessellation Evaluation Shaders 496
A Tessellation Example: The Teapot 500
Additional Tessellation Techniques 504
Chapter 10: Geometry Shaders 509
Creating a Geometry Shader 510
Geometry Shader Inputs and Outputs 514
Producing Primitives 525
Advanced Transform Feedback 532
Geometry Shader Instancing 549
Multiple Viewports and Layered Rendering 550
Chapter Summary 559
Chapter 11: Memory 563
Using Textures for Generic Data Storage 564
Shader Storage Buffer Objects 576
Atomic Operations and Synchronization 578
Example 609
Chapter 12: Compute Shaders 623
Overview 624
Workgroups and Dispatch 625
Communication and Synchronization 632
Examples 636
Chapter Summary 647
Appendix A: Basics of GLUT: The OpenGL Utility Toolkit 651
Initializing and Creating a Window 652
Accessing Functions 654
Handling Window and Input Events 655
Managing a Background Process 658
Running the Program 658
Appendix B: OpenGL ES and WebGL 659
OpenGL ES 660
WebGL 662
Appendix C: Built-in GLSL Variables and Functions 673
Built-in Variables 674
Built-in Constants 684
Built-in Functions 686
Appendix D: State Variables 737
The Query Commands 738
OpenGL State Variables 745
Appendix E: Homogeneous Coordinates and Transformation Matrices 829
Homogeneous Coordinates 830
Transformation Matrices 831
Appendix F: OpenGL and Window Systems 835
Accessing New OpenGL Functions 836
GLX: OpenGL Extension for the X Window System 838
WGL: OpenGL Extensions for Microsoft Windows 845
OpenGL in MacOSX: The Core OpenGL (CGL) API and the NSOpenGL Mac OS X’s Core OpenGL Library . 851
The NSOpenGL Classes 854
Appendix G: Floating-Point Formats for Textures, Framebuffers, and Renderbuffers 857
Reduced-Precision Floating-Point Values 858
16-bit Floating-Point Values 858
10- and 11-bit Unsigned Floating-Point Values 860
Appendix H: Debugging and Profiling OpenGL 865
Creating a Debug Context 866
Debug Output 868
Debug Groups 875
Profiling 879
Appendix I: Buffer Object Layouts 885
Using Standard Layout Qualifiers 886
The std140 Layout Rules. 886
The std430 Layout Rules 887
Glossary 889
Index 919