Book Cover

Book Contents


Section Editors




About the Authors (in alphabetical order)

Homam Bahnassi (
Homam holds a bachelor's degree in engineering management. During his study, he focused on 3D graphics creation with 3D games being a special case. He has been in the graphics industry for over four years, working on 3D modeling and animation applications. During the time, he worked as a director for several 3D real-time projects at different companies. Now he ended up as a 3D supervisor at In|Framez, researching the art pipeline for the company's flagship 3D engine 'DirectSkeleton'. He enjoys developing both real-time and MentalRay shaders.

Wessam Bahnassi (
Wessam is a hardcore old-time gamer. Games are one thing in life that interests him the most.
Actually, he is interested in everything, ranging from electronics to music to architecture (his current study) to novelty, and ultimately to programming and shaders! Being an experienced C++ programmer for over six years, Wessam has done many real-time 3D projects based on Direct3D. That is when Microsoft rewarded him as a Most Valuable Professional (MVP) in DirectX. Currently, he is a lead programmer at In|Framez, where he is employing his experience in designing and programming the DirectSkeleton 3D engine.

Ronald Barbosa
Since the days of the Atari 2600 Ronald Barbosa has been an avid fan of gaming and game technology. Since 1993 he has worked as a professional network/software engineer for many companies producing Internet technologies including the former Compaq Computer Corporation and Lucent Technologies, Inc. Throughout his adult years and his professional career, his passion has always been for gaming, and, as such, he co-founded Exibeo Corporation ( ), a young startup company focused on the development of gaming technologies. He is presently studying graphics and game development at where he serves as a Teaching Assistant for their Game Mathematics and Graphics Programming with DirectX 9 courses.

Florian Born
After his studies of mathematics and physics, Florian worked as a teacher before he started at Vulpine in 2000. In 2003 he and some collegues from Vulpine founded Trinigy, a german middleware provider for the Vision game engine.
Like many others, Florian started his career in computer programming 20 years ago on a C64. Later, on a PC, he was especially fascinated by 3D graphics and the technology behind it.

Clint Brewer
Clint currently works with NVIDIA's Technical Developer Relations group helping game developers make their engines run smoothly on current hardware, writing demos, tools, and speaking at GDC. Before that he spent five years working at Haptek creating interactive character software used by NASA, Sony and Stan Lee Media. Clint has a BS in Computer Science from the University of California, Santa Cruz and still loves coding and gaming in his spare time. His main game programming interests are in rendering large-scale natural environments, World Building and Artificial Intelligence.

Ronny Burkersroda
Ronny wrote his first computer game at the age of ten in a computer club. His first commercial game, for which he did everything but music and sound, was published in 2000. After that he wrote the 3D engine for "BomberFUN" ( and is currently developing games and the "TigerHeart" engine, which used by LightBrain ( and Media Seasons (, where Ronny is the Development Director of a small team.

Zoe Brawley

Nicolas Capens
Nicolas is a masters student Civil Engineering in Computer Science at Ghent University, Belgium. For the last four years he has focussed on software optimization related to 3D graphics rendering. With the use of dynamic code generation and shader technology he is reaching unlimited possibilities. His current goal is to provide a DirectX compatible software rendering standard that runs on every system at performance far beyond that of the reference rasterizer.

Kwok-Hung Choy
Kwok-Hung Choy received his B.Eng degree in Electronic Engineering from City University of Hong Kong in 2002. He is currently working toward the M.Phil degree at the same university. His research interest is image compression.

Joachim Diepstraten (
Joachim is a PhD Student at the Visualization and Interactive Systems Group at the German University Stuttgart in Computer Science. He was interested in realtime Computer Graphics already at the age of 15 by starting to write his own EGA and VGA graphics and rasterization
routines first in PASCAL later with C/ASM under the now infamous DOS operating system. With the death of DOS, he moved on to Sun's Java to program a realtime software 3D engine in Java and even a simple realtime raytracer. But he noticed soon that hardware graphics accelerators are the key to maximum interactive performance. Now he is doing research on finding solutions for interactive mobile graphics, squeezing the latest out of the programmable features of graphics hardware, non-photorealstic-rendering and rendering of everyday & natural objects
using graphics hardware for achieving real-time performance by following his personal slogan:If it can not be done in real-time it is impractical!

Mike Eißele (
After graduating in computer science, Mike joined the Visualization and Interactive Systems Group as a PhD student at the University of Stuttgart. He started programming on the C64 where he coded real-time graphic demos. For hardware accelerated graphics programming he started with OpenGL but switched to DirectX since the introduction of the Vertex- and PixelShader paradigms.

Dag Frommhold
Dag started programming in the mid-to-late eighties on the ZX81 and the MSX. From the beginning, he has always had a weakness for computer games and the technologies driving them. After working in the games industry as a freelancer for several years (while getting a university diploma in psychology), Dag founded the German middleware developers Vulpine and, later on, Trinigy, whose Vision game engine forms the basis for a number of commercial game titles on PC and Xbox.

David Gosselin
Dave is currently the lead for the demo team in the 3D Application Research Group at ATI Research, where he has been working on the launch demos for the past couple generations of ATI cards. In addition to the demos he also wrote the NormalMapper tool for generating bump/normal maps from high resolution models. He has published articles in ShaderX and Game Programming Gems 3 and spoken at Meltdown 2003 and GDCE 2003. Previously he worked at several companies including Oracle, Spacetec IMC, Xyplex, and MIT Lincoln Laboratory on varied projects from low level networking and web technologies to image processing and 3D input devices. Dave graduated with a MS in Computer Science from Worcester Polytechnic Institute.

Shawn Hargreaves
Shawn is mostly a graphics programmer, despite the occasional diversion such as taking a degree in music, or writing the network code for Climax's MotoGP bike racing game. He started out coding 2D graphics in DOS, where he created the popular Allegro library ( ), and has since written rendering engines for N64, PS2, Xbox, and DX9 class hardware. He thinks HLSL is one of the coolest things ever, but wishes it had a more easily pronounceable name!

O´dell Hicks
O'dell has been a professional game programmer since 1998, working on a number of projects on the PC and Xbox. Recently, he has returned to school fulltime, while running a small software company on the side. His website can be found at:

Daniel Horowitz

Gary King

Christian Kleinhuis

Kent Knox
Kent graduated from the University of Texas at Austin in 1999 with a BS degree in Computer Science. After graduation he accepted a job at Advanced Micro Devices joining their DirectX team which is responsible for optimizing the vertex processing pipeline for AMD processors. He began his work with the fixed function pipeline in DirectX7, and then transitioned to the Just-In-Time compiling virtual machine for vertex shaders introduced in DirectX8. This work continues on through DirectX9. Kent is concurrently working and attending the Software Engineering Master's program at UT Austin.

Jesse Laeuchli
Jesse is a self-taught programmer who is currently pursing a degree at the University of Notre Dame. As a child of a Foreign Service officer, he has lived in foreign countries such as China, Taiwan, Africa, Saudi Arabia, and Hungary. He has written articles on graphics programming for several computer books and web sites, including Game Programming Gems 2, Graphics Programming Methods, and ShaderX2. He is also an avid epee fencer.

Stefano Lanza
Stefano Lanza is a 25 years old student in Telecommunications Engineering at Politecnico in Milan , currently working on his master thesis. His main interest has always been computer graphics. His first 3D engine was a software Quake viewer for Dos ( ). In the last years his interest focused on the simulation and rendering of natural scenes and gave life to the Typhoon engine ( ). The engine is also the framework on which Stefano researches and tests new rendering techniques. Next year, once got his degree, he intends to work as a professional graphic coder for videogames.

Lutz Latta
Lutz Latta is working as a software developer in the games industry since 2002. He was lead programmer for the DirectX9 benchmark AquaMark3 at Massive Development in Mannheim, Germany. Previously he worked there on the action game Aquanox2: Revelation, both on the PC and video game consoles. In 2001 Lutz Latta finished his studies at the University of Applied Sciences Wedel, Germany and at the University of the West of England, Bristol. His dissertation about realistic real-time rendering was published in the papers program at Siggraph 2002. He also spoke at the Game Developers Conference 2004 about hardware-accelerated particle simulation.

Chi-Sing Leung
Chi-Sing Leung received the Ph.D. degree in computer science from the Chinese University of Hong Kong . He is currently an Associate Professor in the Department of Electronic Engineering, City University of Hong Kong. His research interests include neural computing, communications and computer graphics. He has published over 40 journal papers. From 1995 to 1997, he worked on the bidirectional associative memory model. He proved that the recalling processing of higher order BAM is unstable and proposed a statistical method to analysis the behavior of higher order BAM. In 1997, h e proposed a neural based data protection method for vector quantization data over noisy channels. From 1998 to 2002, he worked on the property of extended Kalman filtering learning in neural networks. From 2001, he has been working on several projects related to compressing image-based rendering data. He proposed a two-level compression method for handling image-based rendering data. Besides, i n 2001 and 2004, he provided consultancy service for DBS bank ( Hong Kong ) Limited.

Jörn Loviscach

Khanh Phong Ly
First game he programmed was on the Atari ST when he should have been doing his high school work. Graduated from Cambridge University with a batchelors majoring in physics in 1995, then did a masters in computer science at Manchester University. Has worked in the games industry for 6+ years, including at SCEE (Sony) and has several released titles to his credit.

Christopher Maughan

Jason L. Mitchell
Jason is the team lead of the 3D Application Research Group at ATI Research, makers of the RADEON family of graphics processors. Working on the Microsoft campus in Redmond, Jason has worked with Microsoft for several years to define key new Direct3D features. Prior to working at ATI, Jason did work in human eye tracking for human interface applications at the University of Cincinnati, where he received his Master's degree in Electrical Engineering in 1996. He received a B.S. in Computer Engineering from Case Western Reserve University in 1994. In addition to this book's chapters on HLSL Programming, Advanced Image Processing and Procedural Shading, Jason has written for the Game Programming Gems books, Game Developer Magazine, and academic publications on graphics and image processing. He regularly presents at graphics and game development conferences around the world. His homepage can be found at

Henning Mortveit
Henning Mortveit has an extensive background in mathematics, physics and programming. His current work in graphics and visualization includes incorporation of natural phenomena and global illumination in realtime/interactive applications.

William Newhall

Markus Nübel
Markus holds an McS in Computer Science and has been programming professionally for over 8 years now. Some years ago he discovered his passion for graphics and gameprogramming. He has been into shader programming since Nvidia launched CG and is spending every free minute to enlarge his knowledge of interesting graphic programming algorithms.

Chris Oat
Chris Oat is a software engineer in the 3D Application Research Group at ATI were he explores novel rendering techniques for real-time 3D graphics applications. As a member of ATI's Demo Team, his focus is on shader development for current and future graphics platforms. He has published several articles in the ShaderX and Game Programming Gems series and has presented his research at GDC and GDC Europe.

Magnus Österlind ( )
Magnus works as lead Xbox programmer at Warthog Sweden, where he is busy finishing off Richard Burns Rally. Inbetween hands of poker and watching pay-per-view wrestling, he is also trying to complete his Master's Thesis in Computer Science.

Aras Pranckevicius
The same day he got his first ZX Spectrum, Aras wrote some mosaic-drawing program. Apparently that left him impressed and since then he's been doing graphics demos, small games and similar stuff for ZX, Atari and PC. After school he went to university, has worked in "real" software development company, and now is developing real-time motion recognition tech and in-house graphics/game engine for Interamotion LLC. On his spare time he's contributing to Lithuanian demo- and game-scene and playing classical guitar.

Pedro V. Sander

Thorsten Scheuermann
Thorsten is a software engineer in ATI's 3D Application Research Group where he works on graphics demos and novel rendering techniques as part of ATI's Demo Team. Prior to working at ATI he was a member of the Effective Virtual Environments research group at the University of North Carolina at Chapel Hill, which gave him the opportunity to play with all sorts of expensive VR toys and to create sickness-inducing immersive games. Thorsten received a Master's degree in Computer Science from UNC and previously studied at the University of Karlsruhe in Germany.

Tiago Sousa
Tiago Sousa is a self-taught game and graphics programmer, who works as a programmer at Crytek since two years. Before joining Crytek, he co-founded a pioneer game development team in Portugal and studied Computer Science at a local University. Tiago is addicted to shader programming, doing research on real-time and non-real time graphics, jogging and working out at the gym.

Marco Spoerl
Just as everyone else, Marco started programming way back on a C64. After buying a PC (actually just because of his affection to chainsaw-wielding space marines) he got hold of computer graphics. After receiving his diploma in computer science he worked at Codecult Software, contributing to the Codecreatues Engine and the Codecreatures-Benchmark-Pro. After a short walk on the wild side as a freelance software developer, he's currently earning his keep working on driving training simulators for trains, trucks, cars, and tanks. Actually, he's seriously thinking about opening his own game studio.

Vlad Stamate
Vlad became passionate with computer games ever since he discovered them on
a Spectrum Sinclair 128+. Games were the road to learning computer programming. After studying in a Computer Science High School he graduated
with a BSc degree in Graphic Design from Richmond College. After graduation
he started working in the R&D department of PowerVR technologies as a Design
Engineer. Currently Vlad works for Sony Computer Entertainment Europe as part of their
Technology Group and is involved in software development for Sony game
related products.

Natalya Tatarchuk
Natalya is a Senior Software Engineer in the ATI Research, Inc. 3D Application Research Group where she is investigating innovative graphics techniques in the real-time domain for current and future platforms as a contributor in the demo group. In the past she has been the lead for the tools group at the 3D Application Research Group, working on a pioneering real-time shader development environment RenderMonkeyTM IDE. Natalya has been in the graphics industry for many years, previously working on award-winning haptic 3D modeling software, scientific visualization libraries and various other projects. She has published articles in the ShaderX books, Game Programming Gems, Game Developer magazine and, amongst others. She has presented novel techniques at various conferences throughout the world, including Siggraph sketches and presentations, GDC, GDC-Europe, Microsoft Meltdown and Russian GDCs. Natalya graduated with BAs in Computers Science and Mathematics from Boston University and is currently pursuing an SM in Computer Science with concentration in Graphics at Harvard University.

Michal Valient
Michal is a Ph.D. student at the Faculty of Mathematics, Physics and Informatics, Comenius University, Slovakia and works for Caligari corporation as project leader and Direct3D programmer. He is interested in shadow algorithms and various light transfer techniques and implementations on current and future graphics hardware. His home page can be found at .

Terry Welsh
With bachelor's degrees in Physics and Art and a master's degree in Computer Engineering, Terry brings a unique combination of practical engineering and creativity to the field of computer graphics. His work and interests include programming for complex synthetic environments, real-time rendering techniques, physical simulations such as flight dynamics models, and creating stunning visual effects. Terry has worked as an Applied Engineer at Silicon Graphics and as a flight simulation programmer at NASA Ames Research Center. He is currently VP of Technology at Infiscape, a company which he co-founded. For fun, he enjoys making real-time artwork such as screen savers and experimenting with various rendering techniques.

Matthias Wloka
Matthias Wloka works in the technical developer relations group at NVIDIA. There, he gets to collaborate with game-developers on, for example, performance-optimizing their game. He is also always tinkering with the latest graphics hardware to explore the limits of interactive real-time rendering. Before joining NVIDIA, Matthias was a game developer himself, working for GameFX/THQ Inc. He received his M.Sc in computer science from Brown University in 1990, and his B.Sc from Christian Albrechts University in Kiel , Germany in 1987.

Tien-Tsin Wong
Tien-Tsin Wong is an associate professor in the Department of Computer Science & Engineering in the Chinese University of Hong Kong (CUHK). He is the committee of advisory board of the Computer Game Technology Centre in the department. He has been programming for the last 16 years, including writing publicly available codes/libraries/demos/toolkit (check his homepage) and codes for all his graphics research. His research interest includes GPU techniques, rendering, image-based relighting, natural phenomenon modeling, and multimedia data compression. He proposed a method to simulate dust accumulation and other surface imperfections in 1995 (IEEE CGA). He also proposed, the apparent BRDF of pixel, one of the earliest techniques for relighting in 1997. Besides academic papers, he has written game development related articles in “Graphics Gems V”, “Graphics Programming Methods”, and “Shader X 3 ”. Recently, he has been working on projects for general purpose usage of GPU, such as discrete wavelet transform on GPU. Email:

Logo: 2001-2003 Javier Izquierdo, Lanzarote, Spain
Content: 2001 - 2003 Wolfgang Engel, Frankenthal, Germany