The CD content, including demos and content, is available on the web and for download.
Part III: Materials
My professional involvement in hardware-accelerated computer graphics began 15 years ago, and I am keenly aware of where our industry came from and how far we've evolved. In 1988, most workstation users would have considered themselves extremely fortunate to have a system with a hardware-accelerated z-buffer, not to mention something that supported even the most primitive form of lighting. On the other hand, once texture mapping and Phong lighting hardware acceleration appeared a couple of years later, what followed was more of an evolution in cost reduction and large-scale integration, not a functional revolution. In fact, up until one or two years ago, almost all games used at most a Phong lighting model, modulated with layers of textures.
Nevertheless, today we are seeing a virtual explosion of complex lighting and surface reflection models in real-time graphics research and in game demos, pushing the technological envelope. These techniques include high-dynamic-range environmental lighting and preconvolved diffuse maps, separable bidirectional reflectance distribution functions (BRDFs), and many techniques using depth and occlusion information to render more accurately all varieties of materials—transparent, translucent, or opaque. This part of the book covers a number of these techniques.
In Chapter 16, "Real-Time Approximations to Subsurface Scattering," Simon Green describes several different methods of approximating the look of translucent materials, such as skin and marble, using programmable graphics hardware.
Next, in Chapter 17, "Ambient Occlusion," Matt Pharr and Simon Green show how to combine the preprocessing of occlusion information of an object and its environment with an efficient real-time shader that takes these elements into account to create a realistically lit and shadowed object.
David McAllister presents an interesting approach to representing multiple complex materials by encoding separate BRDFs within a single texture map, in Chapter 18, "Spatial BRDFs." He then expands upon this notion to support discrete lights as well as environmental lighting.
In Chapter 19, "Image-Based Lighting," Kevin Bjorke breaks out of the standard cube-map environment and delves into a world with many more possibilities for realistic lighting effects. First he explores image-based lighting, including localized cube maps—the analogue of local lighting using image-based rendering—then he shows how to apply those critical final touches to the shading model, including realistic reflectance, shadows, and diffuse/ambient terms.
Finally, in Chapter 20, "Texture Bombing," Steve Glanville shows how texture bombing and related cellular techniques can add a visual richness to your shaders, amplifying the variability of your images and reducing the repetitive look of large textured regions. He concludes with an interesting exposition on developing Voronoi diagrams within a pixel shader, which could serve as the kernel of a broad spectrum of shaders depicting natural phenomena, including scales, bubbles, leaves, and skin.
John Spitzer, NVIDIA
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and Addison-Wesley was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals.
The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.
The publisher offers discounts on this book when ordered in quantity for bulk purchases and special sales. For more information, please contact:
U.S. Corporate and Government Sales
For sales outside of the U.S., please contact:
Visit Addison-Wesley on the Web: www.awprofessional.com
Library of Congress Control Number: 2004100582
GeForce™ and NVIDIA Quadro® are trademarks or registered trademarks of NVIDIA Corporation.
RenderMan® is a registered trademark of Pixar Animation Studios.
"Shadow Map Antialiasing" © 2003 NVIDIA Corporation and Pixar Animation Studios.
"Cinematic Lighting" © 2003 Pixar Animation Studios.
Dawn images © 2002 NVIDIA Corporation. Vulcan images © 2003 NVIDIA Corporation.
Copyright © 2004 by NVIDIA Corporation.
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Printed in the United States of America. Published simultaneously in Canada.
For information on obtaining permission for use of material from this work, please submit a written request to:
Pearson Education, Inc.
Rights and Contracts Department
One Lake Street
Upper Saddle River, NJ 07458
Text printed on recycled and acid-free paper.
5 6 7 8 9 10 QWT 09 08 07
5th Printing September 2007
- Part I: Natural Effects
- Chapter 1. Effective Water Simulation from Physical Models
- Chapter 2. Rendering Water Caustics
- Chapter 3. Skin in the "Dawn" Demo
- Chapter 4. Animation in the "Dawn" Demo
- Chapter 5. Implementing Improved Perlin Noise
- Chapter 6. Fire in the "Vulcan" Demo
- Chapter 7. Rendering Countless Blades of Waving Grass
- Chapter 8. Simulating Diffraction
- Part II: Lighting and Shadows
- Chapter 10. Cinematic Lighting
- Chapter 11. Shadow Map Antialiasing
- Chapter 12. Omnidirectional Shadow Mapping
- Chapter 13. Generating Soft Shadows Using Occlusion Interval Maps
- Chapter 14. Perspective Shadow Maps: Care and Feeding
- Chapter 15. Managing Visibility for Per-Pixel Lighting
- Chapter 9. Efficient Shadow Volume Rendering
- Part III: Materials
- Part IV: Image Processing
- Part V: Performance and Practicalities
- Chapter 28. Graphics Pipeline Performance
- Chapter 29. Efficient Occlusion Culling
- Chapter 30. The Design of FX Composer
- Chapter 31. Using FX Composer
- Chapter 32. An Introduction to Shader Interfaces
- Chapter 33. Converting Production RenderMan Shaders to Real-Time
- Chapter 34. Integrating Hardware Shading into Cinema 4D
- Chapter 35. Leveraging High-Quality Software Rendering Effects in Real-Time Applications
- Chapter 36. Integrating Shaders into Applications
- Part VI: Beyond Triangles