Preface

There are plenty of books on computer graphics. Most of them are at the beginner level, where the emphasis has been on teaching a graphics API to create pretty pictures. There are quite a number of higher level books specializing in narrow areas of computer graphics, for example, global illumination, geometric modeling and non-photorealistic rendering. However, there are few books that cover computer graphics fundamentals in detail and the physical principles behind realistic rendering, so that it is suitable for use by a broader range of audience, say, from beginner to senior level computer graphics classes to those who wish to pursue an ambitious career in a computer graphics-related field and/or wish to carry out research in the field of computer graphics. Also, there are few books addressing theory and practice as the same body of knowledge. We believe that there is a need for such graphics books and in this book we have strived to address this need.

The central theme of the book is real-time rendering, that is, interactive visualization of three-dimensional scenes. About this, we progressively cover a wide range of topics from basic to intermediate level. For each topic, the basic mathematical concepts and/or physical principles are explained, and the relevant methods and algorithms are derived. The book also covers modeling, from polygonal representations to NURBS and subdivision surface representations.

It is almost impossible to teach computer graphics without hands-on examples and interaction. Thus, it is not an accident that many chapters of the book come with examples. What makes our book special is that it follows a teaching-in-context approach, that is, all the examples have been designed for developing a single, large application, providing a context to put the theory into practice. The application that we have chosen is a car racing game where the driver controls the car moving on the track. The example starts with no graphics at all, and we add a little bit of graphics with each chapter; at the end we expect that we will have something close to what one expects in a classical video game.

The book has been designed for a relatively wide audience. We assume a basic knowledge of calculus and some previous skills with a programming language. Even though the book contains a wide range of topics from basic to advanced, the reader will develop the required expertise beyond the basic, as he or she progresses with the chapters of the book. Thus, we believe that both beginner- and senior-level computer graphics students will be the primary audience of the book. Apart from gaining knowledge of various aspects of computer graphics, from an educational point of view, students will be well versed in many essential algorithms useful to understanding in-depth, more advanced algorithms. The book will also be useful to software developers working on any computer graphics interactive application as well as practioners who want to learn more about computer graphics.

Currently, it is impossible to separate real-time rendering from GPU programming, so for real-time algorithms we have accepted the help of GPU compatible API. We have chosen WebGL, the Javascript binding for OpenGL-ES, as the graphics API for the practical examples. The reason for this choice is multi-fold. First, smart phones, tablets and notebooks have become ubiquitous, and almost all these devices support WebGL-enabled browsers. Second, WebGL does not require any specialized developing platform other than a web browser and a simple text editor. Finally, there are also plenty of openly available good quality tutorials to get more information about WebGL.

Finally, thanks to the use of WebGL, the book has a significant on-line component. All the code examples are available online at the book’s Website (http://www.envymycarbook.com). We are also commited to providing up-to-date online information on this Website as well as more examples in the future.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset