![Page 1: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/1.jpg)
Implementation strategies
Implementation is a black box: whose inputs are
set of vertices and set of primitives.
Any implementation program must contain
atleast two loops that iterate over these sets .
The two strategies are
• image oriented approach
• object oriented approach
![Page 2: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/2.jpg)
Object oriented approach
In object oriented approach, the outer loop is over
objects.
For (each_object) render(object);
In past with old memory device -Major limitations of this
approach were:
• large amount of memory required
• high cost of processing each object independently
Today with new memory device this object – based
system is fast and relatively inexpensive.
• The main limitation is they cannot handle most global
calculations like Shading effects and hidden surface
removal .
![Page 3: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/3.jpg)
Image-Oriented approach
Image-Oriented approach loops over pixels or rows of
pixels called scanlines, that constitute the framebuffer.
For(each_pixel) assign_a_color(pixel);
For each pixel, we work backward, determining which
geometric primitives can contribute to its color.
The advantages are :
• we need only limited display memory at any time
• the refresh rate
• the order required to refresh
The main disadvantage is that unless we first build a
data structure from the geometric data, we will not know
which primitive affects which pixel.
![Page 4: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/4.jpg)
Four Major Tasks
1. Modeling
2. Geometry processing
3. Rasterization
4. Fragment Processing
Modelling:
• The results of modelling process are the sets of
vertices that specify a group of geometric objects
supported by the rest of the system.
• The modeler may perform other tasks like clipping.
![Page 5: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/5.jpg)
Four Major Tasks contd..
Geometry Processing:
The goals of the geometry processor are
• to determine which geometric objects can
appear on the display.
• to assign shades or colors to the vertices of
theses objects.
Four processes are required:
1. projection
2. primitive assembly
3. clipping
4. shading
![Page 6: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/6.jpg)
Four Major Tasks contd..
Rasterization:
• rasterizer generates fragments with the process called
scan conversion or rasterization.
• The rasterizer starts with vertices in normalized
device coordinates but outputs fragments whose
locations are in uints of display—window coordinates.
Fragment processing:
Fragment processor processes the fragments generated
by the rasterizer in order to perform the following
• texturing
• translucent effects
• anti-aliasing
![Page 7: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/7.jpg)
Clipping
It is the process of deciding which primitives or parts of
primitives fit within the clipping or view volume defined by the
application program.
Line-Segment Clipping:
• the primitives that fit within the specified view volume pass
through the clipper are called accepted primitives.
• Primitives that cannot appear on the display are eliminated
are called rejected or culled primitives.
![Page 8: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/8.jpg)
Cohen -Sutherland Clipping
Algorithm
![Page 9: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/9.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 10: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/10.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 11: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/11.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 12: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/12.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 13: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/13.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 14: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/14.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 15: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/15.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 16: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/16.jpg)
Cohen -Sutherland Clipping Algorithm
![Page 17: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/17.jpg)
Liang-Barsky Clipping
⚫ Depending on the way we express line segments, we can usedifferent approaches for line segment clipping.
⚫ Suppose the end points of line segment are
p1 = [x1,y1]T and p2 = [x2, y2]T
⚫ Line in parametric (matrix) form
p(α)=(1-α)p1+α P
2
⚫ Line as two scalar equations
x(α)=(1-α)x1+α x
2
y(α)=(1-α)y1+α y
2
![Page 18: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/18.jpg)
⚫ α varies from 0 to 1.
P1 P2
⚫ When α value is negative, we can move to other side of P1. When
α value is greater than 1, we will move to other side of P2.
![Page 19: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/19.jpg)
Liang-Barsky Clipping
![Page 20: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/20.jpg)
⚫ Here there are only 2 cases are discussed.
⚫ Case 1 : 1>4 > 3 > 2 > 1>0
Line segment between 3 and 2 need to be retained.
⚫ Case 2: 1>4 > 2 > 3 > 1 >0
Complete line segment need to be removed.
⚫ Number of intersection calculations will be minimized.
⚫ Advantages:
1. Can be easily extended to 3D
2. Using values of , we do not have to use algorithm recursively as with Cohen Sutherland
![Page 21: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/21.jpg)
Liang-Basky Clipping in 3D
⚫ In 3D we need to add one more equation to scalarrepresentation of line
z(α)=(1-α)z1+α z
2
⚫ The major difference between 2D and 3D clipping is, in 2D wewill clip line segment against line of a window. In 3D we will clipline segment against plane of a window.
![Page 22: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/22.jpg)
⚫ Intersection point can be calculated as
a=n⋅ ( po− p1)
n⋅ ( p2− p1)
Where n is the normal to the plane and p0 is a point on the plane.
![Page 23: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/23.jpg)
Clipping in 3D
![Page 24: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/24.jpg)
Polygon clipping
⚫ A polygon is a two-dimensional object with an interior.
⚫ Not as simple as line segment clipping.
⚫ Clipping a line segment yields at most one line segment
⚫ Clipping a polygon can yield multiple polygons
⚫ However, clipping a convex polygon can yield at most one otherpolygon
![Page 25: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/25.jpg)
⚫ One strategy is to replace nonconvex (concave) polygons with aset of triangular polygons (a tessellation)
⚫ Line segment clipper as a black box
![Page 26: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/26.jpg)
⚫ Clipping line segment against top side of the window
⚫ Inputs: two endpoints and ymax
⚫ Clipping against each side of window is independent of
other sides
⚫ Can use four independent clippers in a pipeline
![Page 27: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/27.jpg)
⚫ Pipeline clipping of polygon
⚫ Three dimensions: add front and back clippers
![Page 28: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/28.jpg)
Clipping of other primitives
⚫ Bounding Boxes
⚫ Rather than doing clipping on a complex polygon, we can use an axis-aligned bounding box or extent
⚫ Smallest rectangle aligned with axes that encloses the polygon
⚫ Simple to compute: max and min of x and y
![Page 29: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/29.jpg)
⚫ Can usually determine accept/reject based only on bounding box
reject
accept
requires detailed
clipping
![Page 30: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/30.jpg)
Curves, Surfaces and Text
⚫ For simple curves, we can find intersection points and perform clipping similar to line segments.
⚫ For complex curves, finding how many number of intersections to be calculated is also difficult. So complex curves need to be approximated as line segments and surfaces for clipping.
⚫ For clipping text need to represented either as bit pattern or as any other geometric object.
⚫ Clipping can be done in frame buffer through a technique
called scissoring.
![Page 31: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/31.jpg)
Rasterization
⚫ DDA algorithm – Digital Differential Analyzer
⚫ Simplest scan conversion algorithm for line segments
⚫ In this algorithm represent the line segment in the form of differential equation
dy/dx = m
where m is the slope.
⚫ Suppose we have line segment defined by end points (x1,y1) and (x2,y2). Then slope m can be calculated as
m=y2-y1/x2-x1 = δy/δx
⚫ Assumption : 0<=m<=1
![Page 32: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/32.jpg)
⚫
⚫ The algorithm is based on updating each pixel as we move
from x1 to x2.
⚫ If we are on the line segment, for any change in x equal to δ x,
the corresponding change in y must be
δ y = m δ x
⚫ As we move from x1 to x2, we increase x by 1 each iteration,
thus, we must increase y by
δ y = m.
⚫ Although each x is an integer, each y is not, because m is a
floating point number and we must round it to find the
appropriate pixel. The corresponding pseudocode is
![Page 33: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/33.jpg)
for(ix=x1; ix <= x2; ix++)
{
y+=m;
write_pixel(x, round(y) , line_color);
}
⚫ Where round is a function that rounds a real number to an integer.
⚫ For slopes greater than 1, the roles of x and y need to be swapped. Then the algorithm is
For each y, find the best x
![Page 34: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/34.jpg)
Bresenham’s algorithm
⚫ The DDA algorithm is easy to code but requires floating point addition for each pixel generated.
⚫ Bresenham’s algorithm avoids all floating point calculations.
⚫ Assumption : 0<=m <=1
![Page 35: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/35.jpg)
⚫ Suppose that we are somewhere in the middle of the scanconversion I.e at (i+1/2,j+1/2).
⚫ To identify next pixel we have two options depending on valueof slope they are (i+3/2,j+1/2) and (i+3/2, j+3/2).
⚫ To consider one, we will use d=b-a.
⚫ If d is negative, the line passes closer to the lower pixel, so we
choose the pixel at (i + 3/2, j + ½). otherwise, we choose the
pixel at (i+3/2,j+3/2).
![Page 36: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/36.jpg)
Polygon Rasterization
1. Inside outside testing
a. odd – even test :
odd
even
![Page 37: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/37.jpg)
2. Winding number
⚫ Traversing the edges of the polygon from any starting vertexand going around the edge in a particular direction (whichdirection does not matter) until we reach the starting point.
⚫ The winding number for this point is the number of times it isencircled by the edges of the polygon.
⚫ A point is inside the polygon if its winding number is not zero.
![Page 38: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/38.jpg)
Rasterization of concave polygons
⚫ For rasterization concave polygon need to converted to convexpolygon called tesselation.
⚫ GLU library has tesselator
![Page 39: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/39.jpg)
Fill and Sort
⚫ The basic rule for filling a polygon is, If a point is inside thepolygon, color it with the inside (fill) color.
⚫ This conceptual algorithm indicates that polygon fill is a sortingproblem, where we sort all the pixels in the frame buffer intothose that are inside the polygon and those that are not.
⚫ From this perspective, we have different polygon-fill algorithmsusing different ways of sorting the points.
1. Flood fill
2. Scan line fill
3. odd – even fill
![Page 40: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/40.jpg)
Flood fill
⚫ Here we will consider two colors, foreground color andbackground color.
⚫ We can use foreground color to raster polygon edges usingBresenham’s algorithm.
⚫ Then we need to find an initial point (x, y) inside the polygon
called a seed point then we can look at its neighbors
recursively, coloring them with the foreground color if they are
not edge points.
![Page 41: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/41.jpg)
⚫ The corresponding pseudocode is
![Page 42: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/42.jpg)
Singularities
⚫ Count the intersection of the scanline with the vertex as
either zero or two edge crossings.
⚫ The vertex-scanline intersection must be counted as one
edge crossing.
![Page 43: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/43.jpg)
Hidden Surface Removal
object space and image space approaches:
⚫ In object space approach, consider two polygons, then there are four possibilities.
![Page 44: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/44.jpg)
⚫ Consider k objects, compare them pairwise and render visiblepart.
⚫ This need to be repeated until all objects are compared with allother k-1 objects.
⚫ The complexity of this calculation is O(k2).
⚫ In image space approach consider a ray emanating fromcenter of projection,passes through a pixel and intersects with
any of the objects in consideration.
![Page 45: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/45.jpg)
⚫ Find the intersection closer to center of projection.
⚫ The fundamental operation is intersection of rays with polygon.
⚫ For an n x m display, we have to carry out this operation nmktimes, giving 0(k) complexity.
![Page 46: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/46.jpg)
Sorting and Hidden surface removal
⚫ Any method that involves brute-force comparison of objects bypairs has 0(k2) complexity.
⚫ If we could organize objects by their distances from thecamera, we should be able to come up with a direct method ofrendering them.
1. Scanline algorithms
![Page 47: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/47.jpg)
Y-x algorithm
![Page 48: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/48.jpg)
Back Face Removal
⚫ In back face removal, all back faces of a polygon which are notvisible to user are removed. This process is also known asculling.
⚫ We can see the face of a polygon if the normal, which comesout of the polygon face, is pointed toward the viewer. If theta isthe angle between the normal and the viewer, then the polygonis facing forward if and only if
-90<theta<90
or
cos theta>0
![Page 49: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/49.jpg)
⚫ The other way to check second condition is
n-v>0
⚫ If we assume that the polygon is on a surface
ax+by+cz+d=0
Then depending on sign of c, we can determine whether face of apolygon is back face or front face.
⚫ If the sign of c is positive, then corresponding polygon face is
front face.
⚫ In OpenGL we have a built-in function called glCullFace toeliminate back face of a polygon.
⚫ The algorithm is based on computing the area of the polygon.Consider the polygon with n vertices. Its area is given by
1/2 Σ(yi+1
+yi)(x
i+1-x
i)
⚫ A negative area indicates back face of a polygon.
![Page 50: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/50.jpg)
Z buffer algorithm
⚫ It is the most widely used hidden surface removal algorithm
⚫ Advantages
1. It is easy to implement in both hardware and software
2. It is compatible with all graphics pipeline architectures
⚫ It is based on image space approach.
![Page 51: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/51.jpg)
⚫ Initialize depth buffer to maximum z coordinate value and colorbuffer to background color.
⚫ Generate a ray from center of projection through pixel to thepolygons.
⚫ When the ray intersects with the polygon, update the colorbuffer pixel to the color of the polygon and depth buffer pixel tothe depth of the polygon. Repeat the same process for eachpolygon and pixel.
⚫ Compare the depth of the polygon to the value in the z- buffercorresponding to this fragment. If this depth is greater than thedepth in the z-buffer, then we have already processed apolygon with a corresponding fragment closer to the viewer,and this fragment is not visible.
⚫ If the depth is less than the depth in the z-buffer, then we havefound a fragment closer to the viewer.
⚫ We update the depth in the z-buffer and place the shadecomputed for this fragment at the corresponding location in thecolor buffer.
![Page 52: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/52.jpg)
Depth sort and painter’s algorithm
⚫ It is based on object space approach.
⚫ Depth sort is a variant of painter’s algorithm.
⚫ For example, in the above figure (a), we have two polygons. To a viewer, they appear as shown in (b), with the polygon in front partially obscuring the other.
⚫ There are two approaches to render these polygons.
1. We could find the part of the rear polygon that is visible, and could render that part into the frame buffer - a calculation that requires clipping one polygon against the other.
2. We could paint the rear polygon in its entirety, and then the front polygon, painting over the part of the rear polygon not visible to the viewer in the process.
![Page 53: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/53.jpg)
⚫ We can also use painter’s algorithm to render these polygons.
⚫ The first step of this algorithm is t o order all the polygons byhow far away from the viewer their maximum z-value is. Thisstep gives the algorithm the name depthsort.
⚫ If the minimum depth—the z-value—of a given polygon isgreater than the maximum depth of the polygon behind theone of interest, we can paint the polygons back to front and weare done. For example in the above figure, polygon A is behindall other polygons.
![Page 54: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/54.jpg)
⚫ If the z-extents of two polygons overlap, we still may be able tofind an order to paint (render) the polygons individually andyield the correct image.
⚫ Consider a pair of polygons whose z-extents overlap. Thesimplest test is to check their x and y-extents. If either of the xor y extents do not overlap, neither polygon can obscure theother, and they can be painted in either order.
![Page 55: Implementation strategies...Any method that involves brute-force comparison of objects by pairs has 0(k2) complexity. If we could organize objects by their distances from the camera,](https://reader034.vdocuments.mx/reader034/viewer/2022042415/5f303a3c1747d6708a339a57/html5/thumbnails/55.jpg)
⚫ Rasterized line segments and edges of polygons sometimes look jagged. Itis known as aliasing error.
⚫ There are mainly three reasons for aliasing errors
1. First, if we have an n x m frame buffer, the number of pixels is fixed, and wecan generate only certain patterns to approximate a line segment.
2. Pixel locations are fixed on a uniform grid.
3. Pixels have a fixed size and shape.These aliasing errors can be removed by aprocess called antialiasing.
⚫ Mathematical lines are one-dimensional entities that have, length but notwidth, rasterized lines must have a width in order to be visible.
⚫ Suppose that each pixel is displayed as a square of width 1 unit, and canoccupy a box of 1 unit height and width on the display.
Antialiasing