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. |
|
|