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
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 …
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
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
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
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
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
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
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
''
'
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
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°)
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
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
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]
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
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
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
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
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:
Top Related