Description

Book Synopsis
Everything you need to know about developing hardware-accelerated 3D graphics with WebGL! As the newest technology for creating 3D graphics on the web, in both games, applications, and on regular websites, WebGL gives web developers the capability to produce eye-popping graphics.

Table of Contents

Introduction xxl

CHAPTER 1: INTRODUCING WEBGL 1

The Basics of WebGL 1

So Why Is WebGL So Great? 2

Designing a Graphics API 3

An Immediate-Mode API 3

A Retained-Mode API 4

An Overview of Graphics Hardware 4

GPU 5

FrameBuffer 5

Texture Memory 7

Video Controller 7

Understanding the WebGL Graphics Pipeline 7

Vertex Shader 8

Primitive Assembly 12

Rasterization 14

Fragment Shader 14

Per Fragment Operations 17

Comparing WebGL to Other Graphics Technologies 19

OpenGL 19

OpenGL ES 2.0 21

Direct3D 23

HTML5 Canvas 24

Scalable Vector Graphics 28

VRML and X3D 30

Linear Algebra for 3D Graphics 31

Coordinate System 31

Points or Vertices 31

Vectors 32

Dot Product or Scalar Product 33

Cross Product 34

Homogeneous Coordinates 35

Matrices 35

Affine Transformations 38

Summary 44

CHAPTER 2: CREATING BASIC WEBGL EXAMPLES 45

Drawing a Triangle 46

Creating the WebGL Context 49

Creating the Vertex Shader and the Fragment Shader 51

Compiling the Shaders 52

Creating the Program Object and Linking the Shaders 53

Setting Up the Buffers 54

Drawing the Scene 56

Understanding the WebGL Coding Style 57

Debugging Your WebGL Application 58

Using Chrome Developer Tools 58

Using Firebug 65

WebGL Error Handling and Error Codes 67

WebGL Inspector 70

Troubleshooting WebGL 76

Using the DOM API to Load Your Shaders 78

Putting It Together in a Slightly More Advanced Example 80

Experimenting with Code 83

Summary 84

CHAPTER 3: DRAWING 85

WebGL Drawing Primitives and Drawing Methods 86

Primitives 86

Understanding the Importance of Winding Order 91

WebGL’s Drawing Methods 93

Typed Arrays 99

Buffer and View 100

Supported View Types 101

Exploring Different Ways to Draw 102

gl.drawArrays() and gl.TRIANGLES 103

gl.drawArrays() and gl.TRIANGLE_STRIP 105

gl.drawElements() and gl.TRIANGLES 106

gl.drawElements() and gl.TRIANGLE_STRIP 108

Conclusions of the Comparison 111

Pre-Transform Vertex Cache and Post-Transform Vertex Cache 111

Interleaving Your Vertex Data for Improved Performance 114

Using an Array of Structures 115

Using a Vertex Array or Constant Vertex Data 123

A Last Example to Wind Things Up 124

Some Things to Experiment With 134

Summary 134

CHAPTER 4: COMPACT JAVASCRIPT LIBRARIES AND TRANSFORMATIONS 137

Working with Matrices and Vectors in JavaScript 138

Sylvester 139

WebGL-mjs 142

glMatrix 146

Using Transformations 150

How Transformations Are Used 150

Understanding the Complete Transformation Pipeline 157

Getting Practical with Transformations 158

Setting Up Buffers with Object Coordinates 159

Creating Transformation Matrices with JavaScript and Uploading Them to the Shader 160

Uploading the Transformation Matrices to the Vertex Shader in the GPU 161

Calling Your Drawing Methods 162

Understanding the Importance of Transformation Order 162

Using a Grand, Fixed Coordinate System 163

Using a Moving, Local Coordinate System 165

Pushing and Popping Transformation Matrices 167

A Complete Example: Drawing Several Transformed Objects 171

Creating a Cube with WebGL 173

Organization of the View Transformation and the Model Transformation 175

Summary 176

CHAPTER 5: TEXTURING 177

Understanding Lost Context 178

Understanding the Setup Required to Handle Lost Context 179

Factors to Consider When Handling Lost Context 181

Introducing 2D Textures and Cubemap Textures 183

Loading Your Textures 185

Creating a WebGLTexture Object 185

Binding Your Texture 185

Loading the Image Data 186

Uploading the Texture to the GPU 187

Specifying Texture Parameters 189

Understanding the Complete Procedure of Loading a Texture 190

Defi ning Your Texture Coordinates 193

Using Your Textures in Shaders 195

Working with Texture Image Units 197

Working with Texture Filtering 198

Understanding Magnifi cation 199

Understanding Minifi cation 200

Understanding Mipmapping 200

Understanding Texture Coordinate Wrapping 203

Using the gl.REPEAT Wrap Mode 203

Using the gl.MIRRORED_REPEAT Wrap Mode 205

Using the gl.CLAMP_TO_EDGE Wrap Mode 206

A Complete Texture Example 207

Using Images for Your Textures 210

Downloading Free Textures 210

Basing Textures on Your Own Photos 211

Drawing Images 211

Buying Textures 211

Understanding Same-Origin Policy and Cross-Origin Resource Sharing 212

Understanding Same-Origin Policy for Images in General 212

Understanding Same-Origin Policy for Textures 214

Understanding Cross-Origin Resource Sharing 215

Summary 217

CHAPTER 6: ANIMATIONS AND USER INPUT 219

Animating the Scene 219

Using setInterval() and setTimeout() 221

Using requestAnimationFrame() 222

Compensating Movement for Different Frame Rates 225

Creating an FPS Counter to Measure the Smoothness of Your Animation 226

Understanding the Disadvantages of Using FPS as a Measurement 228

Event Handling for User Interaction 230

Basic Event Handling with DOM Level 0 231

Advanced Event Handling with DOM Level 2 232

Key Input 234

Mouse Input 239

Applying Your New Knowledge 240

Summary 246

CHAPTER 7: LIGHTING 249

Understanding Light 249

Working with a Local Lighting Model 250

Understanding the Phong Reflection Model 251

Ambient Reflection 252

Diff use Reflection 253

Specular Reflection 255

Understanding the Complete Equation and Shaders for the Phong Reflection Model 259

Using Lighting with Texturing 263

Understanding the JavaScript Code Needed for WebGL Lighting 267

Setting Up Buffers with Vertex Normals 268

Calculating and Uploading the Normal Matrix to the Shader 270

Uploading the Light Information to the Shader 270

Using Different Interpolation Techniques for Shading 271

Flat Shading 272

Gouraud Shading 273

Phong Shading 274

Understanding the Vectors That Must Be Normalized 278

Normalization in the Vertex Shader 278

Normalization in the Fragment Shader 279

Using Different Types of Lights 279

Directional Lights 280

Point Lights 280

Spot Lights 281

Understanding the Attenuation of Light 284

Understanding Light Mapping 288

Summary 289

CHAPTER 8: WEBGL PERFORMANCE OPTIMIZATIONS 291

WebGL under the Hood 292

Hardware that Powers WebGL 292

Key Software Components 294

WebGL Performance Optimizations 296

Avoiding a Typical Beginner’s Mistake 296

Locating the Bottleneck 298

General Performance Advice 302

Performance Advice for CPU-Limited WebGL 305

Performance Advice for Vertex-Limited WebGL 307

Performance Advice for Pixel-Limited WebGL 308

A Closer Look at Blending 310

Introducing Blending 310

Setting the Blending Functions 311

Understanding Drawing Order and the Depth Buffer 314

Drawing a Scene with Both Opaque and Semi-Transparent Objects 315

Changing the Default Operator for the Blend Equation 315

Using Premultiplied Alpha 316

Taking WebGL Further 317

Using WebGL Frameworks 317

Publishing to the Google Chrome Web Store 318

Using Additional Resources 318

Summary 319

Index 321

Professional WebGL Programming Developing 3D

    Product form

    £22.39

    Includes FREE delivery

    RRP £27.99 – you save £5.60 (20%)

    Order before 4pm today for delivery by Sat 18 Jul 2026.

    A Paperback / softback by Andreas Anyuru

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      View other formats and editions of Professional WebGL Programming Developing 3D by Andreas Anyuru

      Publisher: John Wiley & Sons Inc
      Publication Date: 08/06/2012
      ISBN13: 9781119968863, 978-1119968863
      ISBN10: 1119968860

      Description

      Book Synopsis
      Everything you need to know about developing hardware-accelerated 3D graphics with WebGL! As the newest technology for creating 3D graphics on the web, in both games, applications, and on regular websites, WebGL gives web developers the capability to produce eye-popping graphics.

      Table of Contents

      Introduction xxl

      CHAPTER 1: INTRODUCING WEBGL 1

      The Basics of WebGL 1

      So Why Is WebGL So Great? 2

      Designing a Graphics API 3

      An Immediate-Mode API 3

      A Retained-Mode API 4

      An Overview of Graphics Hardware 4

      GPU 5

      FrameBuffer 5

      Texture Memory 7

      Video Controller 7

      Understanding the WebGL Graphics Pipeline 7

      Vertex Shader 8

      Primitive Assembly 12

      Rasterization 14

      Fragment Shader 14

      Per Fragment Operations 17

      Comparing WebGL to Other Graphics Technologies 19

      OpenGL 19

      OpenGL ES 2.0 21

      Direct3D 23

      HTML5 Canvas 24

      Scalable Vector Graphics 28

      VRML and X3D 30

      Linear Algebra for 3D Graphics 31

      Coordinate System 31

      Points or Vertices 31

      Vectors 32

      Dot Product or Scalar Product 33

      Cross Product 34

      Homogeneous Coordinates 35

      Matrices 35

      Affine Transformations 38

      Summary 44

      CHAPTER 2: CREATING BASIC WEBGL EXAMPLES 45

      Drawing a Triangle 46

      Creating the WebGL Context 49

      Creating the Vertex Shader and the Fragment Shader 51

      Compiling the Shaders 52

      Creating the Program Object and Linking the Shaders 53

      Setting Up the Buffers 54

      Drawing the Scene 56

      Understanding the WebGL Coding Style 57

      Debugging Your WebGL Application 58

      Using Chrome Developer Tools 58

      Using Firebug 65

      WebGL Error Handling and Error Codes 67

      WebGL Inspector 70

      Troubleshooting WebGL 76

      Using the DOM API to Load Your Shaders 78

      Putting It Together in a Slightly More Advanced Example 80

      Experimenting with Code 83

      Summary 84

      CHAPTER 3: DRAWING 85

      WebGL Drawing Primitives and Drawing Methods 86

      Primitives 86

      Understanding the Importance of Winding Order 91

      WebGL’s Drawing Methods 93

      Typed Arrays 99

      Buffer and View 100

      Supported View Types 101

      Exploring Different Ways to Draw 102

      gl.drawArrays() and gl.TRIANGLES 103

      gl.drawArrays() and gl.TRIANGLE_STRIP 105

      gl.drawElements() and gl.TRIANGLES 106

      gl.drawElements() and gl.TRIANGLE_STRIP 108

      Conclusions of the Comparison 111

      Pre-Transform Vertex Cache and Post-Transform Vertex Cache 111

      Interleaving Your Vertex Data for Improved Performance 114

      Using an Array of Structures 115

      Using a Vertex Array or Constant Vertex Data 123

      A Last Example to Wind Things Up 124

      Some Things to Experiment With 134

      Summary 134

      CHAPTER 4: COMPACT JAVASCRIPT LIBRARIES AND TRANSFORMATIONS 137

      Working with Matrices and Vectors in JavaScript 138

      Sylvester 139

      WebGL-mjs 142

      glMatrix 146

      Using Transformations 150

      How Transformations Are Used 150

      Understanding the Complete Transformation Pipeline 157

      Getting Practical with Transformations 158

      Setting Up Buffers with Object Coordinates 159

      Creating Transformation Matrices with JavaScript and Uploading Them to the Shader 160

      Uploading the Transformation Matrices to the Vertex Shader in the GPU 161

      Calling Your Drawing Methods 162

      Understanding the Importance of Transformation Order 162

      Using a Grand, Fixed Coordinate System 163

      Using a Moving, Local Coordinate System 165

      Pushing and Popping Transformation Matrices 167

      A Complete Example: Drawing Several Transformed Objects 171

      Creating a Cube with WebGL 173

      Organization of the View Transformation and the Model Transformation 175

      Summary 176

      CHAPTER 5: TEXTURING 177

      Understanding Lost Context 178

      Understanding the Setup Required to Handle Lost Context 179

      Factors to Consider When Handling Lost Context 181

      Introducing 2D Textures and Cubemap Textures 183

      Loading Your Textures 185

      Creating a WebGLTexture Object 185

      Binding Your Texture 185

      Loading the Image Data 186

      Uploading the Texture to the GPU 187

      Specifying Texture Parameters 189

      Understanding the Complete Procedure of Loading a Texture 190

      Defi ning Your Texture Coordinates 193

      Using Your Textures in Shaders 195

      Working with Texture Image Units 197

      Working with Texture Filtering 198

      Understanding Magnifi cation 199

      Understanding Minifi cation 200

      Understanding Mipmapping 200

      Understanding Texture Coordinate Wrapping 203

      Using the gl.REPEAT Wrap Mode 203

      Using the gl.MIRRORED_REPEAT Wrap Mode 205

      Using the gl.CLAMP_TO_EDGE Wrap Mode 206

      A Complete Texture Example 207

      Using Images for Your Textures 210

      Downloading Free Textures 210

      Basing Textures on Your Own Photos 211

      Drawing Images 211

      Buying Textures 211

      Understanding Same-Origin Policy and Cross-Origin Resource Sharing 212

      Understanding Same-Origin Policy for Images in General 212

      Understanding Same-Origin Policy for Textures 214

      Understanding Cross-Origin Resource Sharing 215

      Summary 217

      CHAPTER 6: ANIMATIONS AND USER INPUT 219

      Animating the Scene 219

      Using setInterval() and setTimeout() 221

      Using requestAnimationFrame() 222

      Compensating Movement for Different Frame Rates 225

      Creating an FPS Counter to Measure the Smoothness of Your Animation 226

      Understanding the Disadvantages of Using FPS as a Measurement 228

      Event Handling for User Interaction 230

      Basic Event Handling with DOM Level 0 231

      Advanced Event Handling with DOM Level 2 232

      Key Input 234

      Mouse Input 239

      Applying Your New Knowledge 240

      Summary 246

      CHAPTER 7: LIGHTING 249

      Understanding Light 249

      Working with a Local Lighting Model 250

      Understanding the Phong Reflection Model 251

      Ambient Reflection 252

      Diff use Reflection 253

      Specular Reflection 255

      Understanding the Complete Equation and Shaders for the Phong Reflection Model 259

      Using Lighting with Texturing 263

      Understanding the JavaScript Code Needed for WebGL Lighting 267

      Setting Up Buffers with Vertex Normals 268

      Calculating and Uploading the Normal Matrix to the Shader 270

      Uploading the Light Information to the Shader 270

      Using Different Interpolation Techniques for Shading 271

      Flat Shading 272

      Gouraud Shading 273

      Phong Shading 274

      Understanding the Vectors That Must Be Normalized 278

      Normalization in the Vertex Shader 278

      Normalization in the Fragment Shader 279

      Using Different Types of Lights 279

      Directional Lights 280

      Point Lights 280

      Spot Lights 281

      Understanding the Attenuation of Light 284

      Understanding Light Mapping 288

      Summary 289

      CHAPTER 8: WEBGL PERFORMANCE OPTIMIZATIONS 291

      WebGL under the Hood 292

      Hardware that Powers WebGL 292

      Key Software Components 294

      WebGL Performance Optimizations 296

      Avoiding a Typical Beginner’s Mistake 296

      Locating the Bottleneck 298

      General Performance Advice 302

      Performance Advice for CPU-Limited WebGL 305

      Performance Advice for Vertex-Limited WebGL 307

      Performance Advice for Pixel-Limited WebGL 308

      A Closer Look at Blending 310

      Introducing Blending 310

      Setting the Blending Functions 311

      Understanding Drawing Order and the Depth Buffer 314

      Drawing a Scene with Both Opaque and Semi-Transparent Objects 315

      Changing the Default Operator for the Blend Equation 315

      Using Premultiplied Alpha 316

      Taking WebGL Further 317

      Using WebGL Frameworks 317

      Publishing to the Google Chrome Web Store 318

      Using Additional Resources 318

      Summary 319

      Index 321

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account