Special
Effects Game Programming with DirectX
Author: Mason McCuskey
Publisher: Premier Press
ISBN: 1-931841-06-3
Purchasing: [Amazon.Com]
[Fatbrain.Com]
- RRP US$59.99
Reviewed: 29th December 2001
Front
Cover Shot:
Overview
As
long as computer games have existed there have
been special effects used to brighten things up;
even if it was just palette animation to create
some trippy animations... However, with the advent
of Direct3D8 (pixel and vertex shaders in particular)
developers finally have complete control over
the hardware to create some amazing 3D effects.
Take a look at any of the latest commercial releases
and you'll see what I mean.
With
this new found power, we need to know how to use
it, and what better a place than a nice big book?
And I can say now, this is definitely the book
to look at. Whilst it doesn't have the detail
that many of the academic books/papers have, it
doesn't really need it - this is hands-on practicle
material.
The
Structure
The
structure and style of this book is very similiar
to the other books in this series (two others
are reviewed on this site), this is not too surprising,
and most definitely a good thing. The book is
basically divided into 3 main parts - The Basics,
2D effects and 3D effects, with a total of 24
chapters.
The
first part, "The Basics", builds up
from a first windows program, then covers the
more advanced graphics available through the Win32
API. It then moves onto the basics of DirectX,
with a short section on each of the components
- then it delves into the real meat of the first
part - 3D maths, 3D Theory and a more in-depth
discussion of the DirectXGraphics API.
The
chapters on the Win32 graphics functions are really
only for learning purposes, and maybe for building
some simple non-DirectX programs (editors/tools
for example), because as soon as you get into
using Direct3D for your graphics the Win32 API
will look pathetic in comparison!
Once
you move into Parts 2 and 3 it ceases to be so
linear, Each chapter (or chapters in some cases)
cover a specific effect - be it water, fades or
explosions, and you dont need to read them in
the order they appear - in fact, you dont really
need to read every chapter in each section (it's
worth reading them though). This is a very clever
way of designing a book - a method that I like
alot. Once you've covered the basics and have
them under your belt you can, to a certain degree,
choose your path - looking into and experimenting
with the effects you want, when you want them.
Content
The
content of the book is generally excellent - although,
dont expect to find every single possible effect
in this book. It would be unrealistic to expect
any single book, or volume(s) of book to cover
every possible effect, because in themselves all
effects are unique and slightly different. The
best way to get around this is to learn a generic
pattern for creating effects such that you can
use your technical know-how (once you've learnt
it) with your creative imagination to create an
infinite number of effects.
This
book will allow you to build up your technical
knowledge such that you can innovate and create
your own effects, many of the basic effects are
covered here - and in learning how these effects
work you will learn many generalised principles
(such as image processing "kernels",
which are demonstrated here through blurring).
The
biggest innovation in special effects for real-time
multimedia has been shader technology, new to
Direct3D8. This book devotes an entire chapter
to the general architecture of pixel and vertex
shaders - they're syntax, theory and functions
etc... And they do crop up in a few effects later
on in the book. However, I would have appreciated
some more general examples of using shaders -
there are quite a few included on the CD, but
even if it were a chapter of "this shader
does this ____ : This is how/why..." I would
have been happy.
The
writing style is excellent through-out, and the
descriptions of theory/important aspects are clear
and easy to understand, whilst this maybe looses
some of the mathematical precison of the descriptions,
it is definitely for the better. Many of the more
complicated aspects are backed up with very simple
laymans-terms statements to reinforce the facts,
and on several cases I realised some things I'd
previously decided were very complicated are actually
quite simple - just wrapped up in lots of complicated
techno-babble!
There
is a good coverage of the basics of Direct3D programming,
however it is kept relatively brief due to it
being a required step, rather than being
the focus of the book. Such that you can
easily gain a functional knowledge of the API,
but you would be well advised to check out another
Direct3D book (see
here)/resource/website to get a fuller and
deeper understanding of the general API before
venturing into the hardcore special effects.
An Additional Resource
The
CD included with this book is more than just a
dumping ground for the source-code in the book,
it can quite easily be seen as an extension to
the actual text. The book is completely linked
into the contents of the CD, with regular box
outs "see the sample program ____ "
etc...
Then
there is the actual CD interface - that itself
deserves some credit. Many CD's I've had in my
many books tend to just be a few directories full
of files, and a readme.txt to explain whats where.
Not in this case, we get a full-blown interactive
browser with a very very cool sample browser.
The sample browser has a list of all the samples
included, and when clicked on shows a readme in
the bottom pane and at the click of a button will
launch the sample program to go with - this just
makes looking at the samples in action an effortless
task, which is what I like.
The
CD is fully packed with a long list of useful
programs, including the DirectX 8.1 SDK (despite
listing the 8.0 SDK on the cover) and the Nvidia
Effects Browser/SDK. Both are essential tools
to follow the work in this book, and whilst they
are freely available online, it's so much easier
to have them to hand...
Some
Minor Let-Downs
There
are a few minor points that you can hold against
this book, none of them are hugely significant
and may or may not bother you at all...
Hardware
- to get the most from this book you need some
top-of-the-line hardware, namely a 3D card supporting
pixel/vertex shaders in hardware. Whilst this
isn't so much specific to the book, rather to
general special-fx programming it is a little
bit of an annoyance; particularly given that the
GeForce 3 and Radeon cards cost up to £300
still...
Language
- as is the standard with all books of this type,
C/C++ is the standard language used. Unlike some
books, we dont get an overview of C/C++ with this
book (which is a good thing, as I always felt
that the basic coverage in other books wasn't
really worth the trees). However, we do get a
brief coverage of some advanced C++/STL functions
that the author has used. To get very far with
this book you need to be fairly fluent in C/C++
Diagrams/Picture
- there are many many diagrams and pictures in
this book, which is definitely a good thing, but
as is true with other books in this series, they're
all in black-and-white. Whilst they have constructed
it such that it doesn't matter a huge deal, it
would be nice to see some colour-plates, or to
have some colour pictures on the CD...
In
Conclusion
I
like this book, and I believe that if you can
get along with the C/C++ syntax then you will
enjoy this book and find it to be a very useful
resource. The few let-downs I just listed are
outweighed ten-fold by the good points for this
book, so dont linger on them for too long!
Good
Things |
Bad
Things |
nicely divided into parts, with the 2nd
and 3rd parts designed particularly well. |
Entirely in C/C++, which may be a drawback
for VB developers. |
Covers new territory, that isn't brilliantly
covered anywhere else. |
Could have done with some colour diagrams/colour
plates |
Covers both 2D and 3D elements |
|
Gives the knowledge required to expand beyond
this book |
|
The Author seems experienced in this field,
and knows what he's doing. |
|
Excellent CD included - with an excellent
browser. |
|
|