In the summer of 1996, I had the privilege of doing a summer internship in the Cosmo Software division of Silicon Graphics, Inc., which was developing a Virtual Reality Markup Language (VRML) player for web browsers. VRML brought interactive 3D graphics to the World Wide Web for the first time. The Web was young, and it was exciting to see 3D integrated into the experience at such an early stage.
VRML unfortunately didn’t gain the broad adoption its supporters had hoped for. From a purely technical standpoint, there were two contributing factors. First, the programmability was limited due to poor performance at the time of the available scripting languages’ virtual machines. This meant that it wasn’t possible to write general-purpose code that affected the 3D scene, inherently limiting the domains to which VRML could be applied. Second, the rendering model was based on the original OpenGL API’s fixed function graphics pipeline. This meant it was not possible to add new kinds of visual effects beyond those that had been designed into the system.
The WebGL API builds on decades of computer graphics work and research that culminated some years ago in the development of the OpenGL ES 2.0 API, a small, purely shader-based graphics library that ships in nearly every new smartphone and mobile device. The WebGL working group and community are hopeful that exposing the power of the 3D graphics processor to the Web in a safe and robust manner will yield a long-anticipated wave of new and exciting 3D web applications that run on every operating system and on every kind of computing device.
Tony has written an accessible yet comprehensive book that covers a wide range of practical techniques for the development of 3D applications on the Web. His book will help the novice get up and running, but also contains enough advanced information that even the 3D graphics expert will learn something new. Tony rapidly moves past the basics of displaying 3D meshes, and presents interesting, useful material on topics including visual effects, animation, interaction, and content creation, culminating in the development of a working prototype of a 3D game. It’s a good read; I enjoyed it and hope that you will, too.