What kind of rendering does WebGL offer?
Structure of a WebGL application
Time for action — creating an HTML5 canvas
Time for action — accessing the WebGL context
Time for action — setting up WebGL context attributes
Time for action — visualizing a finished scene
Overview of WebGL's rendering pipeline
Time for action — rendering a square
Time for action — rendering modes
WebGL as a state machine: buffer manipulation
Time for action — enquiring on the state of buffers
Advanced geometry loading techniques: JavaScript Object Notation (JSON) and AJAX
Time for action — JSON encoding and decoding
Time for action — loading a cone with AJAX + JSON
Lights, normals, and materials
Using lights, normals, and materials in the pipeline
Shading methods and light reflection models
ESSL — OpenGL ES Shading Language
Time for action — updating uniforms in real time
Time for action — Goraud shading
Time for action — Phong shading with Phong lighting
Bridging the gap between WebGL and ESSL
Time for action — working on the wall
More on lights: positional lights
Time for action — positional lights in action
Time for action — exploring translations: world space versus camera space
Time for action — exploring rotations: world space versus camera space
Time for action — exploring the Nissan GTX
Time for action — orthographic and perspective projections
Structure of the WebGL examples
Connecting matrix stacks and JavaScript timers
Time for action — simple animation
Time for action — bouncing ball
Time for action — interpolation
Colors, Depth Testing, and Alpha Blending
Time for action — coloring the cube
Time for action — adding a blue light to a scene
Time for action — adding a white light to a scene
Time for action — directional point lights
Time for action — blending workbench
Time for action — creating a transparent wall
Creating and uploading a texture
Time for action — texturing the cube
Time for action — trying different filter modes
Time for action — trying different wrap modes
Time for action — using multitexturing
Time for action — trying out cube maps
Setting up an offscreen framebuffer
Assigning one color per object in the scene
Rendering to an offscreen framebuffer
Reading pixels from the offscreen framebuffer
Implementing unique object labels
Time for action — unique object labels
Virtual Car Showroom application
Defining what the GUI will look like
Configuring some WebGL properties
Time for action — customizing the application
Time for action — testing some post-process effects
Time for action — using point sprites to create a fountain of sparks
Time for action — normal mapping in action
Ray tracing in fragment shaders