Upload
elaine
View
49
Download
0
Embed Size (px)
DESCRIPTION
Status – Week 227. Victor Moya. Summary. How to lose a week. Rasterization. Rasterization. What is the problem with w? If w is 0 (vertex in the near plane) then x/w and y/w are infinite! You can not draw something in the infinite ... - PowerPoint PPT Presentation
Citation preview
Status – Week Status – Week 227227
Victor MoyaVictor Moya
SummarySummary
How to lose a week.How to lose a week. Rasterization.Rasterization.
RasterizationRasterization
What is the problem with w?What is the problem with w? If w is 0 (vertex in the near plane) If w is 0 (vertex in the near plane)
then x/w and y/w are infinite!then x/w and y/w are infinite! You can not draw something in the You can not draw something in the
infinite ...infinite ... If w is < 0 then weird things happen. If w is < 0 then weird things happen.
Wrapping around the infinite.Wrapping around the infinite.
RasterizationRasterization
RasterizationRasterization
A vertex with w = 0 and no clipping
RasterizationRasterization
A vertex with w = 0 and clipping
RasterizationRasterization
RasterizationRasterization
A vertex with w < 0 and no clipping
RasterizationRasterization
Vertex with w < 0 and clipping
RasterizationRasterization
That is why clipping should be That is why clipping should be mandatory ...mandatory ...
However using 2DH rasterization However using 2DH rasterization (Olano & Greer, McCool)(Olano & Greer, McCool) We don’t need to divide by w the We don’t need to divide by w the
vertices.vertices. The triangle three edge equations can The triangle three edge equations can
be derived without calculating x/w and be derived without calculating x/w and y/w for the vertex.y/w for the vertex.
RasterizationRasterization
That’s fine.That’s fine. But we still have a problem ...But we still have a problem ...
RasterizationRasterization
Where do we start drawing?Where do we start drawing? Test all pixels => Pixel PlanesTest all pixels => Pixel Planes
Evaluate edge equations at all pixels in parallel Evaluate edge equations at all pixels in parallel (usually using tiles).(usually using tiles).
Search a region or pixel inside the triangle.Search a region or pixel inside the triangle. Recursive approach.Recursive approach. McCool paper: hierarchical rasterization with McCool paper: hierarchical rasterization with
Hilber curves.Hilber curves. Calculate a start point.Calculate a start point.
But we can’t use x/w and y/w without clipping!!!But we can’t use x/w and y/w without clipping!!!
RasterizationRasterization
Test all pixels:Test all pixels: Tiled architecture with evaluators at Tiled architecture with evaluators at
all pixels.all pixels. Only uses by Pixel Planes.Only uses by Pixel Planes. Are we not going to use this Are we not going to use this
approach?approach? It seems too much hardware ...It seems too much hardware ... Is applicable to current GPUs?Is applicable to current GPUs?
RasterizationRasterization
Recursive search:Recursive search: We could try to implement McCool We could try to implement McCool
algorithm or another similar.algorithm or another similar. But it takes log(N, M) cycles to But it takes log(N, M) cycles to
generate the first fragment.generate the first fragment. And requires to a stack of saved And requires to a stack of saved
states (McCool actually walks back, states (McCool actually walks back, expending cycles in the process).expending cycles in the process).
RasterizationRasterization
But performs trivial clip reject at first level But performs trivial clip reject at first level evaluation.evaluation.
Admits early HZ rejection of large triangle Admits early HZ rejection of large triangle regions.regions.
Requires multiple HZ levels.Requires multiple HZ levels. And you could reuse the multiple evaluators And you could reuse the multiple evaluators
of stamp based rasterizer for a faster of stamp based rasterizer for a faster search.search.
Study the cost in hardware and time.Study the cost in hardware and time. To be done?To be done?
RasterizarRasterizar
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
RasterizationRasterization
Calculate a start point:Calculate a start point: You can actually calculate x/w and y/w and You can actually calculate x/w and y/w and
pick a vertex as start point.pick a vertex as start point. But only if w > 0.But only if w > 0. What happens with if w <= 0?What happens with if w <= 0? It seems there is always either It seems there is always either
at least one of the three vertices inside the at least one of the three vertices inside the viewport (w > 0) or viewport (w > 0) or
at least one viewport corner inside the projected at least one viewport corner inside the projected triangle.triangle.
Because the projected triangle should still be Because the projected triangle should still be a convex polygon (or so I hope).a convex polygon (or so I hope).
RasterizationRasterization
RasterizationRasterization
So the start point can be either:So the start point can be either: A projected vertex.A projected vertex. A corner of the viewport.A corner of the viewport.
Algorithm:Algorithm: If any vertex has w > 0 choose a vertex as If any vertex has w > 0 choose a vertex as
start point.start point. If all vertex have w <= 0 evaluate the edge If all vertex have w <= 0 evaluate the edge
equations at the four viewport corners.equations at the four viewport corners. If any corner is inside choose a corner as start If any corner is inside choose a corner as start
point.point.
RasterizationRasterization
Pro:Pro: Seems to work ... unless I have Seems to work ... unless I have
missed something.missed something. Cons:Cons:
Traversal algorithm now must take Traversal algorithm now must take into account that it can start into account that it can start anywhere.anywhere.
Increases saved state.Increases saved state.
RasterizationRasterization Hardware cost:Hardware cost:
3 x tests : w <= 0 (or w > 0)3 x tests : w <= 0 (or w > 0) 3 x 2 x divs : divide by w: x/w, y/w3 x 2 x divs : divide by w: x/w, y/w 3 x 2 comps : for choosing a vertex3 x 2 comps : for choosing a vertex muxs additional logic for choosing a vertex.muxs additional logic for choosing a vertex. 4 x 3 evaluators: e = ax + by + c: 4 x 3 evaluators: e = ax + by + c:
2 x muls2 x muls 2 x adds2 x adds
4 x 3 tests: e >= 0 4 x 3 tests: e >= 0 muxs and additional logic for choosing a corner.muxs and additional logic for choosing a corner. mux and additional logic for choosing between mux and additional logic for choosing between
vertices or corners.vertices or corners.
RasterizationRasterization
Traversal cost for any start Traversal cost for any start point/direction:point/direction: 4 saved states:4 saved states:
3 edge equations3 edge equations– 3 values per edge equation.3 values per edge equation.
Additional edge equations for other Additional edge equations for other parameters?parameters?
– Z/w?Z/w?
Tiled traversal:Tiled traversal: 4 additional tile save states.4 additional tile save states.
RasterizationRasterization
Evaluators:Evaluators: No stamp:No stamp:
– at least 4 x 3 evaluators (up, down, right, left)at least 4 x 3 evaluators (up, down, right, left)– at least 4 x 3 tests e >= 0.at least 4 x 3 tests e >= 0.
Stamped (NxM):Stamped (NxM):– at least (NxM + 4) x 3 evaluators (NxM at least (NxM + 4) x 3 evaluators (NxM
current, up, down, right, left).current, up, down, right, left).– at least (NxM + 4) x 3 tests e >= 0.at least (NxM + 4) x 3 tests e >= 0.