Three-dimensional graphics processing is utilized in a number of applications, from electronic games, and movies to computer aided design (CAD). Conventionally, three-dimensional graphics processing includes a multi-step rendering process of transitioning from a database representation of three-dimensional objects to a two-dimensional projection of the object into a display space. The process generally includes setting up a polygon model (e.g., a plurality of primitives) of objects, applying linear transformation to each primitive, culling back facing primitives, clipping the primitives against a view volume, rasterizing the primitives to a pixel coordinate set, shading/lighting the individual pixels using interpolated or incremental shading techniques, and the like.
In the conventional art, aliased lines may be drawn differently depending upon the particular computer hardware. For example, when drawing a line strip, one or more pixels located at the end of one segment and the beginning of the next segment may be missed or may be lit twice. In another example, a line may be shifted in one direction with respect to the same line drawn by a different computer system. However, as computing device continue to progress it is desirable to rasterize lines so that they are drawn the same across various configurations of computer hardware.
Embodiments of the present invention are directed toward techniques for rasterizing lines. In one embodiment, a method of rasterizing lines includes receiving the starting and ending vertices of a given line. The starting and/or ending vertices may be conditioned. Thereafter, the pixels in which the line exits a diamond test area may be lighted.
In another embodiment, a computer-readable medium containing a plurality of instructions which when executed cause a computing device to implement a method of conditioning a line is disclosed. The method of conditioning the line includes pulling in an ending vertex of a given line if the ending vertex is in a given portion of a pixel, the ending vertex is in a second diamond test area but does not exit and both vertices of the given line are not in the same pixel. The method also includes pushing out a starting vertex if the starting vertex is in the given portion of the pixel and the given line exits a first diamond test area. The method may further include culling the given line if the ending vertex is in a given portion of the pixel, the ending vertex is in the second diamond test area but does not exit and both vertices of the given line are in the same pixel. If the given line is a short line and the given line is in the first diamond test area and the second diamond test area, wherein the given line is a short line if the corresponding coordinates of the starting and ending vertices are in the same pixel, the method may also cull the line.
In yet another embodiment, a processor includes a setup unit, a rasterizer communicatively coupled to the setup unit, and a data write unit communicatively coupled to the rasterizer. The setup unit receives drawing commands and parameters describing one or more geometric primitives, such as lines, polygons or the like. The rasterizer converts the geometric primitives into pixel data. The rasterizer includes line conditioner for pulling in an ending vertex of a given line if it is a given type, the ending vertex is in a given portion of a pixel, the ending vertex is in a second diamond test area but does not exit and both vertices of the given line are not in the same pixel. The line conditioner also pushes out the starting vertex of the given line if it is a given type, the starting vertex is in the given portion of the pixel and the given line exits a first diamond test area. The data write unit outputs the resulting pixel data after the conditioned lines have been converted to pixel data.
Embodiments of the present invention are 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:
FIGS. 6A-^6E show a flow diagram of a method of conditioning a line, in accordance with one embodiment of the present invention.
Reference will now be made in detail to the embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it is understood that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention.
Referring to
The computing device-readable media 115, 120, 125 may be characterized as primary memory and secondary memory. Generally, the secondary memory, such as a magnetic and/or optical storage, provides for non-volatile storage of computer-readable instructions and data for use by the computing device 100. For instance, the disk drive 120 may store the operating system (OS) 155 and applications and data 160. The primary memory, such as the system memory 115 and/or graphics memory 125, provides for volatile storage of computer-readable instructions and data for use by the computing device 100. For instance, the system memory 115 may temporarily store a portion of the operating system 155′ and a portion of one or more applications and associated data 160′ that are currently used by the CPU 110, GPU 150 and the like.
The computing device-readable media 115, 120, 125, I/O devices 120, 130, 135, 140, 145, and GPU 150 may be communicatively coupled to the processor 110 by a chip set 165 and one or more busses. The chipset 165 acts as a simple input/output hub for communicating data and instructions between the processor 110 and the computing device-readable media 115, 120, 125, I/O devices 120, 130, 135, 140, 145, and GPU 150. In one implementation, the chipset 165 includes a northbridge 170 and southbridge 175.
One or more of the processors 110, 150 implements a rasterization technique when rendering graphical data. In one implementation, images are off-loaded from the general purpose CPU 110 to the graphics processor 150 by transferring geometric primitive parameters, draw commands and instruction for controlling the operation of the GPU 150. The geometric primitives may be vertex data representations of lines, triangulated three dimensional models of objects and the like. The geometric primitives, draw commands and instructions are transferred from the CPU 110 to the GPU 150 utilizing a graphics application programming interface, such as the OpenGL-ES™ graphics language, Direct3D™, or the like. In response the GPU 150 generates a color and depth value for each pixel to be displayed. In another implementation, the GPU 150 may be an integral part of the CPU 110.
One or more processors 110, 150, in accordance with embodiments of the present invention, implement a concise and efficient implementation of well-defined rasterization rules. The rasterization rules utilize line conditioning in combination with a diamond exit technique as described in more detail below.
Referring now to
A graphical surface of an image and a display device may be divided into a plurality of pixels. The center 240 of each pixel 245 may be denoted by an “X.” In addition, the pixel may be logically divided into four quadrants in accordance with the conventional x-y-coordinate system. When determining whether a pixel 245 is lit or not, a diamond test area 250 may be utilized to test whether a given line is within the pixel 245 or not. The corners of the diamond test area may, for ease of understanding the present invention, be labeled as corners A, B, C and D starting at the top and proceeding in a clockwise direction around the perimeter of the diamond test area.
Referring now to
Referring now to
Operation of the processor 400 will be further explained in combination with a method of rasterizing lines as shown in
The rasterizer receives instructions and vertex data and performs rasterization thereupon. Rasterization includes “walking” the primitive and generating pixel packets that contain parameters (e.g., set of descriptions for each pixel). The rasterizer 420 includes line conditioner 440 for conditioning the starting and/or ending vertex of a line, or each segment of a line strip. In one implementation, the line conditioner 440 is implemented in a combination logic circuit. The line conditioner 440 is adapted to push out the start of the line or pull in the end of the line, at 510. In one implementation, the starting vertex of a given line type may be pushed out to catch the center of the pixel if the ending vertex is in a given portion of a pixel, the ending vertex is in a second diamond test area but does not exit and both vertices of the given line are not in the same pixel. The starting vertex of the given line type may be pushed out if the starting vertex is in a given portion of the pixel and the given line exits a first diamond test area. The line of the given type may also be culled if the ending vertex is in the given portion of the pixel, the ending vertex is in the second diamond test area but does not exit and both vertices of the given line are in the same pixel. The line may also be culled if it is a short line and in the first diamond test area and the second diamond test area, wherein the given line is a short line if the corresponding coordinates of the starting and ending vertices are in the same pixel.
The rasterizer 430 is adapted to determine if the line starts on a corner or edge of the appropriate diamond test area for a given pixel, at 515. The appropriate diamond test area is selected depending upon whether the line is an x-major or y-major line. If the line starts on an inclusive edge or corner the line starts in the given diamond test area. If the line starts on a non-inclusive edge or corner the line starts outside the given diamond test area.
The rasterizer 430 is also adapted to determine if the line ends on a corner or edge of the diamond test area, at 520. If the line ends on an inclusive edge or corner the line ends in the given diamond test area. If the line ends on a non-inclusive edge or corner the line the line ends outside the given diamond test area.
The rasterizer 430 is also adapted to determine if the line exits one or more diamond test areas for each pixel that is touched, at 525. A line touches a given pixel if the line exits the pixel's diamond test area, when traveling along the line from the start toward the end. The rasterizer 430 is adapted to light each pixel in which the line exits the diamond test area of the given pixel, at 530. The data write unit 430 outputs the resulting pixel data. In one implementation, the data write unit 430 writes the pixel data to a frame buffer.
Referring now to
At 604, any-coordinate that is outside a maximum and minimum value is adjusted to the respective maximum or minimum value. In particular, any-coordinate of a vertex that is greater than a given maximum is set to the maximum value. Similarly, any-coordinate of a vertex that is less than a given minimum is set to the minimum value.
At 606, the fractional portion of each coordinate of the starting and ending vertices is determined. If there is no fractional portion for a given coordinate, the value of the fractional portion is set to 1.0. At 608, the Manhattan distance from each coordinate to the pixel center is determined for each vertex. In one implementation, the Manhattan distance is calculated by subtracting 0.5 from the fractional portion of each coordinate of each vertex.
At 610, it is determined if the given line is an x-major line or a y-major line and if it has a positive or genitive slope. The line may be an “x-major” line if the slope is greater than or equal to −1 and less than or equal to 1 (e.g., more horizontal than vertical). The line may be a “y-major” line if the slope is less than −1 or greater than 1 (e.g., more vertical than horizontal).
At 612, it is determined if the line is a short line. A line is short if the corresponding coordinates of the starting and ending vertices are in the same pixel. In one implementation, an x-major segment is a short line if the difference between the x-coordinate value of the starting vertex and the fraction portion of the x-coordinate of the starting vertex is equal to the difference between the x-coordinate value of the ending vertex and the fraction portion of the x-coordinate of the ending vertex. For a y-major line, the line segment is a short line if the difference between the y-coordinate value of the starting vertex and the fraction portion of the y-coordinate of the starting vertex is equal to the difference between the y-coordinate value of the ending vertex and the fraction portion of the y-coordinate value of the ending vertex.
At 614, it is determined if the start of the line segment is in a first diamond and if the end of the line segment is in a second diamond based upon the Manhattan distances for the starting and ending vertices respectively. In one implementation, the start of the line segment (e.g., first vertex) is in a first diamond if the sum of the absolute value of the Manhattan distance for the x-coordinate of the starting vertex and the absolute value of the Manhattan distance for the y-coordinate of the starting vertex is less than 0.5. The end of the line segment is in a second diamond if the sum of the absolute value of the Manhattan distance for the x-coordinate of the ending vertex and the absolute value of the Manhattan distance for the y-coordinate of the ending vertex is less than 0.5.
At 616, it is determined if the starting and/or ending vertices touch the third or fourth quadrant of a pixel. In one implementation, the starting vertex touches the third quadrant if the difference between the fractional portions of its y-coordinate and x-coordinate is equal to 0.5, and if the fractional portion of its x-coordinate is greater than or equal to −0.5 and less than or equal to 0.0 and the fractional portion of its y-coordinate is greater than or equal to 0.0 and less than or equal to 0.5. The starting vertex touches the fourth quadrant if the sum or the fractional portions of its y-coordinate and x-coordinate is equal to 0.5, and if the fractional portion of its x-coordinate is greater than or equal to 0.0 and less than or equal to 0.5 and the fractional portion of its y-coordinate is greater than or equal to 0.0 and less than or equal to 0.5. The ending vertex touches the third quadrant if the difference between the fractional portions of its y-coordinate and x-coordinate is equal to 0.5, and if the fractional portion of its x-coordinate is greater than or equal to −0.5 and less than or equal to 0.0 and the fractional portion of its y-coordinate is greater than or equal to 0.0 and less than or equal to 0.5. The ending vertex touches the fourth quadrant if the sum of the fractional portions of its y-coordinate and x-coordinate is equal to 0.5, and if the fractional portion of its x-coordinate is greater than or equal to 0.0 and less than or equal to 0.5 and the fractional portion of its y-coordinate is greater than or equal to 0.0 and less than or equal to 0.5.
At 618, it is determined if the starting and/or ending vertices touch points A or C of a diamond test area. In one implementation, the starting vertex touches point A if the fractional portion of its x-coordinate is equal to 0.5 and the fractional portion of its y-coordinate is equal to 0.0. The starting vertex touches point C if the fractional portion of its x-coordinate is equal to −0.5 and the fractional portion of its y-coordinate is equal to 0.0. The ending vertex touches point A if the fractional portion of its x-coordinate is equal to 0.5 and the fractional portion of its y-coordinate is equal to 0.0. The ending vertex touches point C if the fractional portion of its x-coordinate is equal to −0.5 and the fractional portion of its y-coordinate is equal to 0.0.
At 620, it is determined if the line segment is in a first diamond test area and/or a second diamond test area based upon whether the vertices touch particular quadrants in the pixel and points in the diamond test area. In one implementation, the first vertex of an x-major line is not in the first diamond test area if the first vertex touches the third or fourth quadrants, does not touch point A, and does not touch point C. The second vertex of the x-major line is not in the second diamond test area if the second vertex touches the third or fourth quadrants, does not touch point A, and does not touch point C. For a y-major line, the first vertex is not in the first diamond test area if the first vertex touches the third or fourth quadrants, and does not touch point C. The second vertex of the y-major line is not in the second diamond test area if the second vertex touches the third or fourth quadrants, and does not touch point C.
At 622, the line may be culled if the line is a short line, as determined in process 412, and is in the first and second diamond test areas, as determined in process 620. Such lines may be culled so that very short lines are not drawn.
At 624, if a) the line is a positive (e.g., right-going) x-major line, b) the ending vertex is in a right half of a pixel (e.g., the ending vertex of the line will not cover the center), c) the ending vertex is in a second diamond but does not exit, and d) both vertices are in the same pixel than the line may be culled. However if both vertices are not in the same pixel then the line is a multi-pixel line that does not exit the second diamond and should be pulled back to miss the center of the pixel, at 626.
At 628, if a) the line is a positive x-major line, b) the starting vertex is in the right half of a pixel, and c) the line exits the diamond, then the line should be pushed out to catch the center of the pixel.
At 630, the line may be culled if a) the line is a negative (e.g., left-going) x-major line, b) the ending vertex is in a left half of a pixel, c) the ending vertex is in the diamond but does not exit, and d) both vertices are in the same pixel. However if both vertices are not in the same pixel then the line is a multi-pixel line that does not exit the second diamond and should be pulled back to miss the center of the pixel, at 632.
At 634, if a) the line is a negative x-major line, b) the starting vertex is in the left half of a pixel, and c) the line exits the diamond, then the line should be pushed out to catch the center of the pixel.
At 636, the line may be culled if a) the line is a positive y-major line, b) the ending vertex is in a bottom half of a pixel (e.g., the ending vertex of the line will not cover the center), c) the ending vertex is in the second diamond but does not exit, and d) both vertices are in the same pixel. However if both vertices are not in the same pixel then the line is a multi-pixel line that does not exit the second diamond and should be pulled back to miss the center of the pixel, at 638.
At 640, if a) the line is a positive y-major line, b) the starting vertex is in the bottom half of a pixel, and c) the line exits the diamond, then the line should be pushed out to catch the center of the pixel.
At 642, the line may be culled if a) the line is a negative (e.g., left-going) y-major line, b) the ending vertex is in the top half of a pixel, c) the ending vertex is in the diamond but does not exit, and d) both vertices are in the same pixel. However if both vertices are not in the same pixel then the line is a multi-pixel line that does not exit the second diamond and should be pulled back to miss the center of the pixel, at 644.
At 646, if a) the line is a negative y-major line, b) the starting vertex is in the top half of a pixel, and c) the line exits the diamond, then the line should be pushed out to catch the center of the pixel. The above described method of conditioning a line may be implemented in software, hardware, firmware or a combination thereof. An exemplary set of software instructions for implementing the above described method of conditioning a line is shown in
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4208810 | Rohner et al. | Jun 1980 | A |
| 4918626 | Watkins et al. | Apr 1990 | A |
| 5081594 | Horsley | Jan 1992 | A |
| 5287438 | Kelleher | Feb 1994 | A |
| 5313287 | Barton | May 1994 | A |
| 5432898 | Curb et al. | Jul 1995 | A |
| 5446836 | Lentz et al. | Aug 1995 | A |
| 5452104 | Lee | Sep 1995 | A |
| 5452412 | Johnson, Jr. et al. | Sep 1995 | A |
| 5483258 | Cornett et al. | Jan 1996 | A |
| 5543935 | Harrington | Aug 1996 | A |
| 5570463 | Dao | Oct 1996 | A |
| 5594854 | Baldwin et al. | Jan 1997 | A |
| 5623692 | Priem et al. | Apr 1997 | A |
| 5633297 | Valko et al. | May 1997 | A |
| 5664162 | Dye | Sep 1997 | A |
| 5815162 | Levine | Sep 1998 | A |
| 5854631 | Akeley et al. | Dec 1998 | A |
| 5854637 | Sturges | Dec 1998 | A |
| 5872902 | Kuchkuda et al. | Feb 1999 | A |
| 5977987 | Duluk, Jr. | Nov 1999 | A |
| 6028608 | Jenkins | Feb 2000 | A |
| 6034699 | Wong et al. | Mar 2000 | A |
| 6038348 | Carley | Mar 2000 | A |
| 6072500 | Foran et al. | Jun 2000 | A |
| 6104407 | Aleksic et al. | Aug 2000 | A |
| 6104417 | Nielsen et al. | Aug 2000 | A |
| 6115049 | Winner et al. | Sep 2000 | A |
| 6118394 | Onaya | Sep 2000 | A |
| 6128000 | Jouppi et al. | Oct 2000 | A |
| 6137918 | Harrington et al. | Oct 2000 | A |
| 6160557 | Narayanaswami | Dec 2000 | A |
| 6160559 | Omtzigt | Dec 2000 | A |
| 6188394 | Morein et al. | Feb 2001 | B1 |
| 6201545 | Wong et al. | Mar 2001 | B1 |
| 6204859 | Jouppi et al. | Mar 2001 | B1 |
| 6219070 | Baker et al. | Apr 2001 | B1 |
| 6249853 | Porterfield | Jun 2001 | B1 |
| 6259460 | Gossett et al. | Jul 2001 | B1 |
| 6323874 | Gossett | Nov 2001 | B1 |
| 6359623 | Larson | Mar 2002 | B1 |
| 6362819 | Dalal et al. | Mar 2002 | B1 |
| 6366289 | Johns | Apr 2002 | B1 |
| 6429877 | Stroyan | Aug 2002 | B1 |
| 6437780 | Baltaretu et al. | Aug 2002 | B1 |
| 6452595 | Montrym et al. | Sep 2002 | B1 |
| 6469707 | Voorhies | Oct 2002 | B1 |
| 6480205 | Greene et al. | Nov 2002 | B1 |
| 6501564 | Schramm et al. | Dec 2002 | B1 |
| 6504542 | Voorhies et al. | Jan 2003 | B1 |
| 6522329 | Ihara et al. | Feb 2003 | B1 |
| 6525737 | Duluk, Jr. et al. | Feb 2003 | B1 |
| 6529207 | Landau et al. | Mar 2003 | B1 |
| 6606093 | Gossett et al. | Aug 2003 | B1 |
| 6611272 | Hussain et al. | Aug 2003 | B1 |
| 6614444 | Duluk, Jr. et al. | Sep 2003 | B1 |
| 6614448 | Garlick et al. | Sep 2003 | B1 |
| 6624823 | Deering | Sep 2003 | B2 |
| 6633197 | Sutardja | Oct 2003 | B1 |
| 6633297 | McCormack et al. | Oct 2003 | B2 |
| 6646639 | Greene et al. | Nov 2003 | B1 |
| 6671000 | Cloutier | Dec 2003 | B1 |
| 6693637 | Koneru et al. | Feb 2004 | B2 |
| 6693639 | Duluk, Jr. et al. | Feb 2004 | B2 |
| 6697063 | Zhu | Feb 2004 | B1 |
| 6717576 | Duluk, Jr. et al. | Apr 2004 | B1 |
| 6717578 | Deering | Apr 2004 | B1 |
| 6734861 | Van Dyke et al. | May 2004 | B1 |
| 6741247 | Fenney | May 2004 | B1 |
| 6747057 | Ruzafa et al. | Jun 2004 | B2 |
| 6765575 | Voorhies et al. | Jul 2004 | B1 |
| 6778177 | Furtner | Aug 2004 | B1 |
| 6788301 | Thrasher | Sep 2004 | B2 |
| 6798410 | Redshaw et al. | Sep 2004 | B1 |
| 6803916 | Ramani et al. | Oct 2004 | B2 |
| 6819332 | Baldwin | Nov 2004 | B2 |
| 6833835 | van Vugt | Dec 2004 | B1 |
| 6906716 | Moreton et al. | Jun 2005 | B2 |
| 6938176 | Alben et al. | Aug 2005 | B1 |
| 6940514 | Wasserman et al. | Sep 2005 | B1 |
| 6947057 | Nelson et al. | Sep 2005 | B2 |
| 6956579 | Diard et al. | Oct 2005 | B1 |
| 6961057 | Van Dyke et al. | Nov 2005 | B1 |
| 6978317 | Anantha et al. | Dec 2005 | B2 |
| 7002591 | Leather et al. | Feb 2006 | B1 |
| 7009607 | Lindholm et al. | Mar 2006 | B2 |
| 7009615 | Kilgard et al. | Mar 2006 | B1 |
| 7061495 | Leather | Jun 2006 | B1 |
| 7064771 | Jouppi et al. | Jun 2006 | B1 |
| 7075542 | Leather | Jul 2006 | B1 |
| 7081902 | Crow et al. | Jul 2006 | B1 |
| 7119809 | McCabe | Oct 2006 | B1 |
| 7126600 | Fowler et al. | Oct 2006 | B1 |
| 7154066 | Talwar et al. | Dec 2006 | B2 |
| 7158148 | Toji et al. | Jan 2007 | B2 |
| 7170515 | Zhu | Jan 2007 | B1 |
| 7184040 | Tzvetkov | Feb 2007 | B1 |
| 7224364 | Yue et al. | May 2007 | B1 |
| 7307628 | Goodman et al. | Dec 2007 | B1 |
| 7307638 | Leather et al. | Dec 2007 | B2 |
| 7362325 | Anderson | Apr 2008 | B2 |
| 7382368 | Molnar et al. | Jun 2008 | B1 |
| 7414636 | Kokojima et al. | Aug 2008 | B2 |
| 7453466 | Hux et al. | Nov 2008 | B2 |
| 7483029 | Crow et al. | Jan 2009 | B2 |
| 7548996 | Baker et al. | Jun 2009 | B2 |
| 7551174 | Iourcha et al. | Jun 2009 | B2 |
| 7633506 | Leather et al. | Dec 2009 | B1 |
| 7634637 | Lindholm et al. | Dec 2009 | B1 |
| 7791617 | Crow et al. | Sep 2010 | B2 |
| 7965902 | Zelinka et al. | Jun 2011 | B1 |
| 8063903 | Vignon et al. | Nov 2011 | B2 |
| 8144166 | Lyapunov et al. | Mar 2012 | B2 |
| 20010005209 | Lindholm et al. | Jun 2001 | A1 |
| 20020050979 | Oberoi et al. | May 2002 | A1 |
| 20020097241 | McCormack et al. | Jul 2002 | A1 |
| 20020130863 | Baldwin | Sep 2002 | A1 |
| 20020140655 | Liang et al. | Oct 2002 | A1 |
| 20020158885 | Brokenshire et al. | Oct 2002 | A1 |
| 20020196251 | Duluk, Jr. et al. | Dec 2002 | A1 |
| 20030067468 | Duluk, Jr. et al. | Apr 2003 | A1 |
| 20030076325 | Thrasher | Apr 2003 | A1 |
| 20030122815 | Deering | Jul 2003 | A1 |
| 20030163589 | Bunce et al. | Aug 2003 | A1 |
| 20030194116 | Wong et al. | Oct 2003 | A1 |
| 20030201994 | Taylor et al. | Oct 2003 | A1 |
| 20040085313 | Moreton et al. | May 2004 | A1 |
| 20040130552 | Duluk, Jr. et al. | Jul 2004 | A1 |
| 20040183801 | Deering | Sep 2004 | A1 |
| 20040196285 | Rice et al. | Oct 2004 | A1 |
| 20040207642 | Crisu et al. | Oct 2004 | A1 |
| 20040246251 | Fenney et al. | Dec 2004 | A1 |
| 20050030314 | Dawson | Feb 2005 | A1 |
| 20050041037 | Dawson | Feb 2005 | A1 |
| 20050066148 | Luick | Mar 2005 | A1 |
| 20050122338 | Hong et al. | Jun 2005 | A1 |
| 20050134588 | Aila et al. | Jun 2005 | A1 |
| 20050134603 | Iourcha et al. | Jun 2005 | A1 |
| 20050179698 | Vijayakumar et al. | Aug 2005 | A1 |
| 20050259100 | Teruyama | Nov 2005 | A1 |
| 20050275663 | Kokojima et al. | Dec 2005 | A1 |
| 20060033745 | Koselj et al. | Feb 2006 | A1 |
| 20060044317 | Bourd et al. | Mar 2006 | A1 |
| 20060132495 | Anderson | Jun 2006 | A1 |
| 20060170690 | Leather | Aug 2006 | A1 |
| 20060203005 | Hunter | Sep 2006 | A1 |
| 20060245001 | Lee et al. | Nov 2006 | A1 |
| 20060267981 | Naoi | Nov 2006 | A1 |
| 20070139440 | Crow et al. | Jun 2007 | A1 |
| 20070268298 | Alben et al. | Nov 2007 | A1 |
| 20070273689 | Tsao | Nov 2007 | A1 |
| 20070296725 | Steiner et al. | Dec 2007 | A1 |
| 20080024497 | Crow et al. | Jan 2008 | A1 |
| 20080024522 | Crow et al. | Jan 2008 | A1 |
| 20080100618 | Woo et al. | May 2008 | A1 |
| 20080198163 | Nakahashi et al. | Aug 2008 | A1 |
| 20080273218 | Kitora et al. | Nov 2008 | A1 |
| Number | Date | Country |
|---|---|---|
| 101093578 | Dec 2007 | CN |
| 06180758 | Jun 1994 | JP |
| 10134198 | May 1998 | JP |
| 11195132 | Jul 1999 | JP |
| 2005182547 | Jul 2005 | JP |
| 0013145 | Mar 2000 | WO |
| Entry |
|---|
| Blythe, OpenGL section 3.4.1, Basic Line Segment Rasterization, Mar. 29, 1997, pp. 1-3. |
| Boyer, et al.; “Discrete Analysis for Antialiased Lines,” Eurographics 2000; 3 Pages. |
| Crow; “The Use of Grayscale for Improves Raster Display of Vectors and Characters;” University of Texas, Austin, Texas; Work supported by the National Science Foundation unser Grants MCS 76-83889; pp. 1-5: ACM Press. |
| Foley, J. “Computer Graphics: Principles and Practice”, 1987, Addison-Wesley Publishing, 2nd Edition, p. 545-546. |
| Fuchs; “Fast Spheres Shadow, Textures, Transparencies, and Image Enhancements in Pixel-Planes”; ACM; 1985; Department of Computer Science, University of North Carolina at Chapel Hill, Chapel Hill, NC 27514. |
| A hardware assisted design rule check architecture Larry Seiler Jan. 1982 Proceedings of the 19th conference on design automation DAC '82 Publisher: IEEE Press. |
| A parallel algorithm for polygon rasterization Juan Pineda Jun. 1988 ACM. |
| A VLSI architecture for updating raster-scan displays Satish Gupta, Robert F. Sproull, Ivan E. Sutherland Aug. 1981 ACM SIGGRAPH Computer Graphics, Proceedings of the 8th annual conference on Computer graphics and interactive techniques SIGGRAPH '81, vol. 15 Issue 3 Publisher: ACM Press. |
| Boyer, et al.; “Discrete Analysis for Antialiased Lines;” Eurographics 2000; 3 Pages. |
| Crow; “The Use of Grayscale for Improves Raster Display of Vectors and Characters;” University of Texas, Austin, Texas; Work supported by the National Science Foundation unser Grant MCS 76-83889; pp. 1-5. |