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 PDF

Info

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
Application number
US08/089,715
Inventor
Kurt Akeley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Silicon Graphics Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silicon Graphics Inc filed Critical Silicon Graphics Inc
Priority to US08/089,715 priority Critical patent/US5369739A/en
Assigned to SILICON GRAPHICS, INC. reassignment SILICON GRAPHICS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AKELEY, KURT
Application granted granted Critical
Publication of US5369739A publication Critical patent/US5369739A/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS, INC
Anticipated expiration legal-status Critical
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing 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

In a computer graphics system, a method of generating a geometrically valid point sample mask corresponding to a pixel. A separate mask is generated for each edge of a polygon. These masks specify whether particular subsample points are within a half-plane defined by an edge of the polygon. This information is determined by examining the sign of vertical or horizontal distance metrics corresponding to those sample points. These separate masks are merged to form the final point sample mask. Thereby, the final point sample mask contains information specifying whether particular sample points reside within the polygon. This information is used in rendering the pixel for display by the computer graphics system.

Description

FIELD OF THE INVENTION
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.
BACKGROUND OF THE INVENTION
One area in which computers are finding increased usage is in that of the graphical arts. Advances in speed, processing power, and memory capacity together with lower costs, have made computer graphics systems suited for simulating and displaying models of concrete or abstract objects. Moreover, computer generated models give users the capability to visualize and comprehend the structure of a single object and also the interaction and relationships between a group of objects. Furthermore, interactive computer graphics allows a user to input changes to a display. These changes are effectuated by the computer, which displays the resulting, modified images. For example, interactive computer graphics are being applied to video games, flight simulators, medical diagnostic displays, animated picture generators, computer-aided design, etc.
Basically, 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.
In order to simplify and increase the speed of the rendering and display process, complex or three-dimensional images are broken down into simple polygons, known as "primitives". It is easier and faster to rasterize whole polygons versus rasterization on a per pixel basis. 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. For the sake of clarity, a triangular primitive is described herein. There exist many prior art techniques for determining which of the pixels of a triangular primitive should be modified for rendering that primitive. 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.
One problem inherent to the coverage approach is that it is not possible to distinguish the effects of two triangles that abut in the vicinity of a pixel versus the effects of two triangles that obscure the same subregion of a pixel. For example, if triangle A covers 35% and triangle B covers 50% of a given pixel, it is not known whether triangle B covers the same 35% as triangle A plus 15%, if the 50% coverage of triage B is totally different from the 35% coverage of triangle A, or if the coverage falls somewhere in-between. Moreover, scalar coverages are difficult to merge correctly near the vertices of a single triangle, where the coverage values of two edges interact.
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.
However, problems arise due to the fact that typical mask generation techniques produce a mask that is based on an area of coverage, rather than precise evaluations at well defined points. Hence, area-based masks are often incompatible with existing z-buffering schemes (Z values stored in Z buffers correspond to the relative "depths" of display for eliminating "hidden" surfaces). In most cases, the Z values stored in the Z buffer can represent depth only for an exact point, rather than for an area of coverage. Applying area-based masks to graphics systems having multiple depth and color values for each pixel will sometimes compute inconsistent depth values for some of the subregions.
This problem is especially acute for those subregions whose center falls outside the actual geometry of the triangle. These inconsistent depth values might result in undesirable artifacts in the displayed images. An example of such an artifact is the protrusion of "bulkheads". A bulkhead is that part of a triangle that exactly abuts the interior of some other triangle. Hence, that part should not be visible since it is hidden behind the other triangle. Such bulkheads are improperly factored in the display if the mask generator is based on an area of coverage, whereas each subregion is treated as an exact location by the depth buffer computations.
Thus, there is a need in the computer graphics art for a rasterization process having a mask generator capable of point sampling. Point sampling treats each subregion of a pixel as a single sample point in order to achieve geometric accuracy. It would be preferable if such a mask generator could take advantage of rescaling, reduced-precision arithmetic, and table lookups for achieving an efficient implementation.
SUMMARY OF THE INVENTION
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. There is a mask associated with each pixel of interest. For each polygon to be rendered, the corresponding masks are computed to determine how pixels associated with that polygon are to be modified.
In the present invention, 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.
In generating a mask, a determination is made as to whether the slope of the corresponding edge is within the range of -1 to +1. If the slope does fall within that range, the coefficients of a vertical distance metric equation are computed. These coefficients are computed to evaluate the signed vertical distance from one of the polygon's edges to a particular point of interest.
In the currently preferred embodiment, 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.
If the slope does not fall within the range -1 to +1, 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.
In the currently preferred embodiment, 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.
Once the masks for each edge have been generated, 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.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
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.
DETAILED DESCRIPTION
An apparatus and method for generating point sample masks in a computer graphics system is described. In the following description, for purposes of explanation, numerous specific details are set forth, such as pixel locations, distances, sample mask points, etc., in order to provide a thorough understanding of the present invention. It will be obvious, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. Furthermore, although the following detailed description makes reference to pixels as being a unit-square, pixels are not limited as such. The present invention is still applicable to pixels which are represented in a host of other forms.
Overview of a Computer System Upon Which the Present Invention May Be Implemented
Referring to FIG. 1, a computer graphics system upon which the present invention may be practiced is shown as 100. System 100 can include any computer controlled graphics systems for generating complex or three-dimensional images, such as the IRIS™ 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.
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.
Furthermore, 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, including alphanumeric and other keys, is typically coupled to bus 101 for communicating information and command selections to processor 102. Another type of user input device is cursor control 123, 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.
Another device which may be coupled to bus 101 is 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. Additionally, 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. Further, the device may include a speaker which is coupled to a digital to analog (D/A) converter for playing back the digitized sounds.
Point-Sample Mask Generator
The present invention utilizes a derivative of a prior art algorithm, published by Pineda in SIGGRAPH 1988, pp 17-20. Basically, 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.
Referring to FIG. 2, the lines 201-203 define three half-planes whose intersection forms a triangle 204. Pineda's equation is:
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
The metric D is proportional to the distance; x,y is the location; and x0,y0 and x1,y1 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.
Thus, one method for generating a point sample mask wherein each pixel subregion is treated as an exact sample point is to perform the Pineda algorithm and to check for the sign of its distance metric D at each of the subsample points. However, this brute force method is quite inefficient. For a 16-bit mask, the Pineda algorithm would necessarily be repeated sixteen times over (i.e., once per each subsample).
The present invention involves a more elegant process for generating the point sample masks. Referring to FIG. 3, a sample mask for pixel 304 which intersects a triangular primitive 305 is shown. In the present invention, 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.
Given an array of subsample points and a half-plane where the slope of the edge is between [-1,+1], a vertical distance metric Dv 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 Dv 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 Dv 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:
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)
Note that only the sign (i.e., + or -) of the distance metric Dv is significant for determining whether a given subsample point is inside or outside a half-plane. Hence, the normalized equation for determining Dv is equivalent to the original Pineda equation for the present purpose. With these coefficients, points above the edge of the half-plane have positive distances, and points below have negative distances. If the half-plane is above the edge, non-negative distance is inside, and negative is outside. Otherwise, this is reversed.
In the present invention, the vertical distance metric Dv is used to interpolate inside/outside status for any subsample point along a vertical path passing through that (x,y) location. For such instances, the new Dv ' value for a (x,y') subsample point, which can be located either above or below the original (x,y) location, is given by: ##EQU1## Thus, the inside/outside status for any point above or below the original (x,y) location can be obtained by testing the sign of Dv ', where Dv ' is equal to Dv plus the signed vertical distance from the original (x,y) location to the new subsample point.
If the vertical distance metric Dvc 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 Dvc 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 Dvc would have to be changed to reflect this condition.
If it has already been determined that Dvc is in the range [-1,+1], the sign of Dv ' can be determined using limited-precision arithmetic, given that Dvc is represented as a two's complement, fixed point binary value. In the currently preferred embodiment, due to the relatively simple processing for computing Dv ' corresponding to fixed locations above and/or below the pixel center, an inexpensive circuit can be implemented to compute Dv ' at several such locations.
For example, FIG. 5 shows an 4-bit adder 506 which can be implemented to compute Dv ' for the subsample point 502. Given that subsample point 503 is the center subsample point with a vertical distance metric of Dvc, subsample point 502 has a Dv '=Dvc +1/4. For computing Dv' for subsample point 502, a 4-bit adder 506 is required. Bit (-2) corresponds to fractional offsets of 1/4. Hence, 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. In general, 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.).
In the present invention, 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.
The same addition process described above can be applied to subsamples which are directly above or below the newly computed points to the right and left of the pixel center. Hence, only one multiplication need be performed for an entire column of subsample points.
FIG. 7 shows an 8×8 sample mask 701 for half-edges having slopes in the range [-1,+1]. The distance metric Dv is calculated for the (x,y) location of the pixel center 702. Next, multiplication is performed as described above to generate the seven subsample points 703-709 to the right and left of center 702. Then, the subsample points are calculated for each of the seven columns 710-716. Thereby, an entire 8×8 array sample mask (i.e., sixty-four subsample points) can be computed simultaneously by implementing seven low-precision multipliers and sixty-three (i.e., 7+7×8) low-precision adders.
Given an array of subsample points and a half-plane where the slope of the edge is not between [-1,+1], a horizontal distance metric Dh 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 Dh of that first subsample point as described in detail below.
The horizontal distance metric equation is given as:
D.sub.h =x+By+C, where
B=(x0-x1)/(y1-y0)
C=((x1*y0)-(x0*y1)/(y1-y0)
Note that only the sign (i.e., + or -) of the distance metric Dh is significant for determining whether a given subsample point is inside or outside a half-plane. With these coefficients, points to the right of the edge of the half-plane have positive distances. If the half-plane is to the right of the edge, non-negative distance is inside, and negative is outside. Otherwise, this is reversed.
In the present invention, the horizontal distance metric Dh is used to interpolate inside/outside status for any subsample point along a horizontal path passing through that (x,y) location. For such instances, the new Dh ' 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## Thus, 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 Dh ', where Dh ' is equal to Dh plus the signed horizontal distance from the original (x,y) location to the new subsample point.
If the horizontal distance metric Dhc 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. Hence, further calculations for subsample points are not necessary. If Dhc for this point is between -1 and +1, then determining the inside/outside status for any point to the left or to the right of the original (x,y) location, but within the unit-square pixel, involves only simple arithmetic.
In the present invention, 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.
The same addition process described above can be applied to subsamples which are directly to the right and left of the newly computed points above and below the pixel center. Hence, only one multiplication need be performed for an entire row of subsample points.
FIG. 8A shows a flowchart describing the steps for generating point sample masks. Initially, 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.
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.
If 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. In step 820, a determination is made as to whether the coefficients A and C have been computed for the edge under consideration. If not, then the coefficients A and C are computed for the vertical distance metric equation, step 821. These coefficients are computed such that the equation Dv =Ax+y+C evaluates to the signed vertical distance from the point (x,y) to the line that is defined by the edge under consideration. This distance is positive if the point is above the edge. Next, 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.
In step 822, the vertical distance Dvc is computed for the pixel center. A determination is made in step 823 as to whether Dvc 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.
If it is determined in step 823 that Dvc is not greater than 1, a determination is then made as to whether Dvc 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.
If it is determined in step 827 that Dvc is not less than -1, further computations are required to determine which samples are above and which are below the edge. In 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. Next, addition functions are performed to compute the vertical distance of each subsample point for each column of subsample points, step 832.
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. In step 840, a determination is made as to whether the coefficients B and C have been computed for the edge under consideration. If not, then the coefficients B and C are computed for the horizontal distance metric equation, step 841. These coefficients are computed such that the equation Dh =x+By+C evaluates to the signed horizontal distance from the point (x,y) to the line that is defined by the edge under consideration. This distance is positive if the point is to the right of the edge. Next, 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.
In step 842, the horizontal distance Dhc is computed for the pixel center. A determination is made in step 843 as to whether Dhc 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.
If it is determined in step 843 that Dhc is not greater than 1, a determination is then made as to whether Dhc 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.
If it is determined in step 847 that Dhc 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. In 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. Next, addition functions are performed to compute the horizontal distance of each subsample point for each row of subsample points, step 852.
A determination is made as to whether the triangle is to the right of the edge in step 854. If the triangle is to the right of the edge, 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.
An Example of a Point Sample Mask Generation
An example of how a point sample mask for a single pixel is generated will now be described in detail. Referring to FIG. 9A, 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).
First, a mask is calculated corresponding to the half-plane defined by the first edge 903, as shown in FIG. 9B. The two vertices of triangle 902 defining the first edge are chosen as two points {(x0=4.250, y0=3.125), (x1=3.125, y1=2.375)} residing on the half-plane edge 907. Hence, the slope of half-plane edge 907 can be calculated:
Slope=(y1-y0)/(x1-x0)=0.667
Since the slope is between the range of -1 and +1, the vertical distance equation is applied. This yields the following coefficients:
A=(y0-y1)/(x1-x0)=-0.667
C=((x0*y1)-(x1*y0) )/(x1-x0)=-0.292
Next, the vertical distance metric Dvc corresponding to the "center" subsample point 956 is computed as shown below. Center subsample point 956 has coordinates of (3.5, 2.5).
xc=3.5
yc=2.5
D.sub.vc =(A*xc)+yc+C=-0.125
Since Dvc is between -1 and 1, the first edge 903 might pass through pixel 901. Thus, more extensive calculations for the subsample vertical distances are required.
First, the multiplication factor M is computed as M=A*0.25=-0.167. Based on this multiplication factor, the vertical distances for a row of subsample points 954-957 are determined as follows:
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
Next, 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.
              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                                 
______________________________________                                    
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.
Next, a mask is calculated corresponding to the half-plane defined by the second edge 904, as shown in FIG. 9D. The two vertices of triangle 902 defining the second edge are chosen as two points {(x0=3.125, y0=2.375), (x1=2.875, y1=4.000)} residing on the half-plane edge 912. Hence, the slope of half-plane edge 912 can be calculated:
Slope=(y1-y0)/(x1-x0)=-6.500
Since the slope is not between the range of -1 and +1, the horizontal distance equation is applied. This yields the following coefficients:
B=(x0-x1)/(y1-y0)=0.154
C=((x1*y0)-(x0*y1))/(y1-y0)=-3.490
Next, the horizontal distance metric Dhc corresponding to the "center" subsample point 956 is computed as shown below. Center subsample point 956 has coordinates of (3.5, 2.5).
xc=3.5
yc=2.5
D.sub.hc =xc+(B*yc)+C=0.395
Since Dhc is between -1 and 1, the second edge 904 might pass through pixel 901. Thus, more extensive calculations for the subsample horizontal distances are required.
This entails calculating the multiplication factor M=B*0.25=O.039. Based on this multiplication factor, the horizontal distances for a column of subsample points 952, 956, 960, and 964 are determined as follows:
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
Next, 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.
              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                                
______________________________________                                    
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 two vertices of triangle 902 defining the third edge are chosen as two points {(x0=2.875, y0=4.000), (x1=4.250, y1=3.125)} residing on the half-plane edge 917. Hence, the slope of half-plane edge 917 can be calculated:
Slope=(y1-y0)/(x1-x0)=-0.636
Since the slope is between the range of -1 and +1, the vertical distance equation is applied. This yields the following coefficients:
A=(y0-y1)/(x1-x0)=0.636
C=((x0*y1)-(x1*y0))/(x1-x0)=-5.830
Next, the vertical distance metric Dvc corresponding to the "center" subsample point 956 is computed as shown below.
D.sub.vc =(A*xc)+yc+C=-1.104
Since Dvc is less than -1, the entire pixel is below the third edge 905. Furthermore, since triangle 902 is also below the third edge 905, the mask 918 is all 1's, as shown in FIG. 9G.
Finally, the three masks are merged by performing AND operations, as shown in FIG. 9H. In other words, performing AND operations on masks 911, 916, and 918 corresponding to the three edges, results in a final mask 919. As an example, consider the top-left most subample point. The result of 1 AND 0 AND 1 is 0. 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. Referring back to FIG. 9A, it can be seen that 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.
Alternative Embodiments
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.
In an alternative embodiment, 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. For example, Table 3 below can be applied to the 4×4 array of the example described above.
              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                                   
______________________________________                                    
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.
Referring back to the first edge given in the example given above, the four distance values computed by multiplication and addition are shown in Table 4 below.
                                  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                                  
__________________________________________________________________________
It can be seen that rotating the table output 90 degrees counter-clockwise (to account for the fact that the table output is to be used as columns), generates the same mask as was computed in the example given above. Note that the table output would have been inverted if the triangle had been on the negative distance side of the first edge.
In another alternative embodiment, it is not necessary to check for complete or zero coverage. Instead, 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.
In yet another alternative embodiment, the number of rows and columns of subsample points for any given mask need not be the same. Moreover, the signs of the distance metrics can be changed by carrying the changes in the signs throughout the computations described above. In addition, the interpretation of zero-valued distances can be changed, as long as the result is consistent for polygons that share a common edge. Also, the intermediate value M need not be computed. The initial distances for each row or column can be computed directly. Also, the directions and origin of the coordinate system can be changed if corresponding changes are made to the equations and conditions. Finally, 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.
Thus, an apparatus and method for generating point sample masks in a computer graphics system is described.

Claims (26)

What is claimed is:
1. In a computer system, a computer implemented method of generating a point sample mask having an array of sample points corresponding to a pixel, wherein each sample point has associated information specifying whether said sample point is inside or outside a polygon, said information being used for rendering said pixel for display by said computer system, said method comprising the steps of:
generating a first mask corresponding to a first edge of said polygon, said first mask specifying which ones of a first set of said sample points reside within a first half-plane defined by said first edge, wherein a sign of a vertical or horizontal distance metric corresponding to a first sample of said first set of sample points determines whether said first sample resides within said first half-plane;
generating a second mask corresponding to a second edge of said polygon, said second mask specifying which ones of a second set of sample points reside within a second half-plane defined by said second edge, wherein a sign of a vertical or horizontal distance metric corresponding to a second sample of said second set of sample points determines whether said second sample resides within said second half-plane;
generating a third mask corresponding to a third edge of said polygon, said third mask specifying which ones of a third set of sample points reside within a third half-plane defined by said third edge, wherein a sign of a vertical or horizontal distance metric corresponding to a third sample of said third set of sample points determines whether said third sample resides within said third half-plane;
merging said first mask, said second mask, and said third mask to generate said point sample mask.
2. The method of claim 1 further comprising the steps of:
determining whether a slope of said first edge is within a range of +1 to -1;
generating coefficients of said vertical distance metric if said slope is within said range;
generating coefficients of said horizontal distance metric if said slope is not within said range.
3. The method of claim 2 further comprising the step of interpolating vertical distance metrics for a row of sample points by performing a plurality of multiplication functions if said slope is within said range.
4. The method of claim 2 further comprising the step of interpolating vertical distance metrics for a column of sample points by performing a plurality of addition functions if said slope is within said range.
5. The method of claim 2 further comprising the step of interpolating horizontal distance metrics for a column of sample points by performing a plurality of multiplication functions if said slope is not within said range.
6. The method of claim 2 further comprising the step of interpolating horizontal distance metrics for a row of sample points by performing a plurality of addition functions if said slope is not within said range.
7. The method of claim 2, wherein said vertical distance metric is derived from:
Dv=Ax+y+C,
where:
Dv=distance value in pixel widths for a subsample point directly to the left or right of a pixel centerpoint;
A=(y1 -y0)/(x1 -x0 ;
C=(2x0 y0 -x0 y1 -x1 y0)/(x1 -x0);
(x0,y0) and (x1,y1)=coordinate corresponding to two vertices that define said first edge.
8. The method of claim 2, wherein a first horizontal distance metric is derived from:
Dh=x+By+C,
where:
Dh=distance value in pixel widths for a subsample point directly above or below a pixel centerpoint;
B=(xO-x1)/(y1-y0);
C=((x1*y0)-(x0*y1)/(y1-y0);
(x0,y0) and (x1,y1)=coordinate corresponding to two vertices that define said first edge.
9. The method of claim 8 further comprising the step of determining inside/outside status for each of said sample points by examining a sign of each corresponding vertical distance metric if said slope is within said range.
10. The method of claim 9 further comprising the step of determining inside/outside status for each of said sample points by examining a sign of each corresponding horizontal distance metric if said slope is not within said range.
11. The method of claim 10, wherein said merging step is accomplished by performing AND operations for each corresponding sample point of said first mask, said second mask, and said third mask.
12. The method of claim 11, wherein said array is comprised of an 8×8 matrix of sample points.
13. The method of claim 12, wherein said interpolating steps are accomplished by a table lookup.
14. In a computer system, an apparatus for generating a point sample mask having an array of sample points corresponding to a pixel, wherein each sample point has associated information specifying whether said sample point is inside or outside a polygon, said information being used for rendering said pixel for display by said computer system, said apparatus comprising:
a first generator for generating a first mask corresponding to a first edge of said polygon, said first mask specifying which ones of a first set of said sample points reside within a first half-plane defined by said first edge, wherein a sign of a vertical or horizontal distance metric corresponding to a first sample of said first set of sample points determines whether said first sample resides within said first half-plane;
a second generator coupled to said first generator for generating a second mask corresponding to a second edge of said polygon, said second mask specifying which ones of a second set of sample points reside within a second half-plane defined by said second edge, wherein a sign of a vertical or horizontal distance metric corresponding to a second sample of said second set of sample points determines whether said second sample resides within said second half-plane;
a third generator coupled to said second generator for generating a third mask corresponding to a third edge of said polygon, said third mask specifying which ones of a third set of sample points reside within a third half-plane defined by said third edge, wherein a sign of a vertical or horizontal distance metric corresponding to a third sample of said third set of sample points determines whether said third sample resides within said third half-plane;
a circuit coupled to said first, said second, and said third generators for merging said first mask, said second mask, and said third mask, resulting in said point sample mask.
15. The apparatus of claim 14 further comprising:
a means for determining whether a slope of said edge is within a range of +1 to -1;
a means for generating coefficients of said vertical distance metric if said slope is within said range;
a means for generating coefficients of said horizontal distance metric if said slope is not within said range.
16. The apparatus of claim 15 further comprising a multiplier for interpolating vertical distance metrics for a row of sample points if said slope is within said range.
17. The apparatus of claim 16 further comprising an adder for interpolating vertical distance metrics for a column of sample points if said slope is within said range.
18. The apparatus of claim 17 further comprising a multiplier for interpolating horizontal distance metrics for a column of sample points if said slope is not within said range.
19. The apparatus of claim 18 further comprising an adder for interpolating horizontal distance metrics for a row of sample points if said slope is not within said range.
20. The apparatus of claim 19, wherein a first vertical distance metric is derived from:
Dv=Ax+y+C,
where:
Dv=distance value in pixel widths for a subsample point directly to the left or right of a pixel centerpoint;
A=(y1 -y0)/(x1 -x0 ;
C=(2x0 y0 -x0 y1 -x1 y0)/(x1 -x0);
(x0,y0) and (x1,y1)=coordinate corresponding to two vertices that define said first edge.
21. The apparatus of claim 20, wherein a first horizontal distance metric is derived from:
Dh=x+By+C,
where:
Dh=distance value in pixel widths for a subsample point directly above or below a pixel centerpoint;
B=(x0-x1)/(y1-y0);
C=((x1*y0)-(x0*y1)/(y1-y0);
(x0,y0) and (x1,y1)=coordinate corresponding to two vertices that define said first edge.
22. The apparatus of claim 21 further comprising a means for determining inside/outside status for each of said sample points by examining a sign of each corresponding vertical distance metric if said slope is within said range.
23. The apparatus of claim 22 further comprising a means for determining inside/outside status for each of said sample points by examining a sign of each corresponding horizontal distance metric if said slope is not within said range.
24. The apparatus of claim 23 further comprising an AND circuit for performing AND operations on each corresponding sample point of said first mask, said second mask, and said third mask to produce said point sample mask.
25. The apparatus of claim 24, wherein said array is comprised of an 8×8 matrix of sample points.
26. The apparatus of claim 25 further comprising a table lookup for performing said interpolation.
US08/089,715 1993-07-09 1993-07-09 Apparatus and method for generating point sample masks in a graphics display system Expired - Lifetime US5369739A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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