|  
                               Real-Time
                              Shading 
                              Author: 
                              Marc Olano, John C. Hart, Wolfgang Heidrich and
                              Michael McCool 
                                Publisher:    A.K. Peters 
                                ISBN:    1-56881-180-2 
                                Purchasing: [Amazon.Com]
                              - RRP US$49.95 
                                Reviewed:     12th September 2002 
                              Front 
                                Cover Shot: 
                              
                              Overview 
                              Shaders
                              are the new buzz-word in computer graphics. Sure,
                              they've been around in one form or another for
                              quite a long time - mostly in high-end software
                              and research papers, but recently they've come
                              down to the domain of the consumer-level PC. The
                              advent of Direct3D8 brought texture and geometry
                              shading into the domain of your average game
                              developer, and with that move, it's dragged a lot
                              of high-level research papers with it. Whereas
                              people might have been interested in the
                              past, it is now almost a requirement if you're
                              intending to create cutting edge visuals. 
                              This
                              book is here to address the move from academic
                              research and 'offline' renderers to the
                              mass-market consumer level graphics engines. 
                              Shining
                              a light on a dark art. 
                              Shader
                              programming is a bit of a dark art - particularly
                              at the academic level. The majority of published
                              papers in this field focus on one area: lights and
                              lighting. Thus it fits that this book has some
                              heavy and lengthy discussion of lighting
                              algorithms. Shaders in Direct3D (for example)
                              allow game developers to implement far more
                              realistic (even beyond advanced light-mapping)
                              lighting solutions - combined with believable
                              world geometry, we have powerful ingredients for
                              very high quality computer graphics. 
                              What
                              is interesting to note in this book (compared with
                              the ideas behind other similar ones) is the
                              inclusion of background information - regarding
                              the history of real-time shading. As mentioned,
                              many of the techniques we're now exploring have
                              been available for some time to the academic
                              community. 
                              Academic
                              level text 
                              This
                              book, whilst aimed squarely at those interested in
                              the latest advances in consumer/mass-market
                              support for shaders, is essentially an academic
                              level text. It will quite happily suit those veterans
                              of the industry who want to go back-to-basics and
                              learn these new tricks. 
                              The
                              writing style is clear and well defined, and in
                              many cases cuts out a lot of the 'waffle' that you
                              might find in the actual academic white papers
                              this book is based on. It cuts straight to the
                              important parts - what you need to know about it,
                              and what you need to know to use it. 
                              With
                              this in mind, there are very few case studies
                              given the amount of theory covered. If you're
                              looking for a book where you can choose a lighting
                              model and then copy the code to your application
                              and 'voila!' have it working you've got the wrong
                              book. This book explains the various formulae, and
                              tricks necessary to get it working with but at the
                              end of the day it's you that needs to write the
                              assembly (of whatever) script that does the
                              business. 
                              Background
                              theory 
                              The
                              book has quite a lengthy section on other shaders
                              available - it proves for interesting reading, as
                              you're more likely to get a better grasp on where
                              the OGL2 and D3D9 shaders come from if you know
                              what's been before. There are 5 other shading
                              languages discussed - several of which you are
                              bound to have heard mentioned (RenderMan for
                              example). 
                              High
                              level shaders are the way of the future for
                              real-time graphics, whilst few people know much
                              about DirectX9 (at time of writing), it is well
                              known that it includes an HLSL compiler, and many
                              people will be aware of nVidia's Cg language. It
                              will prove far easier to implement the ideas
                              presented in this book using a high level shading
                              language, and indeed, several aspects of this book
                              read as though they expect you to be using a high
                              level language. 
                              Future
                              Consideration 
                              There
                              is a nice section towards the end of this book
                              regarding where we are now, and where we are going
                              as far as real-time shading goes. Whilst the field
                              is going to be changing every 6 months, it has
                              shown to be fairly realistic thus far. Much of the
                              discussion is up to date (as of the timing for
                              this review) - whilst it's not public yet,
                              DirectX9 is mentioned in a couple of places along
                              with the much awaited OpenGL 2.0 specification. 
                              In 
                                Conclusion 
                              There
                              are two weaknesses with this book that you should
                              think about before purchasing. Firstly, there is
                              very little applied shader code available; this is
                              understandable as it would of required the authors
                              to pick an API and target platform. Secondly, it's
                              almost entirely textures and lighting - there is
                              very little mention of geometry shaders ('Vertex
                              shaders' in D3D). 
                              If
                              you are an advanced level graphics programmer, who
                              wants to get the advantages of years of research
                              into a consumer-level application then this book
                              will serve you well. The writing style, and the
                              combined skills of the authors on this subject is
                              highly commendable. 
                                
                              
                                
                                   
                                    | Good 
                                      Things | 
                                    Bad 
                                      Things | 
                                   
                                   
                                    | •
                                      Brings academic level research down to the
                                      consumer level market. | 
                                    •
                                      Almost entirely theoretical, very little
                                      applied source code or information. | 
                                   
                                   
                                    | •
                                      Interesting section regarding the future | 
                                    •
                                      No significant mention of geometry shaders. | 
                                   
                                   
                                    | •
                                      Good coverage of what came before the
                                      consumer level implementations. | 
                                    •
                                      Quite complicated - definitely not for the
                                      beginner. | 
                                   
                                   
                                    | •
                                      Covers high-level shading languages. | 
                                    •
                                      You need to be skilled in the use of
                                      shader languages on your target platform. | 
                                   
                                   
                                    | •
                                      Sustains plenty of reading, justifying
                                      it's asking price. | 
                                    •
                                      Starts at the advanced end of the spectrum
                                      - no simple examples to get the ball
                                      rolling. | 
                                   
                                   
                                    | •
                                      Author's have experience in this field,
                                      and know what they're talking about. | 
                                      | 
                                   
                                   
                                    | •
                                      API and language independent, which
                                      annoying for applied purposes is great
                                      from a learning point of view. | 
                                      | 
                                   
                                 
                               
                                 
                               |