[ Home | Direct3D Graphics Pipeline | Preliminary Draft ]

Preliminary Draft

kick it on GameDevKicks.com

2006.36

This is an evolving snapshot of the DirectX 9 version of my book. When the date above changes (year.week), then new manuscript or source code files have been placed here.

See my blog for an RSS feed you can use to monitor when this snapshot is updated.

Change Log


Sample Code: (Note: extracting files)
C++ Wizard (328 KB)
C++ Samples (7.93 MB)
.NET Samples (825 KB)
Pipeline Poster (8.1 and 9.0)

Front Matter & Table of Contents
Part I: Preliminaries
01 Introduction 1.1 Overview, 1.2 Display Technology, 1.3 Gamma Correction, 1.4 Color, 1.5 Basic Mathematics, 1.6 Homogeneous Coordinates, 1.7 Vectors, 1.8 Coordinate Systems, 1.9 Matrices, 1.10 Aliasing, 1.11 Style Conventions, 1.12 COM Objects, 1.13 Code Techniques, 1.14 Previous Versions of Direct3D, 1.15 Further Reading
02 Direct3D 2.1 Overview, 2.2 A Minimal Direct3D Application, 2.3 Direct3D Architecture, 2.4 Direct3D HRESULTs, 2.5 Windowed and Exclusive mode, 2.6 Device Types, 2.7 Resources, 2.8 IDirect3D9, 2.9 Selecting a Device, 2.10 Determining Available Resource Memory, 2.11 Device Capabilities, 2.12 Identifying a Particular Device, 2.13 Creating the Device, 2.14 Multiple Monitors, 2.15 Adapter Group Devices
03 Direct3D Devices 3.1 Overview, 3.2 IDirect3DDevice9, 3.3 Capabilities, 3.4 Resources, 3.5 IDirect3DResource9, 3.6 Destroying a Device, 3.7 Miscellaneous Properties, 3.8 Device Queries, 3.9 Device States, 3.10 Device State Blocks, 3.11 Pure Devices
04 2D Applications 4.1 Overview, 4.2 Pixel Surfaces, 4.3 Accessing Surface Pixel Data, 4.4 Using GDI On A Surface, 4.5 Swap Chains, 4.6 Presentation, 4.7 Lost Devices and Reset, 4.8 Video Scan Out, 4.9 2D Pixel Copies, 4.10 Filling Rectangles, 4.11 Window Messages, 4.12 rt_2DApp Sample Application
Part II: Geometry Processing
05 Modeling 5.1 Overview, 5.2 Modeling Scenes, 5.3 Visibility, 5.4 Render Targets, 5.5 Primitive Types, 5.6 Vertex Data, 5.7 Flexible Vertex Formats, 5.8 Vertex Declarations, 5.9 Vertex Buffers, 5.10 Indexed Primitives, 5.11 The Vertex Shader, 5.12 Drawing Primitives, 5.13 Vertex Data Streams, 5.14 Capabilities for Vertex Assembly, 5.15 Enhanced Primitives, 5.16 Higher Order Surfaces, 5.17 Object Approximations, 5.18 Further Reading
06 Vertex Transformations 6.1 Overview, 6.2 Vertex Processing, 6.3 Transformation Matrices, 6.4 Order of Transformations, 6.5 World Transformation, 6.6 Transformation Hierarchy, 6.7 Vertex Blending, 6.8 Vertex Fog, 6.9 Face Culling, 6.10 Clipping, 6.11 Screen Space and the Viewport, 6.12 rt_VertexBlend Sample Application, 6.13 Further Reading
07 Viewing and Projection 7.1 Overview, 7.2 Viewing Through a Virtual Camera, 7.3 Planar Geometric Projections, 7.4 Projection Transformation, 7.5 Further Reading, 7.6 rt_Views Sample Application
08 Lighting and Materials 8.1 Overview, 8.2 Transformed Vertices, 8.3 Lighting Calculations, 8.4 Surface Material Properties, 8.5 Light Sources, 8.6 The Illumination Model, 8.7 rt_Lighting Sample Application
09 Vertex Shaders 9.1 Overview, 9.2 Vertex Shader Architecture, 9.3 Vertex Shader 1.1 Architecture, 9.4 Vertex Shader 2.0 Architecture, 9.5 Vertex Shader 3.0 Architecture, 9.7 Shader Instruction Syntax, 9.8 Software Vertex Processing, 9.10 Vertex Shader 1.1 Instructions, 9.11 Vertex Shader 2.0 Instructions, 9.12 Vertex Shader 2.x Instructions, 9.13 Vertex Shader 3.0 Instructions, 9.14 Manipulating Shaders, 9.15 Drawing Multiple Instances, 9.16 Shader Design, 9.17 Common Computations, 9.18 Fixed-Function Processing, 9.19 Beyond Fixed-Function Processing, 9.20 rt_VertexShader Sample Application, 9.21 Vertex Shader SDK Samples
Updated for DirectX 9.0c
Awaiting Update
Part III: Pixel Processing
10 Rasterization and Shading 10.1 Overview, 10.2 Shading and Filling, 10.3 Scanline Rendering, 10.4 Source Pixel Generation, 10.5 Source Pixel Data, 10.6 rt_Rasterize Sample Application
11 Basic Texturing 11.1 Overview, 11.2 Direct3D Multitexture Architecture, 11.3 Texture Resources, 11.4 Texture Formats, 11.5 Texture Coordinate Processing, 11.6 Texture Sampling, 11.7 Texture Stage Processing, 11.8 Examples, 11.9 Specular Addition, 11.10 Textured Primitives, 11.11 Further Reading, 11.12 Sample Applications
12. Advanced Texturing 12.1 Overview, 12.2 Multiple Texture Stages, 12.3 Environment Mapping, 12.4 Bump Mapping Techniques, 12.5 Texturing Sample Applications
13 Pixel Shaders 13.1 Overview, 13.2 Pixel Shader Architecture, 13.3 Pixel Shader Architecture Versions, 13.4 Instruction Set, 13.5 PS 2.0 Instructions, 13.6 PS 2.x Instructions, 13.7 PS 3.0 Instructions, 13.8 Manipulating Pixel Shaders, 13.9 Texture Stage States, 13.10 Examples, 13.11 Debugging a Pixel Shader
14 Frame Buffer 14.1 Overview, 14.2 Fog Blending, 14.3 Alpha Test, 14.4 The Z Buffer and Visibility, 14.5 Stencil Test, 14.6 Alpha Blending, 14.7 Dithering, 14.8 Multisampling, 14.9 Writing to the Render Target, 14.10 rt_FrameBuffer Sample Application
Part IV: The D3DX Library
15 D3DX Utility Library 15.1 Overview, 15.2 Headers and Libraries, 15.3 Data Types, 15.4 Helper Objects, 15.5 Meshes, 15.6 Resources, 15.7 Resource Image Information, 15.8 Resource Requirements, 15.9 Format Conversion, 15.10 Creating Texture Resources, 15.11 Loading Resources, 15.12 Saving Resources, 15.13 Filling Textures, 15.14 Filtering Textures, 15.15 Creating Normal Maps, 15.16 Miscellaneous, 15.17 Error Handling, 15.18 ID3DXBuffer, 15.19 Vertex Declarations, 15.20 Intersection Testing, 15.21 Shader Assembly, 15.22 Further Reading
16 D3DX Concrete Types 16.1 Overview, 16.2 Colors, 16.3 Vectors, 16.4 Matrices, 16.5 Planes, 16.6 Quaternions
17 D3DX Helper Objects 17.1 Overview, 17.2 Matrix Stacks, 17.3 Fonts, 17.4 Sprites, 17.5 Surface Rendering, 17.6 Environment Map Rendering
18. High Level Shaders and Effects 18.1 Overview, 18.2 Visual Effects, 18.3 Sample Applications
19 D3DX Mesh Objects 19.1 Overview, 19.2 Use of const Qualifiers, 19.3 Triangle Adjacencies, 19.4 Vertex and Triangle Remapping, 19.5 Base Mesh, 19.6 Mesh, 19.7 Progressive Mesh, 19.8 Simplification Mesh, 19.9 Skin Mesh, 19.10 rt_D3DXSphere Sample Application, 19.11 SDK Samples, 19.12 Further Reading
20. D3DX Animation Objects 20.1 Overview
Part V: The Application
21 X Files 21.1 Overview, 21.1 X File Structure, 21.3 Text Encoding, 21.4 Binary Encoding, 21.5 Predefined Templates, 21.6 Headers, Libraries and Interfaces, 21.7 IDirectXFile, 21.8 IDirectXFileEnumObject, 21.9 IDirectXFileObject, 21.10 IDirectXFileData, 21.11 IDirectXFileBinary, 21.12 IDirectXFileDataReference, 21.13 IDirectXFileSaveObject, 21.14 Reading Scene Data, 21.15 Writing Scene Data, 21.16 Exporting and Conversion, 21.17 Example X Files, 21.18 rt_MakeScene Sample Program
22 Debugging 22.1 Overview, 22.2 Version Control Systems, 22.3 C++ Debugging, 22.4 Debugging Windows Applications, 22.5 Debugging With Visual C++ 6, 22.6 Debugging With Direct3D, 22.7 DirectX Diagnostic Tool, 22.8 DirectX Control Panel Applet, 22.9 Getting Help, 22.10 Filing Bug Reports
23. Performance 23.1 Overview, 23.2 Pipeline Bottlenecks, 23.3 Optimization Techniques, 23.4 Strategies, 23.5 Image Compositing, 23.6 Vertex Buffers, 23.7 Texture Map Size, 23.8 Scalable Shading, 23.9 Model Simplification, 23.10 Alpha Test, 23.11 Stencil Test, 23.12 Z Buffer Test, 23.13 Guard Band Clip
24 Installation and Setup 24.1 Overview, 24.2 Determining the DirectX Version, 24.3 DirectSetup, 24.4 Windows Installer, 24.5 Logo Requirements, 24.6 AutoRun Enabled Installations, 24.7 Testing Installation Programs, 24.8 Sample Program
Part VI: Appendices
A. Guided Tour of the SDK
B. D3DFrame
C. Shader Tokens
Index

Change Log

2006.35: No updates to the manuscript. Added a C++ sample project wizard for VS.NET 2003.

2006.35: No updates to the manuscript. Updated the sample code to remove "experimental" projects that aren't up to the level of being a sample. Split the C++ and .NET code into separate installers. Fixed some defects in the DirectX installer.

2006.33: Significant updates to sample code and its installer were made. The installer upgrades from drop 2006.30 and can update the DirectX runtime components from the internet. All samples should now compile without errors (although still a few warnings) and are released "as is". The samples have not been thoroughly tested. If you installed drop 2006.30, it should be upgraded to drop 2006.33 automatically during the installation process. Minor corrections made throughout the manuscript based on reader feedback.

2006.30: Significant updates to Chapter 9, corrections and enhancements throughout the remainder of the manuscript. Samples packaged as an installer.

2006.25: Initial drop.

Note: Extracting Files

If you don't like installers for software source, simply download the MSI file and store it on your hard drive somewhere. You can extract all the files out of a Windows Installer MSI file package with the command 'msiexec /a %MSI%'. This will create an administrative image, expanding the files out of the CAB in the MSI onto your drive. Windows Installer will prompt you for the location to receive the extracted files. This does not install the package on your machine, it just extracts the files.