US5369739A - Apparatus and method for generating point sample masks in a graphics display system - Google Patents
Apparatus and method for generating point sample masks in a graphics display system Download PDFInfo
- Publication number
- US5369739A US5369739A US08/089,715 US8971593A US5369739A US 5369739 A US5369739 A US 5369739A US 8971593 A US8971593 A US 8971593A US 5369739 A US5369739 A US 5369739A
- Authority
- US
- United States
- Prior art keywords
- mask
- sample
- edge
- pixel
- sample points
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
Definitions
- the present invention pertains to the field of computer graphics display systems. More particularly, the present invention relates to an apparatus and method for generating point sample masks for pixels in a computer graphics display system.
- the display screens upon which computer-generated images are shown are comprised of an array of picture elements. These picture elements are commonly referred to as "pixels". Each pixel represents a dot on the screen. Each of these pixels has associated parameter values which define certain attributes such as intensity, color (RGB), depth (Z), and blending (Alpha) for that particular pixel.
- the computer assigns parameter values for each pixel of the display screen for producing desired images.
- the parameter values are rendered into frame buffers, which are later read out for display. The aggregate of thousands of such pixels so programmed are used to represent physically displayed images on the display screen.
- Rasterization of primitives entails determining which pixels are to be updated for rendering that particular primitive. Additionally, rasterization involves the determination of how those pixels should be updated for creating a visually accurate display.
- Primitives can take the shape of any of the polygons.
- a triangular primitive is described herein.
- One such prior art technique involves "walking" along the edges of the triangle and generating horizontal or vertical spans of pixels from one edge to an opposing edge of the triangle.
- Another prior art technique treats the triangle as the intersection of three half-planes. Each edge of the triangle is considered as an edge of one of the half-planes. Those pixels which fall "inside” each of the three half-planes are considered to be inside the triangle and are rendered. Pixels falling "outside" one or more of the half-planes are considered to be outside of the triangle and are not rendered.
- the quality of the resulting images is improved if special attention is directed towards rasterizing those pixels near the borders of the triangle. Because the areas of these border pixels are partially inside and partially outside the boundaries of the triangle, their colors should be modified to reflect the proportion of the actual coverage.
- One prior art method involved computing an estimate of the pixel coverage. A new "blended" pixel value is generated in proportion to this estimated coverage.
- a better prior art technique for handling border pixels involves utilizing a mask.
- the mask is comprised of a number of bits corresponding to specific subregions of a pixel.
- the number of bits in a mask matches the actual area of half-plane coverage, often to a resolution of ⁇ half a bit. For example, if the half-plane covers 52% of the pixel, and the mask is comprised of a total of 16 bits, then 8 or 9 of the bits are set while 7 or 8 bits are cleared. Those bits whose subregions most closely correspond to the pixel area that is covered by the half-plane are selected to be set. The bits are set and cleared independent of the orientation of the edge to the pixel.
- the present invention pertains to the process of generating geometrically valid point-sample masks for rendering primitives in computer graphics systems.
- the masks are generated to determine whether specific points of a pixel are inside or outside of a polygon.
- a mask is comprised of an NxM array of subsample points.
- a number of masks are generated for each pixel, one for each edge of the polygon. These separate masks are merged to produce a final mask which specifies whether specific subsample points of that pixel are inside or outside of that polygon.
- the pixel is tested to determine whether it falls completely on one side of an edge of the polygon. This is accomplished by testing the vertical distance metric for the center of the pixel. If it can't be determined whether the pixel is intersected by the edge by analyzing the vertical distance metric of the pixel center, then the vertical distance metrics of subsample points on either side of an initial subsample point are computed by performing multiplication functions. These subsample points form a horizontal row that includes the initial subsample point. Next, the vertical distance metrics for a column of subsample points are computed for each of the subsample points of the row by performing addition functions. Thereupon, inside/outside status for each of the NxM subsample points of the mask are determined by examining the sign of their respective vertical distance metrics.
- the coefficients of a horizontal distance metric equation are computed. These coefficients are computed to evaluate the signed horizontal distance from one of the polygon's edges to a particular point of interest.
- the pixel is tested to determine whether it falls completely on one side of an edge of the polygon. This is accomplished by testing the horizontal distance metric for the center of the pixel. If it can't be determined whether the pixel is intersected by the edge by analyzing the horizontal distance metric of the pixel center, then the horizontal distance metrics of subsample points above or below an initial subsample point are computed by performing multiplication functions. These subsample points form a vertical column that includes the initial subsample point. Next, the horizontal distance metrics for a row of subsample points are computed for each of the subsample points of the column by performing addition functions. Thereupon, inside/outside status for each of the NxM subsample points of the mask are determined by examining the sign of their respective horizontal distance metrics.
- a final mask is generated for that pixel by performing logical AND operations on the separate edge masks. It is this final mask which is used to control the modification of the corresponding pixel in the frame buffer.
- FIG. 1 is a computer graphics system upon which the present invention may be practiced.
- FIG. 2 shows three half-planes whose intersection forms a triangle.
- FIG. 3 shows the intersection of a pixel having a regular array of subsample points with a triangular polygon.
- FIG. 4 shows a unit pixel having a vertical distance metric of +1 and -1 from its center in relation to edges having slopes in the range [-1, +1].
- FIG. 5 shows a 4-bit adder which can be implemented to compute vertical distance metrics for a 4 ⁇ 4 array.
- FIG. 6 shows a mask having a column of subsample points.
- FIG. 7 shows a mask having an 8 ⁇ 8 subsample point array for half-edges with slopes in the range [-1,+1].
- FIG. 8A shows a flowchart describing the steps for generating point sample masks.
- FIG. 8B shows a more detailed flowchart describing the steps for generating point sample masks using vertical distance.
- FIG. 8C shows a more detailed flowchart describing the steps for generating point sample masks using horizontal distance.
- FIG. 9A shows the intersection of a pixel having a regular array of subsample points with a triangular polygon.
- FIG. 9B shows an example of a first edge of a triangle in relation to a point sample mask of a pixel.
- FIG. 9C shows a mask generated corresponding to the first edge of the triangle.
- FIG. 9D shows an example of a second edge of a triangle in relation to a point sample mask of a pixel.
- FIG. 9E shows a mask generated corresponding to the second edge of the triangle.
- FIG. 9F shows an example of a third edge of a triangle in relation to a point sample mask of a pixel.
- FIG. 9G shows a mask generated corresponding to the third edge of the triangle.
- FIG. 9H shows an example of the generation of a final point sample mask.
- System 100 can include any computer controlled graphics systems for generating complex or three-dimensional images, such as the IRISTM family of computers manufactured by Silicon Graphics, Inc. of Mountain View, Calif.
- Computer system 100 comprises a bus or other communication means 101 for communicating information, and a processing means 102 coupled with bus 101 for processing information.
- System 100 further comprises a random access memory (RAM) or other dynamic storage device 104 (referred to as main memory), coupled to bus 101 for storing information and instructions to be executed by processor 102.
- Main memory 104 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 102.
- Computer system 100 also comprises a read only memory (ROM) and/or other static storage device 106 coupled to bus 101 for storing static information and instructions for processor 102.
- Data storage device 107 is coupled to bus 101 for storing information and instructions.
- ROM read only memory
- graphics subsystem 111 Also coupled to bus 101 is a graphics subsystem 111.
- Processor 102 provides the graphics subsystem 111 with graphics data such as drawing commands, coordinate vertex data, and other data related to an object's geometric position, color, and surface parameters.
- the object data is processed by graphics subsystem 111 in the following four pipelined stages: geometry subsystem, scan conversion subsystem, raster subsystem, and a display subsystem.
- the geometry subsystem converts the graphical data from processor 102 into a screen coordinate system.
- the scan conversion subsystem then generates pixel data based on the primitives (e.g., points, lines, polygons, and meshes) from the geometry subsystem.
- the pixel data is sent to the raster subsystem, whereupon z-buffering, blending, texturing, and anti-aliasing functions are performed.
- the resulting pixel values are stored in frame buffer 109.
- the display subsystem reads the frame buffer 109 and displays the image on display monitor 121.
- a data storage device 107 such as a magnetic disk or optical disk and its corresponding disk drive can be coupled to computer system 100.
- Computer system 100 can also be coupled via bus 101 to a display device 121, such as a cathode ray tube (CRT), for displaying information to a computer user.
- An alphanumeric input device 122 is typically coupled to bus 101 for communicating information and command selections to processor 102.
- cursor control 123 is Another type of user input device, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 102 and for controlling cursor movement on display 121.
- This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify positions in a plane.
- hard copy device 124 which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media.
- computer system 100 can be coupled to a device for sound recording and/or playback 125, such as an audio digitizer coupled to a microphone for recording information.
- the device may include a speaker which is coupled to a digital to analog (D/A) converter for playing back the digitized sounds.
- D/A digital to analog
- the present invention utilizes a derivative of a prior art algorithm, published by Pineda in SIGGRAPH 1988, pp 17-20.
- the Pineda algorithm is used to determine whether a point falls inside or outside of a half-plane.
- the Pineda algorithm involves computing a value based on an equation for each half-plane edge evaluated for an (x,y) coordinate.
- the absolute value of the result is proportional to the distance from that point to the nearest point on the edge.
- the sign of the result indicates which side of the edge, the (x,y) coordinate is on.
- the lines 201-203 define three half-planes whose intersection forms a triangle 204. Pineda's equation is:
- the metric D is proportional to the distance; x,y is the location; and x 0 ,y 0 and x 1 ,y 1 are two different locations on the edge (e.g., the two triangle vertexes that define the edge). Some care is required in interpreting the meaning of the sign of the Pineda distance value.
- the present invention involves a more elegant process for generating the point sample masks.
- a sample mask for pixel 304 which intersects a triangular primitive 305 is shown.
- the pixel subsample points are arranged in a regular two-dimensional array with respect to the pixel, rather than as arbitrary locations. For example, a 4 ⁇ 4 array of sixteen subsample points 306-321 corresponding to pixel 304 is shown. It can be seen that subsample points 306-308 are inside triangle 305, while subsample points 309-321 are outside of triangle 305.
- a vertical distance metric D v is calculated for one of the subsample points (e.g., subsample point 312). The determinations as to whether the other subsample points fall inside or outside the triangle are interpolated from the D v of that first subsample point as described in detail below.
- the present invention normalizes the Pineda equation such that B is equal to one. This is accomplished by dividing A, B, and C by B. The result of this normalization is that the new distance metric D v now represents the signed vertical distance from the half-plane edge to the location (x,y)--in contrast to the distance from the location perpendicular to the half-plane edge taught by Pineda. This results in the following equations:
- the vertical distance metric D v is used to interpolate inside/outside status for any subsample point along a vertical path passing through that (x,y) location.
- the new D v ' value for a (x,y') subsample point which can be located either above or below the original (x,y) location, is given by: ##EQU1##
- the inside/outside status for any point above or below the original (x,y) location can be obtained by testing the sign of D v ', where D v ' is equal to D v plus the signed vertical distance from the original (x,y) location to the new subsample point.
- D vc for a sample point at the center of a unit-square pixel is greater than 1 or less than -1, then the edge cannot pass through the pixel, as shown in FIG. 4. Hence, further calculations for subsample positions are not necessary. If D vc for this point is between -1 and +1, then determining the inside/outside status for any point above or below the original (x,y) location, but within the unit-square pixel, involves only simple arithmetic. Note that the initial sample point need not be chosen at the actual center of the pixel. Rather, a sample point whose ⁇ x and ⁇ y are within ⁇ 1/2 to any other sample point will suffice. If no other sample point is located more that 1/2 pixel away in either the x or y direction, the present invention is unaffected. Even if this requirement is not met, then only the bounds for the test of D vc would have to be changed to reflect this condition.
- D vc is in the range [-1,+1]
- the sign of D v ' can be determined using limited-precision arithmetic, given that D vc is represented as a two's complement, fixed point binary value.
- an inexpensive circuit can be implemented to compute D v ' at several such locations.
- FIG. 5 shows an 4-bit adder 506 which can be implemented to compute D v ' for the subsample point 502.
- subsample point 503 is the center subsample point with a vertical distance metric of D vc
- Dv' for subsample point 502, a 4-bit adder 506 is required.
- Bit (-2) corresponds to fractional offsets of 1/4.
- adding a "1" to the least significant bit of adder 506 effectively adds 1/4.
- the most significant bit of adder 506 (i.e., bit 1) specifies the sign of the resulting Dv'.
- FIG. 6 shows a column of eight regularly spaced subsample points 601-608 for which inside/outside status can be computed. Simultaneously generating the inside/outside status for these eight subsample points requires thirty-one bits of addition logic.
- Four five-bit adders are implemented for determining the signs of the vertical metrics corresponding to subsample points 601, 603, 605, and 607.
- Two four-bit adders are implemented for determining the signs of the vertical metrics corresponding to subsample points 602 and 606.
- a single three-bit adder is implemented for determining the sign of the vertical metric corresponding to subsample point 608.
- the number of bits required to compute Dv' is dependent on the fractionality of the offsets (e.g., 3-bit adder for 1/2 offsets, 4-bit adder for 1/4 offsets, 5-bit adder for 1/8 offsets, etc.).
- inside/outside status information is also generated for separate columns of regularly spaced sample locations near the pixel center by performing multiplication and addition functions.
- the distance value for a subsample point directly to the left or right of the pixel center is computed from the following equation: ##EQU2## If (x'-x) is constant and can be represented as a fraction with a small denominator (e.g., 2, 4, or 8), the multiplication can be implemented with low precision.
- FIG. 7 shows an 8 ⁇ 8 sample mask 701 for half-edges having slopes in the range [-1,+1].
- the distance metric D v is calculated for the (x,y) location of the pixel center 702.
- multiplication is performed as described above to generate the seven subsample points 703-709 to the right and left of center 702.
- the subsample points are calculated for each of the seven columns 710-716.
- an entire 8 ⁇ 8 array sample mask i.e., sixty-four subsample points
- a horizontal distance metric D h is calculated for one of the subsample points. The determinations as to whether the other subsample points fall inside or outside the triangle are interpolated from the D h of that first subsample point as described in detail below.
- the horizontal distance metric D h is used to interpolate inside/outside status for any subsample point along a horizontal path passing through that (x,y) location.
- the new D h ' value for a (x',y) subsample point which can be located either to the left or right of the original (x,y) location, is given by: ##EQU3##
- the inside/outside status for any point to the right or left of the original (x,y) location can be obtained by testing the sign of D h ', where D h ' is equal to D h plus the signed horizontal distance from the original (x,y) location to the new subsample point.
- inside/outside status information is also generated for separate rows of regularly spaced sample locations near the pixel center by performing multiplication and addition functions.
- the distance value for a subsample point directly above or below the pixel center is computed from the following equation: ##EQU4## If (y'-y) is constant and can be represented as a fraction with a small denominator (e.g., 2, 4, or 8), the multiplication can be implemented with low precision.
- FIG. 8A shows a flowchart describing the steps for generating point sample masks.
- a pixel coordinate system that has its origin at the lower left corner, with x and y axes increasing to the right and up, is established, step 801.
- a regular NxM array of subsample points is established for each pixel, step 802.
- step 803. A determination is made as to whether there is a next triangle, step 803. If not, end flowchart. Otherwise, in step 804, a determination is made as to whether there is another pixel that is partially or wholly in the triangle. If there is not another pixel that is partially or wholly in the triangle, step 803 is repeated. Otherwise, a determination is made as to whether there is a next edge of the triangle, step 805. If there are no more edges, the pixel masks that are computed for each edge are merged, step 806. The resulting pixel is rendered, step 807. And step 804 is repeated.
- step 805 determines that there is a next edge, then a determination is made as to whether the slope of that edge is within the range of [-1, +1], step 808. If the slope is within the range [-1, +1] then the vertical distance mask is computed, step 810. If the slope is not within the range [-1, +1] then the horizontal distance mask is computed, step 809. Following step 809 or 810, step 811 is executed. In step 811, the mask is tested for the all 0's case. If the mask is all 0's, step 804 is repeated. Otherwise, if the mask is not all 0's, step 805 is repeated.
- FIG. 8B shows a more detailed flowchart describing the steps for computing a vertical distance mask.
- step 822 is executed. If it has been determined in step 820 that these coefficients had previously been calculated for this edge, then step 821 is skipped and the flow proceeds to step 822.
- step 822 the vertical distance D vc is computed for the pixel center.
- a determination is made in step 823 as to whether D vc is greater than 1. If so, step 824 determines whether the triangle is above the edge. If the triangle is above the edge, the mask is set to all 1's, step 826, and this flowchart is done. If the triangle is not above the edge, the mask is set to all 0's, step 825 and this flowchart is done.
- step 823 If it is determined in step 823 that D vc is not greater than 1, a determination is then made as to whether D vc is less than -1, step 827. If so, step 828 determines whether the triangle is above the edge. If the triangle is above the edge, the mask is set to all 0's in step 829, and this flowchart is done. If the triangle is not above the edge, the mask is set to all 1's in step 830, and this flowchart is done.
- step 831 multiplication functions are performed to compute the vertical distance of a single subsample point in each column of subsample points on either side of the column that includes the center subsample point. These subsample points form a horizontal row that includes the center subsample point.
- addition functions are performed to compute the vertical distance of each subsample point for each column of subsample points, step 832.
- step 834 A determination is made as to whether the triangle is above the edge in step 834. If the triangle is above the edge, step 835 sets the mask bits corresponding to subsample points having non-negative distances to "1". Step 835 also sets the mask bits corresponding to subsample points having negative distances to "0", and the flowchart is done. Otherwise, if the triangle is not above the edge, step 836 sets the mask bits corresponding to subsample points having negative distances to "1". Step 836 also sets the mask bits corresponding to subsample points having non-negative distances to "0", and the flowchart is done.
- FIG. 8C shows a more detailed flowchart describing the steps for computing a horizontal distance mask.
- step 842 is executed. If it has been determined in step 840 that these coefficients had previously been calculated for this edge, then step 841 is skipped and the flow proceeds to step 842.
- step 842 the horizontal distance D hc is computed for the pixel center.
- a determination is made in step 843 as to whether D hc is greater than 1. If so, step 844 determines whether the triangle is to the right of the edge. If the triangle is to the right of the edge, the mask is set to all 1's, step 846, and this flowchart is done. If the triangle is not to the right of the edge, the mask is set to all 0's, step 845, and this flowchart is done.
- step 843 determines whether D hc is greater than 1, a determination is then made as to whether D hc is less than -1, step 847. If so, step 848 determines whether the triangle is to the right of the edge. If the triangle is to the right of the edge, the mask is set to all 0's in step 849, and this flowchart is done. If the triangle is not to the right of the edge, the mask is set to all 1's in step 850, and this flowchart is done.
- step 847 If it is determined in step 847 that D hc is not less than -1, further computations are required to determine which samples are to the right and which are to the left of the edge.
- step 851 multiplication functions are performed to compute the horizontal distance of a single subsample point in each row of subsample points above or below the row that includes the center subsample point. These subsample points form a vertical column that includes the center subsample point.
- addition functions are performed to compute the horizontal distance of each subsample point for each row of subsample points, step 852.
- step 855 sets the mask bits corresponding to subsample points having non-negative distances to "1". Step 855 also sets the mask bits corresponding to subsample points having negative distances to "0", and the flowchart is done. Otherwise, if the triangle is not to the right of the edge, step 856 sets the mask bits corresponding to subsample points having negative distances to "1”. Step 856 also sets the mask bits corresponding to subsample points having non-negative distances to "0", and the flowchart is done.
- a unit-square pixel 901 is shown in reference to a triangle 902.
- the four vertices of pixel 901 are given as: (3, 2), (3, 3), (4, 3), and (4,2).
- the point sample mask is comprised of a 4 ⁇ 4 array of subsample points 950-965.
- Subsample point 956 is designated as the approximate "center" subsample point.
- Triangle 902 is comprised of three edges: a first edge 903, a second edge 904, and a third edge 905. These three edges form three vertices at: (3.125, 2.375); (2.875, 4); and (4.25, 3.125).
- a mask is calculated corresponding to the half-plane defined by the first edge 903, as shown in FIG. 9B.
- the slope of half-plane edge 907 can be calculated:
- Center subsample point 956 has coordinates of (3.5, 2.5).
- a column of subsample points is calculated corresponding to each of these four subsample points in the row. For those pixels above the row, 0.25 is added; for those pixels one step below the row, 0.25 is subtracted; and for those pixels two steps below the row, 0.5 is subtracted. This produces sixteen vertical distance metrics as shown in Table 1 below.
- FIG. 9C shows a mask 911 which is based on the signs of the respective vertical distance metrics calculated above. It can be seen that a "1" is assigned to those subsample points having a positive vertical distance metric, and a "0" is assigned to those subsample points having a negative vertical distance metric. These assignments would have been reversed if triangle 903 had been below half-plane edge 907.
- a mask is calculated corresponding to the half-plane defined by the second edge 904, as shown in FIG. 9D.
- the slope of half-plane edge 912 can be calculated:
- Center subsample point 956 has coordinates of (3.5, 2.5).
- a row of subsample points is calculated corresponding to each of these four subsample points in the column. For those pixels to the right of the row, 0.25 is added; for those pixels one step to the left of the row, 0.25 is subtracted; and for those pixels two steps to the left of the row, 0.5 is subtracted. This produces sixteen horizontal distance metrics as shown in Table 2 below.
- FIG. 9E shows a mask 916 which is based on the signs of the respective horizontal distance metrics calculated above. A "1" is assigned with those subsample points having a positive horizontal distance metric, and a "0" is assigned to those subsample points having a negative horizontal distance metric.
- a mask is also calculated corresponding to the half-plane defined by the third edge 905, as shown in FIG. 9F.
- the slope of half-plane edge 917 can be calculated:
- the three masks are merged by performing AND operations, as shown in FIG. 9H.
- performing AND operations on masks 911, 916, and 918 corresponding to the three edges results in a final mask 919.
- the final mask is comprised of subsample mask values 913, 920, and 921 having 1's, while the other subsample mask values have 0's.
- the subsample points 952, 951, and 955, corresponding to subsample mask values 913,920, and 92 1 reside within triangle 902, whereas the other subsample points reside outside of triangle 902. This inside/outside status is correctly and accurately portrayed by the final mask 919.
- the present invention can be implemented as a hardware state machine, as a semi-custom ASIC(s), or as a computer implemented software program. Furthermore, the present invention can be embedded in any rasterization system that uses point sampled mask generation.
- a table can be used to replace the additive portion of the calculation of subpixel distances.
- the same table can be used for both vertical and horizontal distances.
- Table 3 below can be applied to the 4 ⁇ 4 array of the example described above.
- This sixteen-entry table is indexed using four bits of the binary representation distance (either vertical or horizontal).
- the necessary bits include the two bits to the left of the binary point and the two bits to the right of the binary point.
- Table 3 shows four outputs: one for the subsample point that is 1/2 pixel below (or to the left) of the center subsample point, one for the subsample point that is 1/4 pixel below (or to the left) of the center subsample point, one for the center subsample point, and one for the subsample point that is 1/4 pixel above (or to the right) of the center subsample point.
- the distance metric is computed for each subsample location. This eliminates the comparison logic for complete or zero coverage determinations, but substantially increases the logic for subsample computation. Furthermore, by modifying the complete or zero coverage test, the subsamples need not be constrained to be within the bounding box of a pixel.
- the number of rows and columns of subsample points for any given mask need not be the same.
- the signs of the distance metrics can be changed by carrying the changes in the signs throughout the computations described above.
- the interpretation of zero-valued distances can be changed, as long as the result is consistent for polygons that share a common edge.
- the intermediate value M need not be computed.
- the initial distances for each row or column can be computed directly.
- the directions and origin of the coordinate system can be changed if corresponding changes are made to the equations and conditions.
- the present invention will correctly generate masks of all 0's for pixels outside of the triangle. Thus, it is not necessary to consider only those pixels which are wholly inside or partially inside the triangle.
Abstract
Description
D=Ax+By+C, where
A=y.sub.0 -y.sub.1
B=x.sub.1 -x.sub.0
C=x.sub.0y1 -x.sub.1y0
D.sub.v =Ax+y+C, where
A=(y.sub.0 -y.sub.1)/(x.sub.1 -x.sub.0)
C=(x.sub.0 y.sub.1 -x.sub.1 y.sub.0)/(x.sub.1 -x.sub.0)
D.sub.h =x+By+C, where
B=(x0-x1)/(y1-y0)
C=((x1*y0)-(x0*y1)/(y1-y0)
Slope=(y1-y0)/(x1-x0)=0.667
A=(y0-y1)/(x1-x0)=-0.667
C=((x0*y1)-(x1*y0) )/(x1-x0)=-0.292
xc=3.5
yc=2.5
D.sub.vc =(A*xc)+yc+C=-0.125
D.sub.954 =D.sub.vc -2*M=0.209
D.sub.955 =D.sub.vc -M=O.042
D.sub.956 =D.sub.vc =-0.125
D.sub.957 =D.sub.vc +M=-0.292
TABLE 1 ______________________________________ offset D.sub.v For Each Subsample Point ______________________________________ +1/4 0.459 0.292 0.125 -0.042 0 0.209 0.042 -0.125 -0.292 -1/4 -0.041 -0.208 -0.375 -0.542 -1/2 -0.291 -0.458 -0.625 -0.792 ______________________________________
Slope=(y1-y0)/(x1-x0)=-6.500
B=(x0-x1)/(y1-y0)=0.154
C=((x1*y0)-(x0*y1))/(y1-y0)=-3.490
xc=3.5
yc=2.5
D.sub.hc =xc+(B*yc)+C=0.395
D.sub.952 =D.sub.hc +M=0.434
D.sub.956 =D.sub.hc =O.395
D.sub.960 =D.sub.hc -M=0.356
D.sub.964 =D.sub.hc -2*M=0.317
TABLE 2 ______________________________________ Offset: -1/2 -1/4 0 +1/4 ______________________________________ D.sub.h For Each -0.066 0.184 0.434 0.684 Subsample Point -0.105 0.145 0.395 0.645 -0.144 0.106 0.356 0.606 -0.183 0.067 0.317 0.567 ______________________________________
Slope=(y1-y0)/(x1-x0)=-0.636
A=(y0-y1)/(x1-x0)=0.636
C=((x0*y1)-(x1*y0))/(x1-x0)=-5.830
D.sub.vc =(A*xc)+yc+C=-1.104
TABLE 3 ______________________________________ D = bbbbbbbbbbbb.bbbbbbbbbbbb ↓↓↓↓ -1/2 -1/4 0 +1/4 ______________________________________ 01.11 1 1 1 1 01.10 1 1 1 1 01.01 1 1 1 1 01.00 1 1 1 1 00.11 1 1 1 1 00.10 1 1 1 1 00.01 0 1 1 1 00.00 0 0 1 1 11.11 0 0 0 1 11.10 0 0 0 0 11.01 0 0 0 0 11.00 0 0 0 0 10.11 0 0 0 0 10.10 0 0 0 0 10.01 0 0 0 0 10.00 0 0 0 0 ______________________________________
TABLE 4 __________________________________________________________________________ Sample Vertical Binary Representation of Table Table Offset Distance Vertical Distance Index Output __________________________________________________________________________ -1/2: D = D.sub.vc - 2*M = 0.209 = 0000000000.001101010101 00.00 0011 -1/4: D = D.sub.vc - M = 0.042 = 0000000000.000010101010 00.00 0011 0: D = D.sub.vc = -0.125 = 1111111111.111000000000 11.11 0001 +1/4: D = D.sub.vc + M = -0.292 = 1111111111.101101010101 11.10 0000 __________________________________________________________________________
Claims (26)
Dv=Ax+y+C,
Dh=x+By+C,
Dv=Ax+y+C,
Dh=x+By+C,
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/089,715 US5369739A (en) | 1993-07-09 | 1993-07-09 | Apparatus and method for generating point sample masks in a graphics display system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/089,715 US5369739A (en) | 1993-07-09 | 1993-07-09 | Apparatus and method for generating point sample masks in a graphics display system |
Publications (1)
Publication Number | Publication Date |
---|---|
US5369739A true US5369739A (en) | 1994-11-29 |
Family
ID=22219236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/089,715 Expired - Lifetime US5369739A (en) | 1993-07-09 | 1993-07-09 | Apparatus and method for generating point sample masks in a graphics display system |
Country Status (1)
Country | Link |
---|---|
US (1) | US5369739A (en) |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5621867A (en) * | 1992-08-26 | 1997-04-15 | Namco Ltd. | Image synthesizing system |
US5790125A (en) * | 1996-04-22 | 1998-08-04 | International Business Machines Corporation | System and method for use in a computerized imaging system to efficiently transfer graphics information to a graphics subsystem employing masked span |
US5819278A (en) * | 1996-08-23 | 1998-10-06 | Adobe Systems Incorporated | Maintaining invalidation information in tiled image representations |
US5818456A (en) * | 1996-04-30 | 1998-10-06 | Evans & Sutherland Computer Corporation | Computer graphics system with adaptive pixel multisampler |
US5940080A (en) * | 1996-09-12 | 1999-08-17 | Macromedia, Inc. | Method and apparatus for displaying anti-aliased text |
US6071191A (en) | 1995-11-22 | 2000-06-06 | Nintendo Co., Ltd. | Systems and methods for providing security in a video game system |
US6091425A (en) * | 1998-02-17 | 2000-07-18 | Silicon Graphics, Inc. | Constant multisample image coverage mask |
US6166748A (en) * | 1995-11-22 | 2000-12-26 | Nintendo Co., Ltd. | Interface for a high performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6190257B1 (en) | 1995-11-22 | 2001-02-20 | Nintendo Co., Ltd. | Systems and method for providing security in a video game system |
US6285376B1 (en) * | 1994-09-28 | 2001-09-04 | Samsung Electronics Co., Ltd. | Triangle traversing method and a rasterizer adopting the same |
US6383079B1 (en) | 1995-11-22 | 2002-05-07 | Nintendo Co., Ltd. | High performance/low cost video game system with multi-functional peripheral processing subsystem |
US20020101437A1 (en) * | 2000-12-28 | 2002-08-01 | Anne Lafage | Composition of an image |
US20030095134A1 (en) * | 2000-11-12 | 2003-05-22 | Tuomi Mika Henrik | Method and apparatus for anti-aliasing for video applications |
US20040207642A1 (en) * | 2003-04-15 | 2004-10-21 | Nokia Corporation | Determining a coverage mask for a pixel |
US6870543B1 (en) | 2001-06-06 | 2005-03-22 | Microsoft Corporation | Reducing fill and improving quality of interlaced displays using multi-sampling |
US20050088456A1 (en) * | 2002-10-09 | 2005-04-28 | Evans & Sutherland Computer Corporation | System and method for run-time integration of an inset geometry into a background geometry |
US20060028488A1 (en) * | 2004-08-09 | 2006-02-09 | Shay Gabay | Apparatus and method for multimedia content based manipulation |
US20070291189A1 (en) * | 2006-06-16 | 2007-12-20 | Michael Harville | Blend maps for rendering an image frame |
US20070291233A1 (en) * | 2006-06-16 | 2007-12-20 | Culbertson W Bruce | Mesh for rendering an image frame |
US20080018664A1 (en) * | 2006-07-20 | 2008-01-24 | Samsung Electronics Co., Ltd. | Method and system for tile binning using half-plane edge function |
US20090037400A1 (en) * | 2007-07-31 | 2009-02-05 | Brian John Cragun | Content management system that renders a document to a user based on a usage profile that indicates previous activity in accessing the document |
US7602351B1 (en) | 2005-07-15 | 2009-10-13 | The United States Of America As Represented By The Secretary Of The Navy | Three-dimensional display assembly |
US20100017752A1 (en) * | 2004-04-02 | 2010-01-21 | International Business Machines Corporation | Multicast File Viewing and Editing |
US20110037765A1 (en) * | 2009-08-14 | 2011-02-17 | Abb Technology Ag | Method for displaying changes in parameter values |
US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
US8328365B2 (en) | 2009-04-30 | 2012-12-11 | Hewlett-Packard Development Company, L.P. | Mesh for mapping domains based on regularized fiducial marks |
US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
CN104050719A (en) * | 2013-03-14 | 2014-09-17 | 辉达公司 | Generating anti-aliased voxel data |
US20140267265A1 (en) * | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Generating anti-aliased voxel data |
US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4692468A (en) * | 1980-08-01 | 1987-09-08 | Eli Lilly And Company | Control of colonial insects employing o-phenylenediamines |
US5268992A (en) * | 1991-01-21 | 1993-12-07 | Brother Kogyo Kabushiki Kaisha | Printer for printing characters made up of first color outline and second color fill |
-
1993
- 1993-07-09 US US08/089,715 patent/US5369739A/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4692468A (en) * | 1980-08-01 | 1987-09-08 | Eli Lilly And Company | Control of colonial insects employing o-phenylenediamines |
US5268992A (en) * | 1991-01-21 | 1993-12-07 | Brother Kogyo Kabushiki Kaisha | Printer for printing characters made up of first color outline and second color fill |
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6333747B1 (en) | 1992-08-26 | 2001-12-25 | Namco Ltd. | Image synthesizing system with texture mapping |
US5621867A (en) * | 1992-08-26 | 1997-04-15 | Namco Ltd. | Image synthesizing system |
US6285376B1 (en) * | 1994-09-28 | 2001-09-04 | Samsung Electronics Co., Ltd. | Triangle traversing method and a rasterizer adopting the same |
US6331856B1 (en) | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6342892B1 (en) | 1995-11-22 | 2002-01-29 | Nintendo Co., Ltd. | Video game system and coprocessor for video game system |
US6593929B2 (en) | 1995-11-22 | 2003-07-15 | Nintendo Co., Ltd. | High performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6071191A (en) | 1995-11-22 | 2000-06-06 | Nintendo Co., Ltd. | Systems and methods for providing security in a video game system |
US6556197B1 (en) | 1995-11-22 | 2003-04-29 | Nintendo Co., Ltd. | High performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6166748A (en) * | 1995-11-22 | 2000-12-26 | Nintendo Co., Ltd. | Interface for a high performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6190257B1 (en) | 1995-11-22 | 2001-02-20 | Nintendo Co., Ltd. | Systems and method for providing security in a video game system |
US6239810B1 (en) | 1995-11-22 | 2001-05-29 | Nintendo Co., Ltd. | High performance low cost video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6394905B1 (en) | 1995-11-22 | 2002-05-28 | Nintendo Co., Ltd. | Systems and methods for providing security in a video game system |
US6383079B1 (en) | 1995-11-22 | 2002-05-07 | Nintendo Co., Ltd. | High performance/low cost video game system with multi-functional peripheral processing subsystem |
US5790125A (en) * | 1996-04-22 | 1998-08-04 | International Business Machines Corporation | System and method for use in a computerized imaging system to efficiently transfer graphics information to a graphics subsystem employing masked span |
US5818456A (en) * | 1996-04-30 | 1998-10-06 | Evans & Sutherland Computer Corporation | Computer graphics system with adaptive pixel multisampler |
US5943060A (en) * | 1996-04-30 | 1999-08-24 | Evans & Sutherland Computer Corp. | Computer graphics system with adaptive pixel multisampler |
US5819278A (en) * | 1996-08-23 | 1998-10-06 | Adobe Systems Incorporated | Maintaining invalidation information in tiled image representations |
US5940080A (en) * | 1996-09-12 | 1999-08-17 | Macromedia, Inc. | Method and apparatus for displaying anti-aliased text |
US6091425A (en) * | 1998-02-17 | 2000-07-18 | Silicon Graphics, Inc. | Constant multisample image coverage mask |
US20030095134A1 (en) * | 2000-11-12 | 2003-05-22 | Tuomi Mika Henrik | Method and apparatus for anti-aliasing for video applications |
US7489317B2 (en) * | 2000-11-12 | 2009-02-10 | Bitboys Oy, A Finnish Registered Co | Method and apparatus for anti-aliasing for video applications |
US20020101437A1 (en) * | 2000-12-28 | 2002-08-01 | Anne Lafage | Composition of an image |
US6870543B1 (en) | 2001-06-06 | 2005-03-22 | Microsoft Corporation | Reducing fill and improving quality of interlaced displays using multi-sampling |
US20050088368A1 (en) * | 2001-06-06 | 2005-04-28 | Microsoft Corporation | Reducing fill and improving quality of interlaced displays using multi-sampling |
US7176930B2 (en) * | 2001-06-06 | 2007-02-13 | Microsoft Corporation | Reducing fill and improving quality of interlaced displays using multi-sampling |
US20050088456A1 (en) * | 2002-10-09 | 2005-04-28 | Evans & Sutherland Computer Corporation | System and method for run-time integration of an inset geometry into a background geometry |
US7006110B2 (en) | 2003-04-15 | 2006-02-28 | Nokia Corporation | Determining a coverage mask for a pixel |
US20040207642A1 (en) * | 2003-04-15 | 2004-10-21 | Nokia Corporation | Determining a coverage mask for a pixel |
US20100017752A1 (en) * | 2004-04-02 | 2010-01-21 | International Business Machines Corporation | Multicast File Viewing and Editing |
US8719728B2 (en) * | 2004-04-02 | 2014-05-06 | International Business Machines Corporation | Multicast file viewing and editing |
US20100017751A1 (en) * | 2004-04-02 | 2010-01-21 | International Business Machines Corporation | Multicast File Viewing and Editing |
US8683380B2 (en) | 2004-04-02 | 2014-03-25 | International Business Machines Corporation | Multicast file viewing and editing |
US7714878B2 (en) * | 2004-08-09 | 2010-05-11 | Nice Systems, Ltd. | Apparatus and method for multimedia content based manipulation |
US20060028488A1 (en) * | 2004-08-09 | 2006-02-09 | Shay Gabay | Apparatus and method for multimedia content based manipulation |
US7602351B1 (en) | 2005-07-15 | 2009-10-13 | The United States Of America As Represented By The Secretary Of The Navy | Three-dimensional display assembly |
US20070291233A1 (en) * | 2006-06-16 | 2007-12-20 | Culbertson W Bruce | Mesh for rendering an image frame |
US7854518B2 (en) * | 2006-06-16 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Mesh for rendering an image frame |
US20070291189A1 (en) * | 2006-06-16 | 2007-12-20 | Michael Harville | Blend maps for rendering an image frame |
US7907792B2 (en) | 2006-06-16 | 2011-03-15 | Hewlett-Packard Development Company, L.P. | Blend maps for rendering an image frame |
US20080018664A1 (en) * | 2006-07-20 | 2008-01-24 | Samsung Electronics Co., Ltd. | Method and system for tile binning using half-plane edge function |
US8345064B2 (en) | 2006-07-20 | 2013-01-01 | Samsung Electronics Co., Ltd. | Method and system for tile binning using half-plane edge function |
US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
US20090037400A1 (en) * | 2007-07-31 | 2009-02-05 | Brian John Cragun | Content management system that renders a document to a user based on a usage profile that indicates previous activity in accessing the document |
US8112715B2 (en) * | 2007-07-31 | 2012-02-07 | International Business Machines Corporation | Content management system that renders a document to a user based on a usage profile that indicates previous activity in accessing the document |
US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
US8328365B2 (en) | 2009-04-30 | 2012-12-11 | Hewlett-Packard Development Company, L.P. | Mesh for mapping domains based on regularized fiducial marks |
CN101995266A (en) * | 2009-08-14 | 2011-03-30 | Abb技术股份公司 | Method for displaying changes in parameter values |
US20110037765A1 (en) * | 2009-08-14 | 2011-02-17 | Abb Technology Ag | Method for displaying changes in parameter values |
US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
US10110876B1 (en) | 2011-10-06 | 2018-10-23 | Evans & Sutherland Computer Corporation | System and method for displaying images in 3-D stereo |
CN104050719A (en) * | 2013-03-14 | 2014-09-17 | 辉达公司 | Generating anti-aliased voxel data |
US20140267265A1 (en) * | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Generating anti-aliased voxel data |
US20140267264A1 (en) * | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Generating anti-aliased voxel data |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5369739A (en) | Apparatus and method for generating point sample masks in a graphics display system | |
JP3862759B2 (en) | Computer system and process for defining and producing images using structured objects with variable edge characteristics | |
US4609917A (en) | Three-dimensional display system | |
US7239319B2 (en) | Rendering outline fonts | |
US4475104A (en) | Three-dimensional display system | |
US7027050B1 (en) | 3D computer graphics processing apparatus and method | |
US8610729B2 (en) | Floating point computer system with fog | |
US5600763A (en) | Error-bounded antialiased rendering of complex scenes | |
US5113357A (en) | Method and apparatus for rendering of geometric volumes | |
US5701405A (en) | Method and apparatus for directly evaluating a parameter interpolation function used in rendering images in a graphics system that uses screen partitioning | |
EP0430501A2 (en) | System and method for drawing antialiased polygons | |
US20100141677A1 (en) | System and method for multi-sampling primitives to reduce aliasing | |
JPH0778267A (en) | Method for display of shadow and computer-controlled display system | |
JPH07152923A (en) | Method and apparatus for rendering of texture-processed object | |
JP2001084410A (en) | Method for using linked and non-linked surface elements to interactively model graphic object | |
US5428716A (en) | Solid-clip methodology and architecture for clipping solid models and displaying cross-sections using depth-buffers | |
US6897863B2 (en) | System and method for hidden object removal | |
US7834879B2 (en) | Drawing apparatus for displaying image data about a plurality of objects including semitransparent object and opaque object on computer display screen | |
EP1058912B1 (en) | Subsampled texture edge antialiasing | |
US6489966B1 (en) | Graphic processing device | |
US5926183A (en) | Efficient rendering utilizing user defined rooms and windows | |
US5821942A (en) | Ray tracing through an ordered array | |
JPH09147136A (en) | Device and method for modeling data generation | |
Agoston | Raster Algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SILICON GRAPHICS, INC. Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AKELEY, KURT;REEL/FRAME:006630/0663 Effective date: 19930709 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION UNDERGOING PREEXAM PROCESSING |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SILICON GRAPHICS, INC;REEL/FRAME:012530/0115 Effective date: 20010928 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |