19
Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization Group Group computer graphics & computer graphics & visualization visualization GameFX GameFX C# / DirectX 2005 C# / DirectX 2005 The Rendering Pipeline The Rendering Pipeline

GameFX C# / DirectX 2005

  • Upload
    aliya

  • View
    88

  • Download
    0

Embed Size (px)

DESCRIPTION

GameFX C# / DirectX 2005. The Rendering Pipeline. The Rendering Pipeline …. … what an „end user“ sees. The Rendering Pipeline …. … in pictures. User / Driver. Vertex Stage. Pixel Stage. Texture 0. Texture 1. Texture 2. Texture 3. Overview. Transform & Lighting. Rasterizer. - PowerPoint PPT Presentation

Citation preview

Page 1: GameFX C# / DirectX 2005

Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupJens Krüger & Polina Kondratieva – Computer Graphics and Visualization Group

computer graphics & computer graphics & visualizationvisualization

GameFXGameFXC# / DirectX 2005C# / DirectX 2005

The Rendering PipelineThe Rendering Pipeline

Page 2: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

… … what an „end user“ sees.what an „end user“ sees.

The Rendering Pipeline …The Rendering Pipeline …

Page 3: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

The Rendering Pipeline …The Rendering Pipeline …

… … in picturesin pictures

Page 4: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Pixel Stage

Vertex Stage

User / Driver

OverviewOverview

Transform & LightingTransform & Lighting Rasterizer

TexturingTexturingBlending/Ops

Texture 3Texture 2Texture 1Texture 0

Page 5: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Rendering pipelineRendering pipeline

Geometrysubsystem

Rastersubsystem

Objects in3D world

Colorimage

2D primitives

Page 6: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Rendering pipelineRendering pipeline

Geometrysubsystem

Rastersubsystem

Objects in3D world

Colorimage

2D primitives

2D

Objectcoordinates

Worldcoordinates

Eyecoordinates

Modellingtransform

Viewingtransform

Normalizingtransform

Normalized(Clip-)coord.

clipping

affin

affin

Model-View-Transformation

Page 7: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

TransformationsTransformations

- A transformation is like a function of a pointA transformation is like a function of a point

- Modeling:Modeling:

- Define objects in „convenient“ coordinate systemsDefine objects in „convenient“ coordinate systems

- Multiply-instantiated geometryMultiply-instantiated geometry

- Hierarchically defined linked figuresHierarchically defined linked figures

- Viewing:Viewing:

- Window systemsWindow systems

- Virtual cameraVirtual camera

- Perspective transformationsPerspective transformations

)(' PTP

Page 8: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Point representationPoint representation

- Represent as row or column vectorRepresent as row or column vector

- Affects the kind of matrices we can multiply withAffects the kind of matrices we can multiply with

y

xP

yxP

Page 9: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Transformation representationTransformation representation

- Represent 2D transformations by a 2x2 matrixRepresent 2D transformations by a 2x2 matrix

- If the point is a column vectorIf the point is a column vector

- If the point is a row vectorIf the point is a row vector

dc

ba

y

x

dc

ba

y

x

Mpp

'

'

'

db

cayxyx

pMp T

''

'

Page 10: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Linear transformationsLinear transformations

- ScalingScaling

- ReflectionReflection

y

x

s

syxP0

0

sx = sy uniform scaling

S

10

01yxP

Page 11: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Linear transformationsLinear transformations

- ShearingShearing

- Rotation around origin by Rotation around origin by

1

01

ayxP

a1

cossin

sincosyxP

R(90°)

Page 12: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Affine transformationsAffine transformations

- All linear transformations can be written as matrix All linear transformations can be written as matrix multiplicationmultiplication

- What about translation ?What about translation ?

- We want to writeWe want to write

y

x

t

t

y

xP T t

11

010

001

1 yx

yx

tytx

tt

yxP

homogeneoushomogeneous

coordinatescoordinates

Page 13: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

General Camera SetupGeneral Camera Setup

- Look at:Look at:- PositionPosition

- OrientationOrientation

- Frustum:Frustum:- Camera parametersCamera parameters

- Viewport:Viewport:- 2D coordinate system2D coordinate system

Look atLook atLook atLook at

FrustumFrustumFrustumFrustum

ViewportViewportViewportViewport

Page 14: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Camera look atCamera look at

- Move camera C to originMove camera C to originTranslate by –CTranslate by –C

- Build orthonormal frameBuild orthonormal frame„right“„right“ R=DxUR=DxU„zenith“„zenith“ U=RxDU=RxD

- Adjust orientationAdjust orientationRotation [R,U,D]Rotation [R,U,D][X,Y,-Z][X,Y,-Z]

Page 15: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

FrustumFrustum

nf

nf

bB

tT

nb

nt

)tan(

)tan(

2

2

0100

00

00

00

2)(

2

2

nffn

nfnfbtbt

btn

lrlr

lrn

TT

tt

BB

bb

-f-f

-n-n

-z-z

yy

Page 16: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Pixel Stage

Vertex Stage

User / Driver

OverviewOverview

Transform & LightingTransform & Lighting Rasterizer

TexturingTexturingBlending/Ops

Texture 3Texture 2Texture 1Texture 0

Page 17: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Bresenham (Line Drawing)Bresenham (Line Drawing)

pp xxmyy

myy

mxxmyxxmyy

xxmyy

kk

ppppk

ppk

1

1 1

Page 18: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Getting to Bresenham …Getting to Bresenham …/*********************************

* Input:

* xP: x-value of the startpoint

* yP: y-value of the startpoint

* xQ: x-value of the endpoint

* yQ: y-value of the endpoint

*********************************/

function drawLine(int xP, int yP, int xQ, int yQ) {

x = xP;

y = yP;

d = 0;

m = (yQ - yP) / (xQ - xP)

while(true) {

// put the pixel on the screen

putPixel(x, y);

if(x == xQ)

break;

x++;

d += m;

if(d > 0.5) {

y++;

d--;

}

}

}

/*********************************

* Input:

* xP: x-value of the startpoint

* yP: y-value of the startpoint

* xQ: x-value of the endpoint

* yQ: y-value of the endpoint

*********************************/

function drawLine(int xP, int yP, int xQ, int yQ) {

x = xP;

y = yP;

d = 0;

m = (yQ - yP) / (xQ - xP)

while(true) {

// put the pixel on the screen

putPixel(x, y);

if(x == xQ)

break;

x++;

d += m;

if(d > 0.5) {

y++;

d--;

}

}

}

Problem:Problem:• still floating point arithmeticstill floating point arithmetic

Obersavtion:Obersavtion:• m is rationalm is rational• d is rationald is rational

Page 19: GameFX C# / DirectX 2005

computer graphics & computer graphics & visualizationvisualization

Jens Krüger & Polina Kondratieva – Computer Graphics and Jens Krüger & Polina Kondratieva – Computer Graphics and Visualization GroupVisualization Group

Bresenham …Bresenham …

function drawLine(int xP, int yP, int xQ, int yQ) {

x = xP;

y = yP;

D = 0;

H = xQ - xP;

c = 2 * H;

M = 2 * (yQ - yP);

while(true) {

putPixel(x, y);

if(x == xQ) break;

x++;

D += M;

if(D > H) {

y++;

D -= c;

}

}

}

function drawLine(int xP, int yP, int xQ, int yQ) {

x = xP;

y = yP;

D = 0;

H = xQ - xP;

c = 2 * H;

M = 2 * (yQ - yP);

while(true) {

putPixel(x, y);

if(x == xQ) break;

x++;

D += M;

if(D > H) {

y++;

D -= c;

}

}

}

Introduce the following Introduce the following integerinteger variables: variables:

•   

•   

•   

•   

pq xxc 2:

pq yymcM 2:

dcD :

pq xxcH 5,0: