|
![]() |
|||
|
||||
OverviewOpenGL® Shading Language, Third Edition, extensively updated for OpenGL 3.1, 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 using 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 (GLSL) 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, Third Edition, includes updated descriptions for the language and all the GLSL entry points added though OpenGL 3.1, as well as updated chapters that discuss transformations, lighting, shadows, and surface characteristics. The third edition also features shaders that have been updated to OpenGL Shading Language Version 1.40 and their underlying algorithms, including Traditional OpenGL fixed functionality Stored textures and procedural textures Image-based lighting Lighting with spherical harmonics Ambient occlusion and shadow mapping Volume shadows using deferred lighting Ward’s BRDF model 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 guide to the API entry points that support the OpenGL Shading Language. Full Product DetailsAuthor: Randi J. Rost , Bill Licea-Kane , Dan Ginsburg , John KessenichPublisher: Pearson Education (US) Imprint: Addison-Wesley Educational Publishers Inc Edition: 3rd edition Dimensions: Width: 17.90cm , Height: 3.90cm , Length: 23.10cm Weight: 1.250kg ISBN: 9780321637635ISBN 10: 0321637631 Pages: 792 Publication Date: 30 July 2009 Audience: Professional and scholarly , Professional & Vocational Format: Paperback Publisher's Status: Out of Print Availability: In Print ![]() Limited stock is available. It will be ordered for you and shipped pending supplier's limited stock. Table of ContentsForeword to the Second Edition xxi Foreword to the First Edition xxv Preface xxix About the Authors xxxv About the Contributors xxxvii Acknowledgments xxxix Chapter 1: Review of OpenGL Basics 1 1.1 OpenGL History 1 1.2 OpenGL Evolution 4 1.3 Execution Model 5 1.4 The Framebuffer 6 1.5 State 9 1.6 Processing Pipeline 9 1.7 Drawing Geometry 11 1.8 Drawing Images 19 1.9 Coordinate Transforms 22 1.10 Texturing 27 1.11 Summary 33 1.12 Further Information 33 Chapter 2: Basics 35 2.1 Introduction to the OpenGL Shading Language 35 2.2 Why Write Shaders? 37 2.3 OpenGL Programmable Processors 38 2.4 Language Overview 47 2.5 System Overview 54 2.6 Key Benefits 59 2.7 Summary 61 2.8 Further Information 63 Chapter 3: Language Definition 65 3.1 Example Shader Pair 65 3.2 Data Types 67 3.3 Initializers and Constructors 76 3.4 Type Conversions 78 3.5 Qualifiers and Interface to a Shader 79 3.6 Flow Control 84 3.7 Operations 88 3.8 Preprocessor 93 3.9 Preprocessor Expressions 96 3.10 Error Handling 97 3.11 Summary 98 3.12 Further Information 98 Chapter 4: The OpenGL Programmable Pipeline 101 4.1 The Vertex Processor 102 4.2 The Fragment Processor 106 4.3 Built-in Uniform Variables 110 4.4 Built-in Constants 110 4.5 Interaction with OpenGL Fixed Functionality 111 4.6 Summary 115 4.7 Further Information 115 Chapter 5: Built-in Functions 117 5.1 Angle and Trigonometry Functions 118 5.2 Exponential Functions 121 5.3 Common Functions 122 5.4 Geometric Functions 134 5.5 Matrix Functions 136 5.6 Vector Relational Functions 138 5.7 Texture Access Functions 140 5.8 Fragment Processing Functions 176 5.9 Noise Functions 177 5.10 Summary 178 5.11 Further Information 178 Chapter 6: Simple Shading Example 181 6.1 Brick Shader Overview 182 6.2 Vertex Shader 183 6.3 Fragment Shader 189 6.4 Observations 196 6.5 Summary 197 6.6 Further Information 197 Chapter 7: OpenGL Shading Language API 199 7.1 Obtaining Version Information 200 7.2 Creating Shader Objects 203 7.3 Compiling Shader Objects 204 7.4 Linking and Using Shaders 205 7.5 Cleaning Up 210 7.6 Query Functions 211 7.7 Specifying Vertex Attributes 217 7.8 Specifying Uniform Variables 226 7.9 Samplers 238 7.10 Multiple Render Targets 239 7.11 Development Aids 240 7.12 Implementation-Dependent API Values 241 7.13 Application Code for Brick Shaders 242 7.14 Summary 247 7.15 Further Information 248 Chapter 8: Shader Development 251 8.1 General Principles 251 8.2 Performance Considerations 254 8.3 Shader Debugging 256 8.4 Shader Development Tools 258 8.5 Scene Graphs 263 8.6 Summary 266 8.7 Further Information 266 Chapter 9: Emulating OpenGL Fixed Functionality 269 9.1 Transformation 270 9.2 Light Sources 273 9.3 Material Properties and Lighting 277 9.4 Two-Sided Lighting 279 9.5 No Lighting 280 9.6 Fog 281 9.7 Texture Coordinate Generation 283 9.8 User Clipping 286 9.9 Texture Application 286 9.10 Matrices 288 9.11 Operating on the Current Matrices 291 9.12 Summary 294 9.13 Further Information 294 Chapter 10: Stored Texture Shaders 297 10.1 Access to Texture Maps from a Shader 298 10.2 Simple Texturing Example 300 10.3 Multitexturing Example 303 10.4 Cube Mapping Example 309 10.5 Another Environment Mapping Example 312 10.6 Glyph Bombing 316 10.7 Summary 326 10.8 Further Information 326 Chapter 11: Procedural Texture Shaders 329 11.1 Regular Patterns 331 11.2 Toy Ball 336 11.3 Lattice 344 11.4 Bump Mapping 345 11.5 Summary 354 11.6 Further Information 354 Chapter 12: Lighting 357 12.1 Hemisphere Lighting 357 12.2 Image-Based Lighting 361 12.3 Lighting with Spherical Harmonics 365 12.4 The Überlight Shader 369 12.5 Summary 376 12.6 Further Information 376 Chapter 13: Shadows 379 13.1 Ambient Occlusion 380 13.2 Shadow Maps 385 13.3 Deferred Shading for Volume Shadows 392 13.4 Summary 400 13.5 Further Information 400 Chapter 14: Surface Characteristics 403 14.1 Refraction 404 14.2 Diffraction 410 14.3 BRDF Models 415 14.4 Polynomial Texture Mapping with BRDF Data 422 14.5 Summary 431 14.6 Further Information 432 Chapter 15: Noise 435 15.1 Noise Defined 436 15.2 Noise Textures 444 15.3 Trade-offs 447 15.4 A Simple Noise Shader 448 15.5 Turbulence 451 15.6 Granite 453 15.7 Wood 454 15.8 Summary 457 15.9 Further Information 458 Chapter 16: Animation 461 16.1 On/Off 462 16.2 Threshold 463 16.3 Translation 463 16.4 Morphing 464 16.5 Other Blending Effects 467 16.6 Vertex Noise 468 16.7 Particle Systems 469 16.8 Wobble 476 16.9 Animating Once per Frame 480 16.10 Summary 483 16.11 Further Information 484 Chapter 17: Antialiasing Procedural Textures 487 17.1 Sources of Aliasing 487 17.2 Avoiding Aliasing 489 17.3 Increasing Resolution 490 17.4 Antialiased Stripe Example 491 17.5 Frequency Clamping 502 17.6 Summary 504 17.7 Further Information 504 Chapter 18: Non-photorealistic Shaders 507 18.1 Hatching Example 508 18.2 Technical Illustration Example 516 18.3 Mandelbrot Example 521 18.4 Summary 529 18.5 Further Information 530 Chapter 19: Shaders for Imaging 533 19.1 Geometric Image Transforms 534 19.2 Mathematical Mappings 534 19.3 Lookup Table Operations 535 19.4 Color Space Conversions 536 19.5 Image Interpolation and Extrapolation 537 19.6 Blend Modes 540 19.7 Convolution 546 19.8 Summary 555 19.9 Further Information 555 Chapter 20: Language Comparison 559 20.1 Chronology of Shading Languages 559 20.2 RenderMan 560 20.3 OpenGL Shader (ISL) 563 20.4 HLSL 565 20.5 Cg 568 20.6 Summary 570 20.7 Further Information 570 Appendix A: Language Grammar 573 Appendix B: API Function Reference 589 Implementation-Dependent API Values for GLSL 590 Other Queriable Values for GLSL 591 glAttachShader 592 glBindAttribLocation 594 glCompileShader 597 glCreateProgram 599 glCreateShader 601 glDeleteProgram 603 glDeleteShader 605 glDetachShader 607 glDrawBuffers 609 glEnableVertexAttribArray 612 glGetActiveAttrib 614 glGetActiveUniform 617 glGetAttachedShaders 621 glGetAttribLocation 623 glGetProgram 625 glGetProgramInfoLog 628 glGetShader 630 glGetShaderInfoLog 632 glGetShaderSource 634 glGetUniform 636 glGetUniformLocation 638 glGetVertexAttrib 640 glGetVertexAttribPointer 643 glIsProgram 645 glIsShader 647 glLinkProgram 648 glShaderSource 652 glUniform 654 glUseProgram 661 glValidateProgram 665 glVertexAttrib 667 glVertexAttribPointer 673 OpenGL 1.5 to OpenGL 2.0 GLSL Migration Guide 676 Afterword 681 Glossary 685 Further Reading 705 Index 721ReviewsAs the 'Red Book' is known to be the gold standard for OpenGL, the 'Orange Book' is considered to be the gold standard for the OpenGL Shading Language. With Randi's extensive knowledge of OpenGL and GLSL, you can be assured you will be learning from a graphics industry veteran. Within the pages of the second edition you can find topics from beginning shader development to advanced topics such as the spherical harmonic lighting model and more. -David Tommeraasen, CEO/Programmer, Plasma Software This will be the definitive guide for OpenGL shaders; no other book goes into this detail. Rost 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. The book includes great examples and details, as well as good additional coverage of 2.0 changes! -Jeffery Galinovsky, Director of Emerging Market, Platform Development, Intel Corporation The coverage in this new edition of the book is pitched just right to help many new shader-writers get started, but with enough deep information for the 'old hands.' -Marc Olano, Assistant Professor, University of Maryland This is a really great book on GLSL-well written and organized, very accessible, and with good real-world examples and sample code. The topics flow naturally and easily, explanatory code fragments are inserted in very logical places to illustrate concepts, and, all in all, this book makes an excellent tutorial as well as a reference. -John Carey, Chief Technology Officer, C.O.R.E. Feature Animation OpenGL (R) 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 As the 'Red Book, is known to be the gold standard for OpenGL, the 'Orange Book, is considered to be the gold standard for the OpenGL Shading Language. With Randi,s extensive knowledge of OpenGL and GLSL, you can be assured you will be learning from a graphics industry veteran. Within the pages of the second edition you can find topics from beginning shader development to advanced topics such as the spherical harmonic lighting model and more. -David Tommeraasen, CEO/Programmer, Plasma Software This will be the definitive guide for OpenGL shaders; no other book goes into this detail. Rost 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. The book includes great examples and details, as well as good additional coverage of 2.0 changes! -Jeffery Galinovsky, Director of Emerging Market, Platform Development, Intel Corporation The coverage in this new edition of the book is pitched just right to help many new shader-writers get started, but with enough deep information for the 'old hands., -Marc Olano, Assistant Professor, University of Maryland This is a really great book on GLSL-well written and organized, very accessible, and with good real-world examples and sample code. The topics flow naturally and easily, explanatory code fragments are inserted in very logical places to illustrate concepts, and, all in all, this book makes an excellent tutorial as well as a reference. -John Carey, Chief Technology Officer, C.O.R.E. Feature Animation OpenGL(R) 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 As the 'Red Book' is known to be the gold standard for OpenGL, the 'Orange Book' is considered to be the gold standard for the OpenGL Shading Language. With Randi's extensive knowledge of OpenGL and GLSL, you can be assured you will be learning from a graphics industry veteran. Within the pages of the second edition you can find topics from beginning shader development to advanced topics such as the spherical harmonic lighting model and more. --David Tommeraasen, CEO/Programmer, Plasma Software This will be the definitive guide for OpenGL shaders; no other book goes into this detail. Rost 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. The book includes great examples and details, as well as good additional coverage of 2.0 changes! --Jeffery Galinovsky, Director of Emerging Market, Platform Development, Intel Corporation The coverage in this new edition of the book is pitched just right to help many new shader-writers get started, but with enough deep information for the 'old hands.' --Marc Olano, Assistant Professor, University of Maryland This is a really great book on GLSL--well written and organized, very accessible, and with good real-world examples and sample code. The topics flow naturally and easily, explanatory code fragments are inserted in very logical places to illustrate concepts, and, all in all, this book makes an excellent tutorial as well as a reference. --John Carey, Chief Technology Officer, C.O.R.E. Feature Animation OpenGL(R) 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 As the 'Red Book' is known to be the gold standard for OpenGL, the 'Orange Book' is considered to be the gold standard for the OpenGL Shading Language. With Randi's extensive knowledge of OpenGL and GLSL, you can be assured you will be learning from a graphics industry veteran. Within the pages of the second edition you can find topics from beginning shader development to advanced topics such as the spherical harmonic lighting model and more. --David Tommeraasen, CEO/Programmer, Plasma Software This will be the definitive guide for OpenGL shaders; no other book goes into this detail. Rost 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. The book includes great examples and details, as well as good additional coverage of 2.0 changes! --Jeffery Galinovsky, Director of Emerging Market, Platform Development, Intel Corporation The coverage in this new edition of the book is pitched just right to help many new shader-writers get started, but with enough deep information for the 'old hands.' --Marc Olano, Assistant Professor, University of Maryland This is a really great book on GLSL--well written and organized, very accessible, and with good real-world examples and sample code. The topics flow naturally and easily, explanatory code fragments are inserted in very logical places to illustrate concepts, and, all in all, this book makes an excellent tutorial as well as a reference. --John Carey, Chief Technology Officer, C.O.R.E. Feature Animation OpenGL(R) 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 Author InformationRandi J. Rost was a core contributor to the development of the OpenGL Shading Language and the OpenGL API that supports it, as well as one of the first programmers to design and implement shaders using this technology. Randi works at Intel. Bill Licea-Kane is chair of the ARB OpenGL Shading Language workgroup. Bill is a principal member of technical staff at AMD. Tab Content 6Author Website:Countries AvailableAll regions |