| |
| |
Introduction | |
| |
| |
| |
From the Ground Up | |
| |
| |
| |
Welcome to the World of Shaders | |
| |
| |
Prerequisites | |
| |
| |
Vertex and Pixel Shader Pipelines and Capabilities | |
| |
| |
Tool Overview | |
| |
| |
RenderMonkey | |
| |
| |
Microsoft Texture Tool | |
| |
| |
NVIDIA Photoshop Plug-In | |
| |
| |
3D Studio Max | |
| |
| |
Microsoft Effect Editor | |
| |
| |
NVIDIA's Cg Toolkit | |
| |
| |
It's Your Turn! | |
| |
| |
What's Next? | |
| |
| |
| |
The Art of 3D | |
| |
| |
From the Ground Up | |
| |
| |
Looking at Our Universe | |
| |
| |
Translation Matrix | |
| |
| |
Scale Matrix | |
| |
| |
Rotation Matrix | |
| |
| |
Viewing It from a Camera | |
| |
| |
Under the Hood | |
| |
| |
3D APIs | |
| |
| |
OpenGL | |
| |
| |
DirectX and Direct3D | |
| |
| |
Which One Is Better? | |
| |
| |
Hardware Architecture | |
| |
| |
Shaders | |
| |
| |
It's Your Turn! | |
| |
| |
What's Next? | |
| |
| |
| |
RenderMonkey Version 1.5 | |
| |
| |
Introduction to RenderMonkey | |
| |
| |
Our First Look at RenderMonkey | |
| |
| |
Autopsy of a Shader | |
| |
| |
It's Your Turn! | |
| |
| |
What's Next? | |
| |
| |
| |
Getting Started, Your First Shaders | |
| |
| |
Your First Shader | |
| |
| |
Texturing Your Object | |
| |
| |
Seeing Double | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Animating a Texture | |
| |
| |
| |
Blending two Textures | |
| |
| |
What's Next? | |
| |
| |
| |
Screen Effects | |
| |
| |
| |
Looking Through a Filter | |
| |
| |
Rendering to a Sketchpad | |
| |
| |
Texture Coordinates | |
| |
| |
Finally Rendering Your Render Target | |
| |
| |
Don't Adjust Your TV! | |
| |
| |
Black and White, Like in the Old Times | |
| |
| |
Generalizations Are Good! | |
| |
| |
Things Are Not Always Linear | |
| |
| |
Blurring Things Up | |
| |
| |
Bring on the Filters | |
| |
| |
Motion Blur | |
| |
| |
Building the Motion Blur Shader | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Old Time Movie | |
| |
| |
| |
Gauss Filter | |
| |
| |
What's Next? | |
| |
| |
| |
Blurring Things Up | |
| |
| |
What Is Depth of Field? | |
| |
| |
It's All About Faking It! | |
| |
| |
Blurring Things, Take Two | |
| |
| |
Depth Impostors | |
| |
| |
A Note About Z-Buffers | |
| |
| |
Using the Alpha Channel | |
| |
| |
A Note About Multiple Render Targets | |
| |
| |
Doing It Twice | |
| |
| |
What About the Z-Buffer? | |
| |
| |
Special Considerations | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Multiple Impostors | |
| |
| |
| |
Using a Lookup Texture | |
| |
| |
| |
Using Intermediate Blur Textures to Create a Smoother Transition | |
| |
| |
What's Next? | |
| |
| |
| |
It's Getting Hot in Here | |
| |
| |
What Is Heat Haze? | |
| |
| |
Uses for Heat Haze | |
| |
| |
It's All About Distortion Maps | |
| |
| |
Putting a Background to Your Shader | |
| |
| |
Hitting the Pavement | |
| |
| |
Looking Above the Flame | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Your Own Refraction Shader | |
| |
| |
| |
Making it More Lively | |
| |
| |
What's Next? | |
| |
| |
| |
Making Your Day Brighter | |
| |
| |
What Is High Dynamic Range? | |
| |
| |
Glare | |
| |
| |
Streaks | |
| |
| |
Lens Flares | |
| |
| |
A Few HDR Basics | |
| |
| |
What About Floating-Point Textures? | |
| |
| |
Exposure Control: The First Step | |
| |
| |
A Note on Automatic Exposure Control | |
| |
| |
Time for Some High Dynamic Range Effects | |
| |
| |
Your First HDR Shader: The Glare! | |
| |
| |
Time for Some Streaking! | |
| |
| |
Lens Flare Free-for-All | |
| |
| |
Putting It All Together | |
| |
| |
Solutions for Today's Hardware | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Using a Big Filter | |
| |
| |
| |
Streaking on Today's Hardware | |
| |
| |
What's Next? | |
| |
| |
| |
Making It Look Real | |
| |
| |
| |
May There Be Light | |
| |
| |
Of Light and Magic | |
| |
| |
What Makes Light in the First Place | |
| |
| |
Types of Lights | |
| |
| |
Directional Light | |
| |
| |
Point Lights | |
| |
| |
Spot Lights | |
| |
| |
Area Lights | |
| |
| |
Let's Get Shading | |
| |
| |
Ambient Lighting | |
| |
| |
Diffuse Lighting | |
| |
| |
Specular Lighting | |
| |
| |
Putting It Together | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Direction Lights | |
| |
| |
| |
Animating Lights | |
| |
| |
What's Next? | |
| |
| |
| |
Shiny Little Pixels | |
| |
| |
Why Isn't Vertex Lighting Enough? | |
| |
| |
Basic Pixel Lighting | |
| |
| |
Diffuse Lighting | |
| |
| |
Specular Lighting | |
| |
| |
Putting It All Together | |
| |
| |
Giving You Goose Bumps | |
| |
| |
Bumpmapping | |
| |
| |
Tangent Space | |
| |
| |
Normal Maps | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Direction Lights | |
| |
| |
| |
Multiple Lights | |
| |
| |
What's Next? | |
| |
| |
| |
Mirror, Mirror, On the Wall | |
| |
| |
From Reflections to Refractions | |
| |
| |
Reflections | |
| |
| |
Refraction | |
| |
| |
Walking Hand in Hand | |
| |
| |
Building Dynamic Environment Maps | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Doing it All Per-Pixel | |
| |
| |
| |
Color-Based Refraction | |
| |
| |
What's Next? | |
| |
| |
| |
Not All Materials Are the Same | |
| |
| |
BRDFs Are Your Friends | |
| |
| |
Soft and Velvety | |
| |
| |
Determining BRDFs | |
| |
| |
Oren-Nayer Velvet | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Using Lookup Textures | |
| |
| |
| |
Multiple BRDFs | |
| |
| |
What's Next? | |
| |
| |
| |
Building Materials from Scratch | |
| |
| |
Turning Up the Noise! | |
| |
| |
Clouds, Clouds in the Sky | |
| |
| |
Wood and Marble | |
| |
| |
Using Noise to Move Things Around | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Animating Clouds | |
| |
| |
| |
Rendering Strata | |
| |
| |
What's Next? | |
| |
| |
| |
Why Does It Always Need to Look Real? | |
| |
| |
Just Like a Television Cartoon | |
| |
| |
Outline Rendering | |
| |
| |
Other Outlining Ideas | |
| |
| |
Toon Shading | |
| |
| |
Real-Time Hatching | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Depth-Based Outline | |
| |
| |
| |
Silhouette and Toon Shading | |
| |
| |
What's Next? | |
| |
| |
| |
Advanced Topics | |
| |
| |
| |
Watch Out for That Morning Fog | |
| |
| |
The Basics of Fog | |
| |
| |
Hardware Fog | |
| |
| |
Not Just Your Everyday Fog | |
| |
| |
Giving Your Fog a Little Depth | |
| |
| |
Rendering the Atmosphere | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Round Fog | |
| |
| |
What's Next? | |
| |
| |
| |
Moving Objects Around | |
| |
| |
Light, Camera, Action! | |
| |
| |
Object Metamorphosis | |
| |
| |
Of Skin and Bones | |
| |
| |
It's Your Turn! | |
| |
| |
What's Next? | |
| |
| |
| |
Advanced Lighting | |
| |
| |
Outdoor Scene Lighting | |
| |
| |
Some General Approaches | |
| |
| |
Hemisphere Lighting Model | |
| |
| |
Polynomial Texture Maps | |
| |
| |
Combining BRDF and Bumpmapping | |
| |
| |
Building the Shader | |
| |
| |
Spherical Harmonics | |
| |
| |
The Basic Idea | |
| |
| |
Lighting with Spherical Harmonics | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Per-Pixel Spherical Harmonics | |
| |
| |
What's Next? | |
| |
| |
| |
Shadowing | |
| |
| |
The Basics of Shadows | |
| |
| |
Shadow Mapping | |
| |
| |
Shadow Volumes | |
| |
| |
Taking Advantage of the Hardware | |
| |
| |
It's Your Turn! | |
| |
| |
| |
Soft Shadow Mapping | |
| |
| |
What's Next? | |
| |
| |
| |
Geometry Tricks | |
| |
| |
Level of Detail | |
| |
| |
Static LOD | |
| |
| |
Progressive LOD | |
| |
| |
Re-Creating Lost Details | |
| |
| |
Displacement Mapping | |
| |
| |
It's Your Turn! | |
| |
| |
Summary | |
| |
| |
What's Next? | |
| |
| |
| |
Appendixes | |
| |
| |
| |
High-Level Shader Language Reference | |
| |
| |
Data Types | |
| |
| |
Scalar Types | |
| |
| |
Vector Types | |
| |
| |
Matrix Types | |
| |
| |
Structure Types | |
| |
| |
Predefined Types | |
| |
| |
Typecasts | |
| |
| |
Variables | |
| |
| |
Statements | |
| |
| |
Expressions | |
| |
| |
Functions | |
| |
| |
User-Defined Functions | |
| |
| |
Built-In Functions | |
| |
| |
| |
RenderMonkey Version 1.5 User Manual | |
| |
| |
Installation | |
| |
| |
Requirements | |
| |
| |
Installing RenderMonkey | |
| |
| |
Using RenderMonkey | |
| |
| |
Application Toolbar | |
| |
| |
Application Menu | |
| |
| |
Workspace View | |
| |
| |
Application Preferences | |
| |
| |
Modules | |
| |
| |
Where Do We Go from Here? | |
| |
| |
| |
What's on the CD | |
| |
| |
Source Code | |
| |
| |
RenderMonkey | |
| |
| |
High Resolution Illustrations | |
| |
| |
DirectX 9.0 SDK | |
| |
| |
NVIDIA Texture Library | |
| |
| |
NVIDIA Photoshop Plug-In | |
| |
| |
| |
Exercise Solutions | |
| |
| |
| |
Shader Library | |
| |
| |
Basic Components | |
| |
| |
Object Transformation and Projection | |
| |
| |
Basic Texturing | |
| |
| |
Color Modulation | |
| |
| |
Depth Encoding and Decoding | |
| |
| |
Screen Effects | |
| |
| |
Rendering to a Full Screen Quad | |
| |
| |
Color Matrix | |
| |
| |
Basic Filtering Pixel Shader | |
| |
| |
Box Blur Filter | |
| |
| |
Gauss Blur Filter | |
| |
| |
Edge Detection Filter | |
| |
| |
Lighting | |
| |
| |
Diffuse Lighting | |
| |
| |
Specular Lighting | |
| |
| |
Tangent Space Lighting | |
| |
| |
Per-Pixel Bumpmapping | |
| |
| |
Polynomial Texture Mapping | |
| |
| |
Spherical Harmonics | |
| |
| |
Reflection and Refraction | |
| |
| |
Reflection | |
| |
| |
Refraction | |
| |
| |
Materials | |
| |
| |
Velvet | |
| |
| |
Oren-Nayer Lighting | |
| |
| |
Basic Perlin Noise | |
| |
| |
Marble and Wood Noise Materials | |
| |
| |
Index | |