|
Preliminary Draft
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
|
|
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 |
|
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.
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.
|