You are on page 1of 33

Computer Graphics

Using Direct 3D
Basics
Outline
• Vectors for Direct3D Graphics

• Transformations and Matrices

• Direct3D 9.0 Rendering Pipeline


(The story of a pixel)

2
Outline
• Vectors for Direct3D Graphics

• Transformations and Matrices

• Direct3D 9.0 Rendering Pipeline


(The story of a pixel)

3
Vectors
• Left-handed Coordinate System
• Vector addition and subtraction
• Dot product (Why needed ?)
• Cross product (Why needed ?)
• Magnitude
• Normalization

4
D3DVECTOR Type

5
D3DXVECTOR

6
D3DXVECTOR (Cont.)

7
D3DXVECTOR (Cont.)

8
D3DXVECTOR (Cont.)
• Direct3D provides utility functions
for vectors such as D3DXVec3Length,
D3DXVec3Normalize, D3DXVec3Dot,
D3DXVec3Cross

• Direct3D also provides


D3DXVECTOR2 and D3DXVECTOR4
types to represent 2-D and 4-
D vectors. 9
Outline
• Vectors for Direct3D Graphics

• Transformations and Matrices

• Direct3D 9.0 Rendering Pipeline


(The story of a pixel)

10
Transformations
• The rendering technique used by
Direct3D depends on “projecting” 3D
objects onto “image plane”.

11
Transformations (Cont.)
• This needs 3 transformations:
– Transforming object points from local to
world coordinate system (World
Transformation)

– Transforming object points from world


coordinates to camera-relative
coordinates (Camera Transformation)

12
Transformations (Cont.)
• This needs 3 transformations:
– Transforming object points 3D camera
coordinate system to 2D image coordinate
system (Projection Transformation)

• In this session, we will focus on


world transformation.

13
Transformations (Cont.)
• Many transformations (e.g. rotation,
scaling, translation, skew) can be
represented by a set of linear
equations
• x` = a0x + b0y + c0z + d0
• y` = a1x + b1y + c1z + d1
• z` = a2x + b2y + c2z + d2

14
Transformations (Cont.)
• This set can be represented by a single
matrix equation
[x` y` z` 1] =
a 0 a 1 a2 a3
[x y z 1][ b0 b1 b2 b3 ]
c0 c1 c2 c3
d0 d1 d2 d3

15
Transformations (Cont.)
• Example: Translation +3 along x-axis
[x` y` z` 1] =
1000
[x y z 1][ 0 1 0 0 ]
0010
3001

16
Transformations (Cont.)
• Matrix representation allows for easy
combination of transformations:
– xAB = x(AB) = (xA)B
• Applying the transformation AB is
equivalent to applying A then B
• Transformations are combined by
multiplying corresponding matrices

17
Transformations (Cont.)
• More on transformations and
transformation matrices will be
studied in the lectures.

18
D3DMATRIX

19
D3DXMATRIX
• D3DXMATRIX extends D3DMATRIX
providing access functions and
overloaded operators.

20
D3DXMATRIX
• There are utility functions to perform common
matrix operations such as D3DXMatrixIdentity,
D3DXmatrixTranspose and D3DXMatrixInverse

• There are also functions to construct common


transformation matrices such as
D3DXMatrixTranslation, D3DXMatrixRotationX
and D3DXMatrixScaling

21
D3DXMATRIX
• D3DXTransformCoord applies a
transformation matrix to a D3DXVector

• D3DXTransformNormal applies a
transformation matrix to a D3DXVector
without the 4th row. Useful when the vector
represents a direction rather than a
location (e.g. normal vector) (Why ?)

22
Mid-way Summary
• 3D Graphics use vectors and vector
operations.
• Transformations of vectors can be
represented by matrices.
• D3DXVECTOR and D3DXMATRIX
classes and associated functions
provide a handy matrix toolset.

23
Outline
• Vectors for Direct3D Graphics

• Transformations and Matrices

• Direct3D 9.0 Rendering Pipeline


(The story of a pixel)

24
Why study the pipeline ??

25
Direct3D 9.0 Pipeline

[Image from MSDN]

26
Direct3D 9.0 Pipeline
(Cont.)
• Vertex Data
– Untransformed model vertices stored in
memory buffers [Vertex Buffer]
• Primitive Data
– Geometric primitives (lines, triangles,
polygons ... etc) refer to vertices using
indices [Index Buffers]

27
Direct3D 9.0 Pipeline
(Cont.)
• Tessellation
– Extract vertices from higher-order
primitives
• Vertex Processing
– Transformation
– Per-vertex Lighting

28
Direct3D 9.0 Pipeline
(Cont.)
• Geometry Processing
– Clipping
– Backface Culling
– Rasterization
• Pixel Processing
– Given geometry and texture data,
determine final pixel color (final for the
primitive not the image)

29
Direct3D 9.0 Pipeline
(Cont.)
• Pixel Rendering
– Determine final pixel color to be output
to the image plane (rendering target)
• Object occlusion (Depth test)
• Blending
• Stencil test, Alpha test

30
Direct3D 9.0 Pipeline
(Cont.)
• This was the fixed rendering pipeline

• The programmable rendering pipeline


allows you to override vertex and pixel
processing stages using vertex and
pixel shaders

31
Summary
• We have overviewed the DirectX pipeline and its
stages.

• Meanwhile we encountered important terms such


as vertex, pixel, primitive, texture, light,
shaders.

• Also, we have got insight on an important stage in


the pipeline which is vertex transformation.

32
Any Questions ??

33

You might also like