|  
                               Realistic
                              Ray Tracing 
                              Author: 
                              Peter Shirley 
                                Publisher:  A.K. Peters 
                                ISBN:  1-56881-110-1 
                                Purchasing: [Amazon.Com]
                              - RRP US$35 
                                Reviewed:  4th August 2002 
                              Front 
                                Cover Shot: 
                                
                              Overview 
                              Ray
                              tracing is not new technology - several papers
                              were published on the topic as early as 1980.
                              However, with recent advances in
                              processor/computing power it is almost possible to
                              do reasonable quality ray-tracing in real time
                              (compared with several hours per-frame). 
                              For
                              those who are completely blank, ray tracing is a
                              method for accurately modeling the behavior of
                              light in a 3D scene. Light travels in straight
                              lines, hence the "ray" part, and
                              "tracing" to model how it reflects,
                              refracts and shades the surfaces it meets. Up
                              until recently it has been almost exclusively a
                              technique employed by only the most advanced 3D
                              imaging/rendering programs (such as Lightwave and
                              3DSMax). Now it is regularly used by games to
                              generate light maps for 3D worlds. 
                              Anisotropic
                              Specular Bidirectional Reflectance Distribution
                              Function's 
                              First
                              off, this book is not for the feint-hearted, it is
                              essentially an academic/university level text.
                              It's heavy on the language (The title above is a
                              section towards the end of the book, and yes, I
                              did choose the most complicated one I could find!)
                              and even heavier on the mathematics. 
                              You
                              don't necessarily need to be a genius, or even at
                              university level; where appropriate a good, solid
                              explanation is provided. The first main chapter of
                              the book covers all the basic math functions -
                              vectors, matrices and color operations. Anyone
                              with a decent understanding of mathematics
                              (pre-university level) will be able to work with
                              this book. The math later on in the book gets
                              incredibly complicated, but thankfully there is
                              always a summary equation/example such that you
                              can still do the practical side of things even if
                              you don't fully understand how/why you get there. 
                              Structure 
                              The
                              book itself is very small in comparison to most
                              computer/technical manuals. Weighing in at a mere
                              165 pages where each is (roughly) A5 size makes it
                              quite an expensive book given the physical
                              size/length of the text. 
                              However,
                              there are very few long code-listings and large
                              images so almost all the space is used up on
                              relevant content. Having read through it, it
                              definitely does not come across as being a
                              small/short book. 
                              There
                              are three parts making up this text, starting with
                              a basic (and complete) ray tracer, then adding
                              some "bells and whistles" before
                              finishing up with a discussion of the most
                              advanced topics. This is a very clear and useful
                              way to structure this book - once you've completed
                              part 1 you will have a fully functional ray-tracer
                              (albeit very simple). You can then read through
                              the advanced topics and "plug them in"
                              to your existing engine, whilst it would be best
                              if you implemented all of the advanced features,
                              it would be perfectly reasonable to
                              pick-and-choose from the advanced topics. 
                              Just
                              a book 
                              Unlike
                              the vast majority of other computer/technical
                              manuals reviewed on this site there is no bundled
                              CD included with this book. This isn't as much of
                              a bad thing as it sounds; all of the
                              "code" presented in the text is written
                              as psuedo code and math in math, regardless of
                              language. Therefore from reading this book you can
                              write your engine in any language without any
                              hassle of mentally converting any code presented.
                              It would probably work best if you used one of the
                              newer object orientated languages - .Net language,
                              Java, C++ and VB6 (to a lesser extent). 
                              Brief
                              discussion of refraction 
                              The
                              book does a very good job of covering all the
                              bases, and where it doesn't go the full distance
                              it has an extensive references list for further
                              reading. However, I was mildly disappointed with
                              the rather brief coverage of refraction. 
                              Refraction
                              is where a ray of light will change direction when
                              passing through a semi-transparent/different
                              density object (in simple terms). For example, it
                              would be the reason why the image appears
                              distorted through a glass-ball/statue.  
                              The
                              math behind refraction is covered - and the
                              eventual formula would be useful if you
                              implemented refraction; but it's not got as good
                              coverage as some other areas in the book. 
                              In 
                                Conclusion 
                              If
                              you can handle the complexity of the ideas in this
                              book, then you'll find it a very useful reference
                              for ray-tracing. Even the simple engine (maybe
                              with added soft shadows) would prove to be very
                              useful when generating a light map for
                              real-time/multimedia 3D worlds. 
                                
                              
                                
                                   
                                    | Good 
                                      Things | 
                                    Bad 
                                      Things | 
                                   
                                   
                                    | 
                                      A very useful text covering all the major
                                      areas. | 
                                    
                                      Very heavy on mathematics - you need to be
                                      a competent mathematician to get anywhere. | 
                                   
                                   
                                    | 
                                      Not (programming) language specific. | 
                                    
                                      No CD included - and no solid sample code
                                      to copy down/test. | 
                                   
                                   
                                    | 
                                      Good introductory section laying the
                                      groundwork. | 
                                      | 
                                   
                                   
                                    | 
                                      Good reference list for those who want to
                                      read-around the subject further. | 
                                      | 
                                   
                                   
                                    | 
                                      Peter Shirley obviously knows a lot about
                                      ray-tracing, so definitely a trustable
                                      source. | 
                                      | 
                                   
                                 
                               
                                 
                               |