EP0644509A2 - Method and apparatus for filling polygons - Google Patents

Method and apparatus for filling polygons Download PDF

Info

Publication number
EP0644509A2
EP0644509A2 EP94305996A EP94305996A EP0644509A2 EP 0644509 A2 EP0644509 A2 EP 0644509A2 EP 94305996 A EP94305996 A EP 94305996A EP 94305996 A EP94305996 A EP 94305996A EP 0644509 A2 EP0644509 A2 EP 0644509A2
Authority
EP
European Patent Office
Prior art keywords
polygon
computing
span
spans
rendering
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.)
Granted
Application number
EP94305996A
Other languages
German (de)
French (fr)
Other versions
EP0644509B1 (en
EP0644509A3 (en
Inventor
Avijit Saha
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of EP0644509A2 publication Critical patent/EP0644509A2/en
Publication of EP0644509A3 publication Critical patent/EP0644509A3/en
Application granted granted Critical
Publication of EP0644509B1 publication Critical patent/EP0644509B1/en
Anticipated expiration legal-status Critical
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

Definitions

  • the present invention relates generally to computer graphics systems and more particularly to a method and apparatus for filling polygons to be displayed.
  • a two and three dimensional graphical picture on a two dimensional display.
  • a picture is a construct or image that may be stored in memory as a set of polygons or objects that are tessellated into polygons.
  • the polygons are then rendered using processes that are typically computationally intensive.
  • Fig. 1 is an illustration of several graphical polygons to be rendered on a display 10.
  • Polygon 20 is a quadrilateral defined by vertices A, B, C and D.
  • Polygon 21 is a quadrilateral that has been overlapped by polygon 20. As a result, quadrilateral 21 has been modified to be a polygon with seven edges defined by vertices E, F, C, G, H, I and J.
  • Polygon 22 is a triangle also overlapped by quadrilateral 20 such that triangle 22 is a six sided polygon defined by vertices K, L, M, N, B and O. Also shown is a circle that has been tessellated into eight triangles in order to efficiently render the circle using polygons with straight edges.
  • triangles comprising circle 25 are defined by vertices P, Q, R, S, T, U, V, W and X.
  • triangle 25A of tessellated circle 25 is defined by vertices P, T and U and triangle 25B is defined by vertices P, U and V.
  • Liang et al. U.S. Patent No. 4,758,965 discloses one approach to filling polygons being displayed.
  • Liang et al. teaches using two modified Bresenham line generators.
  • the Bresenham line generators are used to generate the edges to the polygon for display while also providing parameters that can be used to generate fill lines connecting the edges by a separate hardware element.
  • triangles 25A and 25B have edge P ⁇ U in common.
  • the edge P ⁇ U may be rendered twice, firstly when rendering triangle 25A, and secondly when rendering triangle 25B.
  • this is an inefficient process where the same pixel may be rendered more than one time thereby slowing the rendering process.
  • other techniques may disregard rendering borders or use other non-consistent approaches such that there may be gaps on edge P -> U that are not rendered during the rendering of either polygon. This results in gaps or blank spaces left in the middle of tessellated or overlapping polygons.
  • tessellated circle 25 may typically be a single color such as blue but that polygons 20 and 21 may be a different color such as red and green. In either of the above described cases, gaps which typically remain at the background color, which may be white, and may show through the polygon. In addition, if the edges are rendered multiple times, the edges between conflicting colors may be jagged and displeasing to the eye.
  • X-fill standard states that all pixels within the edges of a polygon are to be rendered or filled for that polygon. In addition, if a pixel is directly on or just outside a polygon edge, then render the pixel only if the pixel is on the right side of the polygon being rendered.
  • a method for rendering a graphical polygon comprising the steps of: computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon; computing at least one color value for each computed span; and rendering the spans on a display using the computed color values.
  • apparatus for rendering a graphical polygon the polygon being defined by connecting edges surrounding a polygon interior
  • the apparatus comprising: means for computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon; means for computing at least one color value for each computed span; and means for rendering the spans on a display using the computed color values.
  • the filling technique renders each row of pixels of a polygon only once. That is, the edges and the interior of a polygon for a given row are all included in the same span such that the row of pixels are only filled and rendered once.
  • the present invention does not require that the edges and interior of a polygon be filled and rendered separately.
  • Fig. 2 is a block diagram of a typical digital computer 100 utilized by a preferred embodiment of the invention.
  • the computer includes main processor(s) 110 coupled to a memory 120 and a hard disk 125 in computer box 105 with input device(s) 130 and output device(s) 140 attached.
  • Main processor(s) 110 may include a single processor or multiple processors.
  • Input device(s) 130 may include a keyboard, mouse, tablet or other types of input devices.
  • Output device(s) 140 may include a text monitor, plotter or other types of output devices.
  • Computer readable removable media 190 such as a magnetic diskette or a compact disc, may be inserted into an input/output device 180, such as a disk drive or a CD-ROM (compact disc - read only memory) drive.
  • Data is read from or written to the removable media by the I/O device under the control of the I/O device controller 170.
  • the I/O device controller communicates with the main processor through across bus 160.
  • Main memory 120, hard disk 125 and removable media 190 are all referred to as memory for storing data for processing by main processor(s) 110.
  • the main processor may also be coupled to graphics output device(s) 150 such as a graphics display through a graphics adapter 200.
  • Graphics adapter 200 receives instructions regarding graphics from main processor(s) 110 on bus 160. The graphics adapter then executes those instructions with graphics adapter processor(s) 220 coupled to a graphics adapter memory 230. The graphics processors in the graphics adapter then execute those instructions and updates frame buffer(s) 240 based on those instructions.
  • Graphic processors 220 may also include specialized rendering hardware for rendering specific types of primitives.
  • Frame buffer(s) 240 includes data for every pixel to be displayed on the graphics output device.
  • a RAMDAC (random access memory digital-to-analog converter) 250 converts the digital data stored in the frame buffers into RGB signals to be provided to the graphics display 150 thereby rendering the desired graphics output from the main processor.
  • Fig. 3 is a block diagram illustrating the layers of code typically utilized by the host computer and graphics adapter to perform graphics functions.
  • An operating system 300 such as UNIX provides the primary control of the host computer. Coupled to the operating system is an operating system kernel 310 which provides the hardware intensive tasks for the operating system. The operating system kernel communicates directly with the host computer microcode 320. The host computer microcode is the primary instruction set executed by the host computer processor. Coupled to the operating system 300 are graphics applications 330 and 332.
  • This graphics application software can include software packages such as Silicon Graphic's GL, IBM's graPHIGS, MIT's PEX, etc. This software provides the primary functions of two dimensional or three dimensional graphics.
  • Graphics applications 330 and 332 are coupled to graphics application API (application program interface) 340 and 342, respectively.
  • the API provides many of the computationally intensive tasks for the graphics application and provides an interface between the application software and software closer to the graphics hardware such as a device driver for the graphics adapter.
  • API 340 and 342 may communicate with a GAI (graphics application interface) 350 and 352, respectively.
  • GAI graphics application interface
  • the GAI provides an interface between the application API and a graphics adapter device driver 370.
  • the API also performs the function of the GAI.
  • the graphics application, API, and GAI are considered by the operating system and the device driver to be a single process. That is, graphics applications 330 and 332, API 340 and 342, and GAI 350 and 352 are considered by operating system 300 and device driver 370 to be processes 360 and 362, respectively.
  • the processes are identified by the operating system and the device driver by a process identifier (PID) that is assigned to the process by the operating system kernel.
  • PID process identifier
  • Processes 360 and 362 may use the same code that is being executed twice simultaneously, such as two executions of a program in two separate windows. The PID is used to distinguish the separate executions of the same code.
  • the device driver is a graphics kernel which is an extension of the operating system kernel 310.
  • the graphics kernel communicates directly with microcode of the graphics adapter 380.
  • the GAI or the API if no GAI layer is used, may request direct access from the GAI or API to the adapter microcode by sending an initial request instruction to the device driver.
  • many graphics systems also allow the adapter microcode to request direct access from the adapter microcode to the GAI or API if no GAI is used by sending an initial request instruction to the device driver. Both processes will hereinafter be referred to as direct memory access (DMA).
  • DMA direct memory access
  • the DMA provides for a quicker transmission of data between the host computer and the adapter by eliminating the need to go through the display driver other than the initial request for the device driver to set up the DMA.
  • the adapter microcode utilizes context switching which allows the adapter microcode to replace the current attributes being utilized by the adapter microcode. Context switching is used when the adapter microcode is to receive an instruction from a graphics application that utilizes different attributes than the adapted microcode is currently using. The context switch is typically initiated by the device driver which recognizes the attribute changes.
  • Blocks 300-340 are software code layers that are typically independent of the type of graphics adapter being utilized.
  • Blocks 350-380 are software code layers that are typically dependent upon the type of graphics adapter being utilized. For example, if a different graphics adapter were to be used by the graphics application software, then a new GAI, graphics kernel and adapter microcode would be needed.
  • blocks 300-370 typically reside on and are executed by the host computer.
  • the adapter microcode 380 typically resides on and is executed by the graphics adapter. However, in some cases, the adapter microcode is loaded into the graphics adapter by the host computer during initialization of the graphics adapter.
  • the user instructs the graphics application to construct an image from a two or three dimensional model.
  • the user first selects the location and type of light sources.
  • the user then instructs the application software to build the desired model from a set of predefined or user defined objects.
  • Each object may include one or more coplanar drawing primitives describing the object. For example, a set of drawing primitives such as many triangles may be used to define the surface of an object.
  • the user then provides a perspective in a window to view the model, thereby defining the desired image.
  • the application software then starts the rendering of the image from the model by sending the drawing primitives describing the objects to the adapter microcode through the API, the GAI, and then the device driver unless DMA is used.
  • the adapter microcode then renders the image on the graphics display by clipping (i.e. not using) those drawing primitives not visible in the window and the adapter microcode fills each remaining drawing primitive into visible pixels from the perspective given by the user.
  • the pixels are then loaded into the frame buffer, often with the use of a depth buffer in the case of a three dimensional model.
  • This step is very computationally intensive due to the number of drawing primitives, variables, and pixels involved.
  • the resulting image stored in the frame buffer and displayed on the graphics display typically does not carry the original information such as which drawing primitive or object the pixel was derived from. As a result, the image may need to be rerendered in part or in whole if the window, the user perspective, the model, the lighting, etc. are modified.
  • the filling technique could be utilized in many locations such as the adapter microcode which is close to the adapter frame buffer. This approach would also be relatively quick and fairly easy to implement.
  • the filling technique could be applied in the graphics application software wherein the rendered image is also stored in system memory either prior to the image being rendered or subsequently by the graphics adapter passing the data back up to the graphics application software. This approach would be much slower but would allow for utilization of this technique on preexisting graphics adapters.
  • the filling technique could also be implemented in hardware in the graphics adapter processor. This approach is extremely quick but may necessitate specialized hardware. However, this approach could also enable parallelization of the present invention to further speed the technique. This would allow for rapid filling of primitives to be displayed by the graphics adapter. As would be obvious to one of ordinary skill in the art, the present technique would be applied in many other locations within the host computer or graphics adapter.
  • Figs. 4A-4B are flowcharts illustrating rendering a polygon according to a preferred embodiment of the invention.
  • a polygon is received and stored in memory for filling and rendering.
  • the polygons received for filling and rendering may be provided by the graphics processor, including tessellated spheres or other objects that have been preprocessed to handle overlapping polygons.
  • the polygons received for rendering may be from graphics memory or from main memory.
  • the data or commands received describing the polygon includes N, equal to the number of vertices in the polygon, and (X, Y) coordinates for each of the vertices.
  • the polygons will be described in two dimensions with X and Y coordinates.
  • polygons filled using the preferred embodiment either be convex or be concave only in the X direction.
  • Polygons concave in the Y direction may also be handled by applying the present invention with the X and Y variable reversed such that vertical spans are generated.
  • the polygon data is stored in graphics memory as shown in Fig. 5.
  • Each of the vertices is assigned an identifier 610.
  • vertex A of polygon 20 shown in Fig. 1 has coordinate values (X1,Y1) and is assigned an identifier 00.
  • the vertices are stored in order of contiguousness in Fig. 5 such that the vertex order of A, B, C, D is retained.
  • the vertex having the minimum Y value is determined.
  • the (X,Y) coordinates are 0 in the lower left-hand corner of the display and increase in value towards the upper right-hand corner.
  • the point of origin of the axis is in the upper left-hand corner.
  • the vertex having the minimum y value in the current example is vertex C having identifier value 10. It is from this point that the polygon is split into a series of horizontal spans that will be rendered.
  • the rendering may begin at the maximum Y value for utilizing horizontal spans or at the minimum or maximum X value for utilizing vertical spans.
  • the first vertex may be rendered as a point. However, in the preferred embodiment, the first vertex is not rendered unless one of the first edges is a horizontal edge.
  • the right and/or left edges of the polygon are determined.
  • the edge C ⁇ D would be the left edge and the edge C ⁇ B would be the right edge.
  • either edge can be assigned as being the left edge or right edge since the direction of the span is determined in step 470 below.
  • the edges are determined by using the vertex identifiers. For example, the next vertex of the right edge is determined by subtracting one from the C vertex identifier using modulo N arithmetic and the next vertex of the left edge is determined by adding one to the C vertex identifier using modulo N arithmetic. Modulo N arithmetic allows wrapping the vertex list circularly.
  • next vertex of the right edge is (10 - 01) modulo 4 in base 2 arithmetic. This results in 01 which is the identifier for vertex B. If this step is not being executed for a first time (i.e. processing continuing from A2), then it may be a single edge being initialized as will be seen below.
  • step 440 dual Bresenham line generators are initialized for each edge initialized in step 430.
  • the Bresenham line draw technique is well known in the art and is described in "Computer Graphics, Principles and Practice", second edition, by Foley, Van Dam, Finer and Hughes, 1990, pages 72-81. However, other techniques other than the Bresenham line drawing technique may be utilized.
  • , dx
  • , d (the error term) 2*
  • , incrNE (Northeast correction factor) 2*(
  • ), and incrE 2*
  • the Bresenham line draw technique typically works on lines less than 45 in the first quadrant of a typical cartesian coordinate system. Other slopes can be handled by suitable reflections about the principal axis.
  • the Bresenham line draw technique is applied unmodified to lines that extend from the origin point into octant 1A. All other lines extending into other octants are reflected or flipped such that they extend into octant 1A. The original octant of the line is retained for use as described below.
  • TABLE 1 below provides a list of variables that have values based on the octant the line travels through. These variables are ndy (negative dy), ndx (negative dx) and mf (majorflip). These variables are used in incrementing X and Y coordinates in the Bresenham Line drawing technique.
  • both Bresenham generators are incremented to the next Y value.
  • Fig. 6 illustrates this step according to the preferred embodiment of the invention.
  • the next points will calculate by the Bresenham generator will be current points C L and C R (not in brackets[ ]).
  • error terms will also be generated for these two points.
  • OCTANT VARIABLES Octant ndy ndx mf 1A 0 0 0 1B 0 0 1 2A 0 1 0 2B 0 1 1 3A 1 1 0 3B 1 1 1 4A 1 0 0 4B 1 0 1
  • step 460 the error term d is also determined for points to the left and right of each point generated. In the current example as illustrated in Fig. 7, this will be points N L and P L (not in brackets[ ]) for the next and previous points on the left edge, and P R and N R (not in brackets[ ]) for the previous and next vertices for the right edge.
  • step 470 it is determined which direction the span currently runs. For example, during the initial processing, the right line may of actually been initialized as the left line and vice versa. In addition, the vertices may have crossed, such as in an upright figure-eight type polygon, concave in the X direction, such that the right edge has now become left edge.
  • the determination of which direction the span runs is obtained by subtracting the X coordinate for C L from C R . If the result is greater than 0, then the edges are properly labelled. If the result is negative, then the edges are reversed. If the result is zero, then additional processing is required. In the zero case, various variables are reviewed to determine whether the edges are backwards and need to be reversed for filling and rendering.
  • step 480 it is determined from these error terms whether or not to render the span given the current error terms provided in step 450. That is, for each edge one of the three points should have a positive error term and one of the three points should have a negative error term. If it is determined that the span may need to include more points on the current y line, then execution proceeds to step 490, else processing continues to step 500.
  • the right line has all three points are within the polygon such that all the error terms will be the same sign.
  • the left line has two points within the polygon and one outside the polygon such that the error terms do not all have the same sign. As a result, processing would continue to step 490 for incrementing the right line only.
  • step 490 the Bresenham generator provides additional points for the edge or edges that may include more points on the span. Processing then returns to step 460 for determining the error terms for the points left and right of each point generated. In the current example of Fig. 7, there would be new values for P R , C R , and N R shown in brackets.
  • step 500 it is determined which edge points are to be filled and rendered in the span.
  • span 700 shown in Fig. 7 would run from C L to [C R ] because they outline the edges of the polygon for that span.
  • N L and [N R ] are both outside the polygon edges, so they would not be filled and rendered.
  • N L were actually on the edge, it would be filled and rendered with the span and if [N R ] were actually on the edge it would not be filled and rendered with the span. This would prevent the problems of gaps and duplication described above.
  • a different field rule were used other than X-fill, other such points may be determined to be filled and rendered with the span.
  • the span is filled and rendered. That is, the span is assigned a color or colors and also may be interpolated to provided realistic images. In addition, the end points may be assigned a different color to illustrate the borders.
  • the span is then rendered by loading the values for each of the pixels in the span into the frame buffer. The span is then displayed on the display as a result of loading the frame buffer.
  • the span is a line with two endpoints and a single color that is passed onto additional apparatus to calculate all the pixels within the line and assign each pixel the color assigned to the span.
  • step 520 it is determined whether the rendered span was the last span for either the left or right edge. This is determined by comparing the current Y value for the span to the Y value for each of the ending vertices for the spans. If this is not the last span for either edge, then processing returns to step 450. If this is the last span for either edge, then in step 530 it is determined whether this is the last span in the polygon. This is determined by checking whether this is the last span for both edges and whether the edges end with the same vertex. If so, then rendering of the polygon is completed and processing ends. If not, then processing returns to step 430 above for initialization of a new edge or edges.
  • the present invention is particularly advantageous because it allows the edges to be rendered in the same span as the filled interior of a polygon. In addition, this allows the edges to be more carefully evaluated as to which points of the edges are rendered to prevent gaps between polygons and to prevent calculating the same points more than once. Furthermore, the present invention allows the polygon, including the edges, to be filled and rendered with very little working storage requirements. That is, no fill bit planes are needed for implementing the present invention.
  • the polygons being filled may have nonlinear edges that are calculated by using nonlinear incremental techniques such as the Bresenham circle scan conversion technique.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

A method for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, including the steps of computing multiple spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon, computing at least one color value for each computed span, and rendering the spans on a display using the computed color values.
In addition, an apparatus for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, including apparatus for computing multiple spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon, apparatus for computing at least one color value for each computed span, and apparatus for rendering the spans on a display using the computed color values.

Description

  • The present invention relates generally to computer graphics systems and more particularly to a method and apparatus for filling polygons to be displayed.
  • In computer graphics systems, it is desired to represent a two and three dimensional graphical picture on a two dimensional display. Typically, such a picture is a construct or image that may be stored in memory as a set of polygons or objects that are tessellated into polygons. To generate the picture on the display, the polygons are then rendered using processes that are typically computationally intensive.
  • Fig. 1 is an illustration of several graphical polygons to be rendered on a display 10. Polygon 20 is a quadrilateral defined by vertices A, B, C and D. Polygon 21 is a quadrilateral that has been overlapped by polygon 20. As a result, quadrilateral 21 has been modified to be a polygon with seven edges defined by vertices E, F, C, G, H, I and J. Polygon 22 is a triangle also overlapped by quadrilateral 20 such that triangle 22 is a six sided polygon defined by vertices K, L, M, N, B and O. Also shown is a circle that has been tessellated into eight triangles in order to efficiently render the circle using polygons with straight edges. The triangles comprising circle 25 are defined by vertices P, Q, R, S, T, U, V, W and X. For example, triangle 25A of tessellated circle 25 is defined by vertices P, T and U and triangle 25B is defined by vertices P, U and V.
  • Liang et al., U.S. Patent No. 4,758,965, discloses one approach to filling polygons being displayed. Liang et al. teaches using two modified Bresenham line generators. The Bresenham line generators are used to generate the edges to the polygon for display while also providing parameters that can be used to generate fill lines connecting the edges by a separate hardware element.
  • One difficulty in rendering multiple polygons that overlap or touch, including Liang et al., is in rendering the common edges of the polygons. For example, triangles 25A and 25B have edge P → U in common. In many typical rendering techniques, the edge P → U may be rendered twice, firstly when rendering triangle 25A, and secondly when rendering triangle 25B. However, this is an inefficient process where the same pixel may be rendered more than one time thereby slowing the rendering process. In addition, other techniques may disregard rendering borders or use other non-consistent approaches such that there may be gaps on edge P -> U that are not rendered during the rendering of either polygon. This results in gaps or blank spaces left in the middle of tessellated or overlapping polygons. Please note also that tessellated circle 25 may typically be a single color such as blue but that polygons 20 and 21 may be a different color such as red and green. In either of the above described cases, gaps which typically remain at the background color, which may be white, and may show through the polygon. In addition, if the edges are rendered multiple times, the edges between conflicting colors may be jagged and displeasing to the eye.
  • As a result of the above described problems, attempts have been made to provide a set of rules for filling polygons to prevent leaving gaps and also to prevent rendering the same pixels twice. One example of this has been promulgated by the M.I.T. (Massachusetts Institute of Technology) X-Consortium called the X-fill standard. The X-fill standard states that all pixels within the edges of a polygon are to be rendered or filled for that polygon. In addition, if a pixel is directly on or just outside a polygon edge, then render the pixel only if the pixel is on the right side of the polygon being rendered.
  • In accordance with the present invention there is now provided a method for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, comprising the steps of: computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon; computing at least one color value for each computed span; and rendering the spans on a display using the computed color values.
  • Viewing the present invention from another aspect, there is now provided apparatus for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, the apparatus comprising: means for computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon; means for computing at least one color value for each computed span; and means for rendering the spans on a display using the computed color values.
  • A preferred embodiment of the present invention will now be described with reference to the accompanying drawings in which:
    • Fig. 1 is an illustration of several graphical polygons to be rendered on a display;
    • Fig. 2 is a diagram of a typical digital computer utilized by a preferred embodiment of the invention;
    • Fig. 3 is a block diagram illustrating the layers of code typically utilized by the host computer and graphics adapter to perform graphics functions;
    • Figs. 4A-4B are flowcharts illustrating rendering a polygon according to a preferred embodiment of the invention;
    • Fig. 5 illustrates data describing a polygon that is stored in graphics memory;
    • Fig. 6 illustrates eight octants of a cartesian coordinate plane; and
    • Fig. 7 illustrates incrementing polygon edges to the next Y value according to the preferred embodiment of the invention.
  • Described in the following is an improved polygon filling technique. In the preferred embodiment, the filling technique renders each row of pixels of a polygon only once. That is, the edges and the interior of a polygon for a given row are all included in the same span such that the row of pixels are only filled and rendered once. As a result, the present invention does not require that the edges and interior of a polygon be filled and rendered separately.
  • Fig. 2 is a block diagram of a typical digital computer 100 utilized by a preferred embodiment of the invention. The computer includes main processor(s) 110 coupled to a memory 120 and a hard disk 125 in computer box 105 with input device(s) 130 and output device(s) 140 attached. Main processor(s) 110 may include a single processor or multiple processors. Input device(s) 130 may include a keyboard, mouse, tablet or other types of input devices. Output device(s) 140 may include a text monitor, plotter or other types of output devices. Computer readable removable media 190, such as a magnetic diskette or a compact disc, may be inserted into an input/output device 180, such as a disk drive or a CD-ROM (compact disc - read only memory) drive. Data is read from or written to the removable media by the I/O device under the control of the I/O device controller 170. The I/O device controller communicates with the main processor through across bus 160. Main memory 120, hard disk 125 and removable media 190 are all referred to as memory for storing data for processing by main processor(s) 110.
  • The main processor may also be coupled to graphics output device(s) 150 such as a graphics display through a graphics adapter 200. Graphics adapter 200 receives instructions regarding graphics from main processor(s) 110 on bus 160. The graphics adapter then executes those instructions with graphics adapter processor(s) 220 coupled to a graphics adapter memory 230. The graphics processors in the graphics adapter then execute those instructions and updates frame buffer(s) 240 based on those instructions. Graphic processors 220 may also include specialized rendering hardware for rendering specific types of primitives. Frame buffer(s) 240 includes data for every pixel to be displayed on the graphics output device. A RAMDAC (random access memory digital-to-analog converter) 250 converts the digital data stored in the frame buffers into RGB signals to be provided to the graphics display 150 thereby rendering the desired graphics output from the main processor.
  • Fig. 3 is a block diagram illustrating the layers of code typically utilized by the host computer and graphics adapter to perform graphics functions. An operating system 300 such as UNIX provides the primary control of the host computer. Coupled to the operating system is an operating system kernel 310 which provides the hardware intensive tasks for the operating system. The operating system kernel communicates directly with the host computer microcode 320. The host computer microcode is the primary instruction set executed by the host computer processor. Coupled to the operating system 300 are graphics applications 330 and 332. This graphics application software can include software packages such as Silicon Graphic's GL, IBM's graPHIGS, MIT's PEX, etc. This software provides the primary functions of two dimensional or three dimensional graphics. Graphics applications 330 and 332 are coupled to graphics application API (application program interface) 340 and 342, respectively. The API provides many of the computationally intensive tasks for the graphics application and provides an interface between the application software and software closer to the graphics hardware such as a device driver for the graphics adapter. For example, API 340 and 342 may communicate with a GAI (graphics application interface) 350 and 352, respectively. The GAI provides an interface between the application API and a graphics adapter device driver 370. In some graphics systems, the API also performs the function of the GAI.
  • The graphics application, API, and GAI are considered by the operating system and the device driver to be a single process. That is, graphics applications 330 and 332, API 340 and 342, and GAI 350 and 352 are considered by operating system 300 and device driver 370 to be processes 360 and 362, respectively. The processes are identified by the operating system and the device driver by a process identifier (PID) that is assigned to the process by the operating system kernel. Processes 360 and 362 may use the same code that is being executed twice simultaneously, such as two executions of a program in two separate windows. The PID is used to distinguish the separate executions of the same code.
  • The device driver is a graphics kernel which is an extension of the operating system kernel 310. The graphics kernel communicates directly with microcode of the graphics adapter 380. In many graphics systems, the GAI, or the API if no GAI layer is used, may request direct access from the GAI or API to the adapter microcode by sending an initial request instruction to the device driver. In addition, many graphics systems also allow the adapter microcode to request direct access from the adapter microcode to the GAI or API if no GAI is used by sending an initial request instruction to the device driver. Both processes will hereinafter be referred to as direct memory access (DMA). DMA is typically used when transferring large blocks of data. DMA provides for a quicker transmission of data between the host computer and the adapter by eliminating the need to go through the display driver other than the initial request for the device driver to set up the DMA. In some cases, the adapter microcode utilizes context switching which allows the adapter microcode to replace the current attributes being utilized by the adapter microcode. Context switching is used when the adapter microcode is to receive an instruction from a graphics application that utilizes different attributes than the adapted microcode is currently using. The context switch is typically initiated by the device driver which recognizes the attribute changes.
  • Blocks 300-340 are software code layers that are typically independent of the type of graphics adapter being utilized. Blocks 350-380 are software code layers that are typically dependent upon the type of graphics adapter being utilized. For example, if a different graphics adapter were to be used by the graphics application software, then a new GAI, graphics kernel and adapter microcode would be needed. In addition, blocks 300-370 typically reside on and are executed by the host computer. However, the adapter microcode 380 typically resides on and is executed by the graphics adapter. However, in some cases, the adapter microcode is loaded into the graphics adapter by the host computer during initialization of the graphics adapter.
  • In typical graphics systems, the user instructs the graphics application to construct an image from a two or three dimensional model. The user first selects the location and type of light sources. The user then instructs the application software to build the desired model from a set of predefined or user defined objects. Each object may include one or more coplanar drawing primitives describing the object. For example, a set of drawing primitives such as many triangles may be used to define the surface of an object. The user then provides a perspective in a window to view the model, thereby defining the desired image. The application software then starts the rendering of the image from the model by sending the drawing primitives describing the objects to the adapter microcode through the API, the GAI, and then the device driver unless DMA is used. The adapter microcode then renders the image on the graphics display by clipping (i.e. not using) those drawing primitives not visible in the window and the adapter microcode fills each remaining drawing primitive into visible pixels from the perspective given by the user. The pixels are then loaded into the frame buffer, often with the use of a depth buffer in the case of a three dimensional model. This step is very computationally intensive due to the number of drawing primitives, variables, and pixels involved. The resulting image stored in the frame buffer and displayed on the graphics display typically does not carry the original information such as which drawing primitive or object the pixel was derived from. As a result, the image may need to be rerendered in part or in whole if the window, the user perspective, the model, the lighting, etc. are modified.
  • In the preferred embodiment, the filling technique could be utilized in many locations such as the adapter microcode which is close to the adapter frame buffer. This approach would also be relatively quick and fairly easy to implement. In addition, the filling technique could be applied in the graphics application software wherein the rendered image is also stored in system memory either prior to the image being rendered or subsequently by the graphics adapter passing the data back up to the graphics application software. This approach would be much slower but would allow for utilization of this technique on preexisting graphics adapters. The filling technique could also be implemented in hardware in the graphics adapter processor. This approach is extremely quick but may necessitate specialized hardware. However, this approach could also enable parallelization of the present invention to further speed the technique. This would allow for rapid filling of primitives to be displayed by the graphics adapter. As would be obvious to one of ordinary skill in the art, the present technique would be applied in many other locations within the host computer or graphics adapter.
  • Figs. 4A-4B are flowcharts illustrating rendering a polygon according to a preferred embodiment of the invention. In a first step 400, a polygon is received and stored in memory for filling and rendering. The polygons received for filling and rendering may be provided by the graphics processor, including tessellated spheres or other objects that have been preprocessed to handle overlapping polygons. In addition, the polygons received for rendering may be from graphics memory or from main memory. In a preferred embodiment, the data or commands received describing the polygon includes N, equal to the number of vertices in the polygon, and (X, Y) coordinates for each of the vertices. For purposes of simplicity, the polygons will be described in two dimensions with X and Y coordinates. However, one of ordinary skill in the art can also apply the techniques described herein to three dimensional objects. It is preferred that the polygons filled using the preferred embodiment either be convex or be concave only in the X direction. Polygons concave in the Y direction may also be handled by applying the present invention with the X and Y variable reversed such that vertical spans are generated.
  • Once received, the polygon data is stored in graphics memory as shown in Fig. 5. Each of the vertices is assigned an identifier 610. For example, vertex A of polygon 20 shown in Fig. 1 has coordinate values (X1,Y1) and is assigned an identifier 00. Please note that the vertices are stored in order of contiguousness in Fig. 5 such that the vertex order of A, B, C, D is retained.
  • In a second step 410, the vertex having the minimum Y value is determined. For clarity of explanation, the (X,Y) coordinates are 0 in the lower left-hand corner of the display and increase in value towards the upper right-hand corner. However, it is also common that the point of origin of the axis is in the upper left-hand corner. Using the origin in the lower left-hand corner, the vertex having the minimum y value in the current example is vertex C having identifier value 10. It is from this point that the polygon is split into a series of horizontal spans that will be rendered. However, in alternative embodiments, the rendering may begin at the maximum Y value for utilizing horizontal spans or at the minimum or maximum X value for utilizing vertical spans.
  • In step 420, the first vertex may be rendered as a point. However, in the preferred embodiment, the first vertex is not rendered unless one of the first edges is a horizontal edge.
  • In step 430, the right and/or left edges of the polygon are determined. In the current example, the edge C → D would be the left edge and the edge C → B would be the right edge. However, as will be described below, either edge can be assigned as being the left edge or right edge since the direction of the span is determined in step 470 below. In the preferred embodiment, the edges are determined by using the vertex identifiers. For example, the next vertex of the right edge is determined by subtracting one from the C vertex identifier using modulo N arithmetic and the next vertex of the left edge is determined by adding one to the C vertex identifier using modulo N arithmetic. Modulo N arithmetic allows wrapping the vertex list circularly. For example, the next vertex of the right edge is (10 - 01) modulo 4 in base 2 arithmetic. This results in 01 which is the identifier for vertex B. If this step is not being executed for a first time (i.e. processing continuing from A2), then it may be a single edge being initialized as will be seen below.
  • In step 440, dual Bresenham line generators are initialized for each edge initialized in step 430. The Bresenham line draw technique is well known in the art and is described in "Computer Graphics, Principles and Practice", second edition, by Foley, Van Dam, Finer and Hughes, 1990, pages 72-81. However, other techniques other than the Bresenham line drawing technique may be utilized. In the current example, the variables initialized for the left edge C -> D are dy = |Y4-Y3|, dx=|X4-X3|, d (the error term) = 2*|dy|-|dx|, incrNE (Northeast correction factor) = 2*(|dy|-|dx|), and incrE = 2*|dy|.
  • Please also note that the Bresenham line draw technique typically works on lines less than 45
    Figure imgb0001
    in the first quadrant of a typical cartesian coordinate system. Other slopes can be handled by suitable reflections about the principal axis. With reference to Fig. 6, the Bresenham line draw technique is applied unmodified to lines that extend from the origin point into octant 1A. All other lines extending into other octants are reflected or flipped such that they extend into octant 1A. The original octant of the line is retained for use as described below. TABLE 1 below provides a list of variables that have values based on the octant the line travels through. These variables are ndy (negative dy), ndx (negative dx) and mf (majorflip). These variables are used in incrementing X and Y coordinates in the Bresenham Line drawing technique.
  • In step 450, both Bresenham generators are incremented to the next Y value. Fig. 6 illustrates this step according to the preferred embodiment of the invention. In the current example, the next points will calculate by the Bresenham generator will be current points CL and CR (not in brackets[ ]). As is well known in the Bresenham technique, error terms will also be generated for these two points. TABLE 1:
    OCTANT VARIABLES
    Octant ndy ndx mf
    1A 0 0 0
    1B 0 0 1
    2A 0 1 0
    2B 0 1 1
    3A 1 1 0
    3B 1 1 1
    4A 1 0 0
    4B 1 0 1
  • In step 460, the error term d is also determined for points to the left and right of each point generated. In the current example as illustrated in Fig. 7, this will be points NL and PL (not in brackets[ ]) for the next and previous points on the left edge, and PR and NR (not in brackets[ ]) for the previous and next vertices for the right edge.
  • In step 470, it is determined which direction the span currently runs. For example, during the initial processing, the right line may of actually been initialized as the left line and vice versa. In addition, the vertices may have crossed, such as in an upright figure-eight type polygon, concave in the X direction, such that the right edge has now become left edge. The determination of which direction the span runs is obtained by subtracting the X coordinate for CL from CR. If the result is greater than 0, then the edges are properly labelled. If the result is negative, then the edges are reversed. If the result is zero, then additional processing is required. In the zero case, various variables are reviewed to determine whether the edges are backwards and need to be reversed for filling and rendering. These variables include the signs of the error terms for the next, current, and previous points of each edge (although some cases require a variable be equal to 0), and the mf and ndx variables (based on which octant each edge runs as shown in Fig. 6 above) of each edge. TABLE 2 below provides these conditions for determining whether the edges are backwards and therefore needs to be reversed. In this table all 0's are considered positive. Please note that this step is not necessary if only convex polygons are used and if the edges are initially set to being properly left and right. Processing then continues to step 480.
    Figure imgb0002
  • In step 480, it is determined from these error terms whether or not to render the span given the current error terms provided in step 450. That is, for each edge one of the three points should have a positive error term and one of the three points should have a negative error term. If it is determined that the span may need to include more points on the current y line, then execution proceeds to step 490, else processing continues to step 500. In the current example in Fig. 7, the right line has all three points are within the polygon such that all the error terms will be the same sign. In addition, the left line has two points within the polygon and one outside the polygon such that the error terms do not all have the same sign. As a result, processing would continue to step 490 for incrementing the right line only.
  • In step 490, the Bresenham generator provides additional points for the edge or edges that may include more points on the span. Processing then returns to step 460 for determining the error terms for the points left and right of each point generated. In the current example of Fig. 7, there would be new values for PR, CR, and NR shown in brackets.
  • In step 500 it is determined which edge points are to be filled and rendered in the span. For example, utilizing the X-fill standard, span 700 shown in Fig. 7 would run from CL to [CR] because they outline the edges of the polygon for that span. NL and [NR] are both outside the polygon edges, so they would not be filled and rendered. In the preferred embodiment, if NL were actually on the edge, it would be filled and rendered with the span and if [NR] were actually on the edge it would not be filled and rendered with the span. This would prevent the problems of gaps and duplication described above. However, if a different field rule were used other than X-fill, other such points may be determined to be filled and rendered with the span.
  • In step 510, the span is filled and rendered. That is, the span is assigned a color or colors and also may be interpolated to provided realistic images. In addition, the end points may be assigned a different color to illustrate the borders. The span is then rendered by loading the values for each of the pixels in the span into the frame buffer. The span is then displayed on the display as a result of loading the frame buffer. In the preferred embodiment, the span is a line with two endpoints and a single color that is passed onto additional apparatus to calculate all the pixels within the line and assign each pixel the color assigned to the span.
  • In step 520 it is determined whether the rendered span was the last span for either the left or right edge. This is determined by comparing the current Y value for the span to the Y value for each of the ending vertices for the spans. If this is not the last span for either edge, then processing returns to step 450. If this is the last span for either edge, then in step 530 it is determined whether this is the last span in the polygon. This is determined by checking whether this is the last span for both edges and whether the edges end with the same vertex. If so, then rendering of the polygon is completed and processing ends. If not, then processing returns to step 430 above for initialization of a new edge or edges.
  • The present invention is particularly advantageous because it allows the edges to be rendered in the same span as the filled interior of a polygon. In addition, this allows the edges to be more carefully evaluated as to which points of the edges are rendered to prevent gaps between polygons and to prevent calculating the same points more than once. Furthermore, the present invention allows the polygon, including the edges, to be filled and rendered with very little working storage requirements. That is, no fill bit planes are needed for implementing the present invention.
  • Although the present invention has been fully described above with reference to specific embodiments, other alternative embodiments will be apparent to those of ordinary skill in the art. For example, the polygons being filled may have nonlinear edges that are calculated by using nonlinear incremental techniques such as the Bresenham circle scan conversion technique.

Claims (9)

  1. A method for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, comprising the steps of:
       computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon;
       computing at least one color value for each computed span; and
       rendering the spans on a display using the computed color values.
  2. A method as claimed in claim 1 wherein the step of computing a plurality of spans of pixels includes computing a plurality of parallel spans.
  3. A method as claimed in Claim 2 wherein the step of computing a plurality of spans includes using incrementally computing each span by incrementally computing polygon edges points on each end of each span.
  4. A method as claimed in Claim 3 wherein the step of computing a plurality of spans includes computing which polygon edge points are to be rendered in each span.
  5. Apparatus for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, the apparatus comprising:
       means for computing a plurality of spans, each span including a portion of the polygon interior and at least one point on an edge of the polygon;
       means for computing at least one color value for each computed span; and
       means for rendering the spans on a display using the computed color values.
  6. Apparatus as claimed in claim 5 wherein the means for computing a plurality of spans of pixels includes means for computing a plurality of parallel spans.
  7. Apparatus as claimed in Claim 6 wherein the means for computing a plurality of spans includes means for using incrementally computing each span by incrementally computing polygon edges points on each end of each span.
  8. Apparatus as claimed in Claim 7 wherein the means for computing a plurality of spans includes means for computing which polygon edge points are to be rendered in each span.
  9. A data processing system for rendering a graphical polygon, the polygon being defined by connecting edges surrounding a polygon interior, comprising:
       processing means for processing data;
       storage means for storing data to be processed; and
       apparatus for rendering a graphical polygon as claimed in any of Claims 5 to 8.
EP94305996A 1993-09-20 1994-08-15 Method and apparatus for filling polygons Expired - Lifetime EP0644509B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US123510 1987-11-20
US08/123,510 US5463723A (en) 1993-09-20 1993-09-20 Method and apparatus for filling polygons

Publications (3)

Publication Number Publication Date
EP0644509A2 true EP0644509A2 (en) 1995-03-22
EP0644509A3 EP0644509A3 (en) 1995-12-27
EP0644509B1 EP0644509B1 (en) 2001-10-31

Family

ID=22409108

Family Applications (1)

Application Number Title Priority Date Filing Date
EP94305996A Expired - Lifetime EP0644509B1 (en) 1993-09-20 1994-08-15 Method and apparatus for filling polygons

Country Status (4)

Country Link
US (2) US5463723A (en)
EP (1) EP0644509B1 (en)
JP (1) JP3031825B2 (en)
DE (1) DE69428858T2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1108589C (en) * 1997-07-15 2003-05-14 三星电子株式会社 Ellipse filling graphics method

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337002A (en) * 1991-03-01 1994-08-09 Mercer John E Locator device for continuously locating a dipole magnetic field transmitter and its method of operation
US5463723A (en) * 1993-09-20 1995-10-31 International Business Machines Corporation Method and apparatus for filling polygons
US5673375A (en) * 1993-09-20 1997-09-30 Hitachi, Ltd. Method for three-dimensionally drawing figure on display plane
US6005580A (en) * 1995-08-22 1999-12-21 Micron Technology, Inc. Method and apparatus for performing post-process antialiasing of polygon edges
US6218965B1 (en) 1998-07-30 2001-04-17 The United States Of America As Represented By The Secretary Of The Navy Moving map composer (MMC)
US6897869B1 (en) * 1999-10-25 2005-05-24 International Business Machines Corporation System and method for filling a polygon
AUPR970501A0 (en) * 2001-12-21 2002-01-24 Canon Kabushiki Kaisha A method for performing set operations on two or more arbitrary paths to produce a simple outline path
US7006094B2 (en) 2002-04-24 2006-02-28 Seiko Epson Corporation Method and apparatus for filling an image on a display screen
US7382370B2 (en) * 2004-07-07 2008-06-03 The United States Of America As Represented By The Secretary Of The Navy System and method for smoothing and compression of polyline data
US7567714B2 (en) * 2004-07-07 2009-07-28 The United States Of America As Represented By The Secretary Of The Navy System, method and apparatus for clustering features
US7646386B2 (en) * 2005-04-19 2010-01-12 Adobe Systems Incorporated Modifying a path in a drawing
US7256785B1 (en) * 2005-04-19 2007-08-14 Adobe Systems Incorporated Assigning subpath attributes in a drawing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2187368A (en) * 1986-02-21 1987-09-03 Gen Electric Graphics display processors
US4758965A (en) * 1985-10-09 1988-07-19 International Business Machines Corporation Polygon fill processor
US5202960A (en) * 1988-11-02 1993-04-13 Digital Equipment Corp Method and apparatus for plotting polygon edges on a pixelized grid

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4368463A (en) * 1979-03-21 1983-01-11 Sigma Electronics Limited Graphic display area classification
US4425559A (en) * 1980-06-02 1984-01-10 Atari, Inc. Method and apparatus for generating line segments and polygonal areas on a raster-type display
US4481594A (en) * 1982-01-18 1984-11-06 Honeywell Information Systems Inc. Method and apparatus for filling polygons displayed by a raster graphic system
US4646076A (en) * 1983-04-27 1987-02-24 Sperry Corporation Method and apparatus for high speed graphics fill
DE3376594D1 (en) * 1983-12-22 1988-06-16 Ibm Area filling hardware for a colour graphics frame buffer
JPH0831138B2 (en) * 1985-09-27 1996-03-27 ダイキン工業株式会社 Polygonal fill device in scanning display device
JPH0683358B2 (en) * 1985-10-17 1994-10-19 キヤノン株式会社 Image information processing device adjustment method
US4901251A (en) * 1986-04-03 1990-02-13 Advanced Micro Devices, Inc. Apparatus and methodology for automated filling of complex polygons
GB2198019B (en) * 1986-11-18 1990-09-26 Ibm Graphics processing system
US4962468A (en) * 1987-12-09 1990-10-09 International Business Machines Corporation System and method for utilizing fast polygon fill routines in a graphics display system
JPH01241556A (en) * 1988-03-22 1989-09-26 Dainippon Screen Mfg Co Ltd Formation of paint-out data using projecting loop division
US4897805A (en) * 1988-05-17 1990-01-30 Prime Computer, Inc. Method and apparatus for performing polygon fills in graphical applications
US5036316A (en) * 1989-04-03 1991-07-30 Honeywell Inc. Method and apparatus for high speed linear shading in a raster graphics system
DE68920144T2 (en) * 1989-10-12 1995-06-29 Ibm Display system.
US5463723A (en) * 1993-09-20 1995-10-31 International Business Machines Corporation Method and apparatus for filling polygons

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758965A (en) * 1985-10-09 1988-07-19 International Business Machines Corporation Polygon fill processor
GB2187368A (en) * 1986-02-21 1987-09-03 Gen Electric Graphics display processors
US5202960A (en) * 1988-11-02 1993-04-13 Digital Equipment Corp Method and apparatus for plotting polygon edges on a pixelized grid

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1108589C (en) * 1997-07-15 2003-05-14 三星电子株式会社 Ellipse filling graphics method

Also Published As

Publication number Publication date
JP3031825B2 (en) 2000-04-10
US5579461A (en) 1996-11-26
DE69428858D1 (en) 2001-12-06
US5463723A (en) 1995-10-31
JPH07105394A (en) 1995-04-21
DE69428858T2 (en) 2002-05-02
EP0644509B1 (en) 2001-10-31
EP0644509A3 (en) 1995-12-27

Similar Documents

Publication Publication Date Title
US5850232A (en) Method and system for flipping images in a window using overlays
US6072500A (en) Antialiased imaging with improved pixel supersampling
US5115402A (en) Scan-conversion process and processor for converting a graphic primitive to a pixel map
US5432898A (en) System and method for producing anti-aliased lines
US6833835B1 (en) Method and apparatus for antialiased imaging of graphical objects
US5734806A (en) Method and apparatus for determining graphical object visibility
US6292192B1 (en) System and method for the direct rendering of curve bounded objects
JPH05307610A (en) Texture mapping method and its device
US6469700B1 (en) Per pixel MIP mapping and trilinear filtering using scanline gradients for selecting appropriate texture maps
EP0644509B1 (en) Method and apparatus for filling polygons
CA2053947A1 (en) High performance triangle interpolator
EP1345205A1 (en) Hardware-enhanced graphics rendering acceleration of pixel sub-component-oriented images
JP2001357410A (en) Graphic system for composing three-dimensional images generated separately
JPH0683969A (en) Graphics processor and method of graphics and data processing
EP0837449A2 (en) Image processing system and method
US6731289B1 (en) Extended range pixel display system and method
US6894695B2 (en) Apparatus and method for acceleration of 2D vector graphics using 3D graphics hardware
US6791569B1 (en) Antialiasing method using barycentric coordinates applied to lines
US5347619A (en) Nonconvex polygon identifier
US5973701A (en) Dynamic switching of texture mip-maps based on pixel depth value
US5790125A (en) System and method for use in a computerized imaging system to efficiently transfer graphics information to a graphics subsystem employing masked span
US6348917B1 (en) Dynamic switching of texture mip-maps based on depth
JP3547250B2 (en) Drawing method
US5420972A (en) Method and apparatus for rendering lines
US5339394A (en) I/O register protection circuit

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB

17P Request for examination filed

Effective date: 19950714

PUAL Search report despatched

Free format text: ORIGINAL CODE: 0009013

AK Designated contracting states

Kind code of ref document: A3

Designated state(s): DE FR GB

17Q First examination report despatched

Effective date: 19990128

GRAG Despatch of communication of intention to grant

Free format text: ORIGINAL CODE: EPIDOS AGRA

GRAG Despatch of communication of intention to grant

Free format text: ORIGINAL CODE: EPIDOS AGRA

GRAH Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOS IGRA

GRAH Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOS IGRA

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): DE FR GB

REF Corresponds to:

Ref document number: 69428858

Country of ref document: DE

Date of ref document: 20011206

REG Reference to a national code

Ref country code: GB

Ref legal event code: IF02

ET Fr: translation filed
PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed
PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: DE

Payment date: 20060816

Year of fee payment: 13

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20060823

Year of fee payment: 13

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20070816

Year of fee payment: 14

REG Reference to a national code

Ref country code: FR

Ref legal event code: ST

Effective date: 20080430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20080301

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20070831

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20080815

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20080815