AU2003213492A1 - Scanline Rendering with Persistent Spans - Google Patents

Scanline Rendering with Persistent Spans Download PDF

Info

Publication number
AU2003213492A1
AU2003213492A1 AU2003213492A AU2003213492A AU2003213492A1 AU 2003213492 A1 AU2003213492 A1 AU 2003213492A1 AU 2003213492 A AU2003213492 A AU 2003213492A AU 2003213492 A AU2003213492 A AU 2003213492A AU 2003213492 A1 AU2003213492 A1 AU 2003213492A1
Authority
AU
Australia
Prior art keywords
scanline
span
edge
rendering
code
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.)
Abandoned
Application number
AU2003213492A
Inventor
Alexander Vincent Danilo
Matthew William Gallagher
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.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2002951058A external-priority patent/AU2002951058A0/en
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU2003213492A priority Critical patent/AU2003213492A1/en
Publication of AU2003213492A1 publication Critical patent/AU2003213492A1/en
Abandoned legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Description

S&F Ref: 640651
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address of Applicant Actual Inventor(s): Address for Service: Invention Title: Canon Kabushiki Kaisha 30-2, Shimomaruko 3-chome, Ohta-ku Tokyo 146 Japan Alexander Vincent Danilo and Matthew William Gallagher Spruson Ferguson St Martins Tower Level 31 Market Street Sydney NSW 2000 (CCN 3710000177) Scanline Rendering with Persistent Spans ASSOCIATED PROVISIONAL APPLICATION DETAILS [33] Country [31] Applic. No(s) AU 2002951058 [32] Application Date 23 Aug 2002 The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5815c -1- SCANLINE RENDERING WITH PERSISTENT SPANS Copyright Notice This patent specification contains material that is subject to copyright protection.
The copyright owner has no objection to the reproduction of this patent specification or related materials from associated patent office files for the purposes of review, but otherwise reserves all copyright whatsoever.
Field of the Invention The present invention relates generally to the rendering of graphical objects and, in particular, to optimisations to scanline rendering techniques.
Background Traditional rendering techniques employ frame-store buffers and build up an image by drawing whole objects in a scene, with subsequent objects covering over earlier objects. This technique is often referred to as the "Painter's Algorithm". An example of a frame store rendering approach is shown in Fig. 1 where an image 100 is formed initially by a background 102 and a circle 104 is first drawn, or rendered. A triangle 106 is drawn over the top of the circle 104 and then a character 108 is drawn over the triangle 106, and the circle 104. The layering of the graphical objects is typically determined by an level, or z-ordering level, which identifies the position of each object in a vertical stack of objects which form the image. Objects may also be active or inactive, meaning that objects may be present in the graphical description of the image, but be "switched on or off" at a particular time to achieve a desired effect.
The frame store rendering approach has a number of disadvantages. The first major disadvantage is that all the pixel data for the final image must be held in memory (ie. the frame store) and random access to all parts of the image must be possible as objects could be drawn anywhere in the image at any time. Aside from the amount of memory this requires, such random access to a potentially large quantity of data can be very slow, as such impacts poorly on cache performance of typical microprocessors.
Another disadvantage is that the Painter's Algorithm results in over-painted pixels where often, the first painting has no effect on the output image and is essentially a waste of time. An example of this is seen in Fig. 1 for that part of the circle 104 occluded by the triangle 106, and those parts of the triangle 106 and circle 104 occluded by the character 108. In some instances, the Painter's Algorithm is implemented where rendering occurs over bands of the image, each band including a limited number of lines. In such instance, a band memory that performs the same role as the frame store is required.
640561.doc Although some saving in memory is obtained, the problems noted above remain, and are supplemented by band management issues.
Scanline rendering techniques have been developed to address many of the problems inherent in frame store rendering. Quality scanline rendering algorithms avoid the need to use the Painter's Algorithm to draw overlapping objects as the algorithm can track which objects are visible and which are occluded, as the scanline is traversed. Such an approach gives two immediate advantages. Firstly, no frame-store is required in memory, and secondly every pixel on every scanline in the image can be written just once, without a need to never read back that pixel to complete the rendering process.
Whilst scanline rendering may output rendered pixels to a frame store memory, for convenience in subsequent use of the rendered image, the frame store is not operative in the rendering process.
The scanline technique typically operates by considering all objects within the image as polygons, and using a technique called "polygon scan conversion" to determine which range of pixels is touched by each polygon in any scanline of the image. Polygon scan conversion is normally achieved by decomposing each polygon into a set of boundary edges and, for any given point, determining if the point is between two boundary edges of the polygon.
For each scanline, a list of all edges which cross the scanline is built. The list is then sorted by the horizontal coordinate of each edge on the scanline. The list is then traversed from the left to the right edge of the image. When an edge is crossed, the particular object associated with the edge is looked up in a table to determine whether or not the particular object is currently being rendered and whether or not the particular object would appear in front of the object which was being rendered before the edge was encountered. If the particular object appears in front of the object being rendered, then rendering switches to render the particular object from this point onwards. If the particular object appears behind the object being rendered (ie. is occluded), then rendering carries on as before. If the edge instead disables rendering of the foremost object, then rendering continues using the next foremost active object or the background, if there are no other active objects.
To handle objects composed of potentially concave polygons, a counter, often called the odd-even count, is maintained for each object to determine whether rendering is currently inside or outside the boundary of its polygon. An example of the odd-even counting rule is illustrated in Fig. 2 where an image 200 is formed by a an object 204 640561.doc rendered over a background 202. For an arbitrary scanline 206, initially the background 202 is rendered. At location 208 on the scanline 206, an edge count for the object 204 is set to odd, and rendering of the object 204 commences. At location 210, the edge count is returned to even, and the background 202 is rendered. At position 212, the edge count for the object 204 is set to odd and rendering of the object 204 recommences.
At position 214, the edge count for the object 204 is set to even and the background 202 is again rendered, for the remainder of the scanline 206.
Scanline rendering techniques can also employ a winding count, instead of an odd-even count, to determine whether or not an object is active. Each edge in the image has an associated winding value. When an edge is encountered, the winding value of the edge (either +1 or depending on the direction of slope of the edge) is added to the winding count of its associated object. To operate correctly, edges that mark the start and end of an object must have opposite signs. The object is considered active any time when the winding count is non-zero. This allows for more sophisticated nesting of edge pairs.
For most rendering applications, speed is an important factor. If the raw outputting of pixels to the output buffer is well optimised, then the most time consuming task for a scanline renderer can easily be the processing of active objects at each edge crossing.
With the Painter's Algorithm approach, the course of action to be taken when any object is encountered is simple render the object within its boundary. The object is permanently associated with the edges and is always rendered when loaded. With the scanline rendering approach discussed above, while each pixel is only painted once, there is considerably more processing involved with each edge to determine what change, if any, must be made to the current rendering approach after each edge crossing. While edge list table lookups and the sorting of active objects to find the front-most object when a single edge is encountered, are not of themselves time consuming tasks when performed just once, such tasks do become a significant when processing many thousands of edges, such as may exist on each scanline. A problem that remains is how to retain the advantages offered by the scanline rendering approach, whilst reducing the work involved at each edge crossing.
Summary It is an object of the present invention to substantially overcome, or at least ameliorate, one or more deficiencies with known arrangements.
640561.doc According to a first aspect of the present disclosure, there is provided a method of scanline rendering an image formed of at least one graphical object, each said object being defined by a plurality of edges, in which objects active on a current scanline are determined and rendered as pixels characterised in that said edges are used to resolve said current scanline into spans of pixels which are rendered and for each of which a record is retained, said records being used in the rendering of at least one successive scanline whereby if only said spans are active on said successive scanlines, a rendering of said successive scanlines can be effected by recalculation of a length of said spans from said record.
According to another aspect of the present disclosure, there is provided a method of scanline rendering an image formed of at least one graphical object, each said object being defined by a plurality of edges, said method comprising the steps of: first rendering a current scanline of said image, said first rendering comprising: (aa) setting a span flag and identifying and ordering edges of objects active on said current scanline and which contribute to said image; (ab) forming a span of pixels to a first one of said ordered edges and updating said one edge for a next scanline of said image; (ac) determining from the updating of step (ab) if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (ad) rendering said span of pixels on said current scanline; (ae) retaining an ordered record of said span for said next scanline; (af) repeating steps (ab) to (ae) for each further span defined between adjacent ones of said edges on said current scanline; repeating step for said next scanline if: (ba) said span flag is reset; or (bb) a new edge is included in said next scanline; second rendering at least one following scanline of said image, said second rendering comprising: (ca) retrieving a first said recorded span from said ordered record and rendering on a following scanline said span of pixels; (cb) updating a first edge of said span in said ordered record for a next scanline of said image; 640561.doc (cc) determining from the updating of step (cb) if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (cd) repeating steps (ca) to (cc) for each remaining span on said following scanline; (ce) if said span flag is set, repeating steps (ca) to (cd) for said next scanline; and repeating step for said next scanline if: (da) said span flag is reset; or (db) a new edge is included in said next scanline.
According to another aspect of the present disclosure, there is provided a computer readable medium, having a program recorded thereon, where the program is configured to make a computer execute a procedure to scanline render an image formed of at least one graphical object, each said object being defined by a plurality of edges, in which objects active on a current scanline are determined and rendered as pixels characterised in that said program is operable to process said edges to resolve said current scanline into spans of pixels which are rendered and for each of which a record is retained, said records being used in the rendering of at least one successive scanline whereby if only said spans are active on said successive scanlines, a rendering of said successive scanlines can be effected by recalculation of a length of said spans from said record.
According to another aspect of the present disclosure, there is provided a computer readable medium, having a program recorded thereon, where the program is configured to make a computer execute a procedure to scanline render an image formed of at least one graphical object, each said object being defined by a plurality of edges, said program comprising: code for first rendering a current scanline of said image, said code for first rendering comprising: (aa) code for setting a span flag and identifying and ordering edges of objects active on said current scanline and which contribute to said image; (ab) code for forming a span of pixels to a first one of said ordered edges and updating said one edge for a next scanline of said image; (ac) code for determining from said updating if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (ad) code for rendering said span of pixels on said current scanline; 640561.doc (ae) code for retaining an ordered record of said span for said next scanline; (af) code for repeating recalling said code for first rendering for each further span defined between adjacent ones of said edges on said current scanline; code for recalling said code for first rendering for said next scanline if: (ba) said span flag is reset; or (bb) a new edge is included in said next scanline; code for second rendering at least one following scanline of said image, said code for second rendering comprising: (ca) code for retrieving a first said recorded span from said ordered record and rendering on a following scanline said span of pixels; (cb) code for updating a first edge of said span in said ordered record for a next scanline of said image; (cc) code for determining from said updating if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (cd) code for recalling (ca) to (cc) for each remaining span on said following scanline; (ce) code for determining if said span flag is set, and if so, recalling said code for second rendering for said next scanline; and code for recalling said code for first rendering for said next scanline if: (da) said span flag is reset; or (db) a new edge is included in said next scanline.
According to another aspect of the present invention, there is provided an apparatus for implementing any one of the aforementioned methods.
According to another aspect of the present invention there is provided a computer program product including a computer readable medium having recorded thereon a computer program for implementing any one of the methods described above.
Other aspects of the invention are also disclosed.
Brief Description of the Drawings Some aspects of the prior art and one or more embodiments of the present invention will now be described with reference to the drawings, in which: Fig. 1 shows an image formed by rendering graphic objects; Fig. 2 depicts the use of the odd-even fill rule in rendering; 640561.doc Fig. 3 is a schematic block diagram of a general purpose computer upon which arrangements described can be practiced; Fig. 4 is a flow diagram of a method of scanline rendering according to the present disclosure; and Fig. 5 depicts an image used in describing an example of rendering using persistent spans.
Detailed Description including Best Mode For every scanline, the scanline algorithm discussed in the "Background" section above had to lookup each edge, process both the edge and the associated object for rendering, and then decide how to render the next run of pixels up to the next edge.
However, quite often in graphic object rendering, from one scanline to the next, these calculations will return almost exactly the same results for each edge on the scanline. In fact, for a group of scanlines where all edges continue from the top scanline to the bottom scanline of the group, with no edges terminating and none being crossing, the only component of the calculations which will change are the horizontal coordinates of the edges within the scanline, and the size of the pixel runs between them.
However, to simply use the same pixels output on the previous scanline and output those pixels again on the current scanline, is not a viable option. Situations where this is option is valid, in images of any significant complexity, are very rare. A method that is tolerant of moving edges but still allows precalculated values to be remembered is desired.
To address this problem, a rendering method is disclosed herein that introduces the idea of "persistent spans". A span is the run of pixels between two edges. The edges need not be associated with the same object, although the span is always rendered in exactly the same manner, such that the object exposed between the two edges is always the same for the life of the span. The span is also guaranteed to not overlap any other spans. What this means is that once a span is established, table lookups are not required to activate objects, winding counts are not involved, the sorting of objects to find the front-most active object is no longer required, and no determination from these results needs to be made to choose how to render the run of pixels involved. When the edge at the start of the span is encountered, the render function to render all the pixels in the span can be called directly.
When edges do terminate, cross-over or start on a new scanline, then the result of winding count, active object determinations and render technique selections can change.
640561.doc On scanlines where any of these events occur, the renderer will still have to revert to performing these calculations to determine the correct visible objects on the scanline.
The persistent span method disclosed maintains all of the advantages of a traditional scanline renderer because the method uses a winding count based scanline rendering approach to establish the spans, and then maintains these spans without recalculation for as long as possible. In a high resolution image of average complexity this can result in significant savings as many scanlines will typically pass between span changing events.
Some portions of the description which follows are explicitly or implicitly presented in terms of algorithms and symbolic representations of operations on data within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that the above and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, and as apparent from the following, it will be appreciated that throughout the present specification, discussions utilizing terms such as "scanning", "calculating", "determining", "replacing", "generating" "initializing", "outputting", or the like, refer to the action and processes of a computer system, or similar electronic device, that manipulates and transforms data represented as physical (electronic) quantities within the registers and memories of the computer system into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present specification also discloses apparatus for performing the operations of the methods. Such apparatus may be specially constructed for the required purposes, or may comprise a general purpose computer or other device selectively activated or reconfigured by a computer program stored in the computer. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus.
640561.doc -9- Various general purpose machines may be used with programs in accordance with the teachings herein. Alternatively, the construction of more specialized apparatus to perform the required method steps may be appropriate. The structure of a conventional general purpose computer will appear from the description below.
In addition, the present specification also discloses a computer readable medium comprising a computer program for performing the operations of the methods. The computer readable medium is taken herein to include any transmission medium for communicating the computer program between a source and a designation. The transmission medium may include storage devices such as magnetic or optical disks, memory chips, or other storage devices suitable for interfacing with a general purpose computer. The transmission medium may also include a hard-wired medium such as exemplified in the Internet system, or wireless medium such as exemplified in the GSM mobile telephone system. The computer program is not intended to be limited to any particular programming language and implementation thereof. A variety of programming languages and coding thereof may be used to implement the teachings of the disclosure contained herein.
The method of persistent span scanline rendering is preferably practiced using a general-purpose computer system 300, such as that shown in Fig. 3 wherein the processes of Fig. 4 may be implemented as software, such as an application program executing within the computer system 300. In particular, the steps of method of persistent span scanline rendering are effected by instructions in the software that are carried out by the computer. The instructions may be formed as one or more code modules, each for performing one or more particular tasks. The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer from the computer readable medium, and then executed by the computer. A computer readable medium having such software or computer program recorded thereon is a computer program product. The use of the Scomputer program product in the computer preferably effects an advantageous apparatus for persistent span scanline rendering.
The computer system 300 is formed by a computer module 301, input devices such as a keyboard 302 and mouse 303, output devices including a printer 315, a display device 314 and loudspeakers 317. A Modulator-Demodulator (Modem) transceiver device 316 is used by the computer module 301 for communicating to and from a communications network 320, for example connectable via a telephone line 321 or other 640561.doc functional medium. The modem 316 can be used to obtain access to the Internet, and other network systems, such as a Local Area Network (LAN) or a Wide Area Network (WAN), and may be incorporated into the computer module 301 in some implementations.
The computer module 301 typically includes at least one processor unit 305, and a memory unit 306, for example formed from semiconductor random access memory (RAM) and read only memory (ROM). The module 301 also includes an number of input/output interfaces including an audio-video interface 307 that couples to the video display 314 and loudspeakers 317, an I/O interface 313 for the keyboard 302 and mouse 303 and optionally a joystick (not illustrated), and an interface 308 for the modem 316 and printer 315. In some implementations, the modem 3116 may be incorporated within the computer module 301, for example within the interface 308. A storage device 309 is provided and typically includes a hard disk drive 310 and a floppy disk drive 311. A magnetic tape drive (not illustrated) may also be used. A CD-ROM drive 312 is typically provided as a non-volatile source of data. The components 305 to 313 of the computer module 301, typically communicate via an interconnected bus 304 and in a manner which results in a conventional mode of operation of the computer system 300 known to those in the relevant art. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun Sparcstations or alike computer systems evolved therefrom.
Typically, the application program is resident on the hard disk drive 310 and read and controlled in its execution by the processor 305. Intermediate storage of the program and any data fetched from the network 320 may be accomplished using the semiconductor memory 306, possibly in concert with the hard disk drive 310. In some instances, the application program may be supplied to the user encoded on a CD-ROM or floppy disk and read via the corresponding drive 312 or 311, or alternatively may be read by the user from the network 320 via the modem device 316. Still further, the software can also be loaded into the computer system 300 from other computer readable media. The term "computer readable medium" as used herein refers to any storage or transmission medium that participates in providing instructions and/or data to the computer system 300 for execution and/or processing. Examples of storage media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 301. Examples of transmission 640561.doc -11 media include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like.
Fig. 4 shows a flowchart of a method 400 of persistent span scanline rendering and which also illustrates improvements over previous rendering techniques. In this regard, a grouping of method steps 420 contains the amount of work performed at every edge crossing for a traditional scanline renderer. A further grouping of method steps 462 shows the work performed at each span using persistent spans, after the spans have been established.
The effect of the method 400 is that the page is rendered in a series of vertical blocks of scanlines. Each block is rendered using the steps 420 for the first scanline, and the steps 462 for subsequent scanlines. The block of scanlines ends when a line containing an edge crossing, termination or commencement, occurs.
The first scanline at the start of each block is rendered in almost the same manner as the scanline algorithm discussed in the "Background". A difference is that while the edge list is traversed and the pixels between are rendered, spans are set up for subsequent scanlines. Persistent spans become important in those subsequent scanlines.
Instead of requiring the majority of processing to be performed on each scanline, only edge updating and rendering are required.
The method 400 commences with an entry point 402 which passes to step 404 which commences rendering of the next scanline of the image in question. Step 406 follows where new edges for the scanline are loaded, which are then in step 408 merged with any current edges, being those extending from the previous scanline into the current scanline, and sorted into an edge list. Step 410 then determines from the list of sorted edges whether any of those edges are active for the current scanline. If none of the edges are active, step 412 renders white, or some other default background colour, for the whole of the current scanline. Step 413 tests if more scanlines are to be rendered, returning to step 404 if so, or terminating the process 400 at step 484 if not.
The method 400 also maintains a "span list", and where active edges exist, step 414 marks the span list as "clean", the meaning of which will become apparent later in the description. Step 416 then retrieves the first edge from the edge list and step 418 then renders the background colour (eg. white as above) for what is the first span of pixels on the scanline, from the left edge of the scanline up to the first edge. The method 400 then proceeds with the group of steps 420, which commences with step 422.
640561.doc -12- Step 422 identifies the winding value of the current edge and adds that winding value to a winding count of the object to which the edge relates. Step 424 then extracts all objects on the current scanline that have non-zero winding counts. Those objects are then examined in step 426 to determine the foremost active object. As indicated above, this may be performed by examining activity values and z-ordering levels for the objects extracted in step 424. The foremost active object is then examined in step 428 to determine the proper render technique therefor. Where no object has a non-zero winding count, and thus no object is active, the proper render technique in such an instance is to render the background colour. Step 430 then extracts the next edge on the current scanline and step 432 establishes a span between the pixel position of that edge and the pixel position of the previous (first) edge. With the span established, step 434 determines the x-distance between the present edge and the previous edge. Step 436 then updates the previous edge for the x-position to be occupied on the next scanline. This updated value is stored in the edge list. The update will be dependent upon the specific graphical properties of the object to which the edge relates and not upon any relationship with other object.
At step 438, the update of step 436 is examined to determine if the edge crossed with another edge, thereby altering the order of edges in the edge list and at least the front-most object exposed between those edges, or whether the edge is terminated. If either of these situations occur, step 440 follows where the span list is marked as "dirty".
Further if the edge is terminated, step 440 acts to delete the edge and to remove the edge from the edge list. If the determination of step 438 is negative, and after step 440, step 442 follows where the determined rendering technique is stored in the span list, together with the length of the span and the object represented by the span. The span is then rendered at step 444.
Step 446 then examines the edge list to determine if there are any further edges on the current scanline. If so, control returns to step 422 for processing of that edge. If not, step 448 follows where the winding value of the last edge is added to winding count of the object to which the last edge relates.
At conclusion of step 448, the last graphical object on the current scanline has been rendered. Step 449 then updates the last edge for its position on the next scanline.
Step 450 follows to render the background colour from the position of the last edge up to the right edge of the current scanline, thereby complementing step 418.
640561.doc 13- Step 452 follows to assess whether or not there are any more scanlines of the image remaining to be rendered. If not, the method 400 concludes at step 482. If so, step 454 follows to determine if the span list is "dirty" or whether there exist new edges to be loaded for the next scanline. If either of these criteria are met, control returns to step 404 to commence processing the next scanline. If neither of those conditions are met, step 456 follows to commence rendering the next scanline using spans persisting from the previous scanline. At step 458, the first span after the background, being that which is first to commence with an edge, is retrieved from the span list and step 460 renders the background colour up to the start of the first span.
The group of steps 462 then commences at step 464 where the (first) span is rendered using the rendering technique, length and object stored at step 442 in the span list. The length in this regard is updated using details also obtained from the edge list, which contains the pixel locations for the present scanline. Step 466 then updates the edge on the left of the span for the x-position of the edge on the next scanline, this step complementing step 436. Step 468 then complements step 438 by determining if the edge crosses another edge or terminates during the update. If either if these conditions occurs, then step 470 marks the span list as "dirty" and if the edge was terminated, the edge is deleted and removed from the edge list, thereby complementing step 440. If neither of those conditions occur, or upon conclusion of step 470, step 472 then determines if any more spans exist for the current scanline. If so, step 474 gets the next span from the span list and returns control to step 464 for rendering.
When step 472 determines that all spans defined between edges have been rendered, step 476 updates the right edge of the last span for its corresponding x-position in the next scanline. Step 478 then determines if the edge crossed another edge or terminated during the update. If so step 480 then, like steps 470 and 440, marks the edge list as "dirty" and if the edge was terminated, deletes the edge and removes the edge from the edge list. Where neither of the conditions of step 478 are satisfied, or step 480 is concluded, step 450 is then performed to render the background colour to the right edge of the scanline.
Step 452 then follows as previously described.
The storage and use of persistent spans will have varying effects depending on how often the span list needs to be marked as dirty. In the worst case scenario, where the span list is marked as dirty on every scanline, the method may be implemented so that rendering time is almost exactly the same as the traditional scanline renderer. In the best 640561.doc -14case, where the span list is never marked as dirty and all edges persist from the first scanline to the last, the entire object-processing step 420 (including winding counts, frontmost object determination, selection of rendering technique) is removed for all but the first scanline. Clearly typical cases are likely to be somewhere between these two extremes.
Not every pair of edges need have an intervening span. If one edge of an adjacent pair is occluded, then the span can be extended past that edge out to the next unoccluded edge. The un-occluded edge still needs to be updated on each scanline, but the render function can be called with longer runs of pixels, and called fewer times, if otherwise unbroken spans are allowed to continue over occluded edges.
There are also a number of ways of reducing the number of times when the edge list needs to be marked as dirty. For example, when two edges cross, thereby eliminating the span between them, simple deletion of the intervening span, provided the occluded edge is still in the edge update list, will allow rendering to continue without marking the span list dirty. Similarly if a pair of edges terminate, with no occluded edges between them, then simple deletion of the span between them will also result in a clear span list. If desired to avoid ever marking the span list dirty, all object-winding changes and active objects may be recorded at every given object crossing on the first scanline. As events occur which mark the list dirty, the cached information may be used to regenerate the affected region. The number of these optimisations to include should be chosen based on the difficulty in determining when they apply and the gains that they are likely to yield.
An alternative implementation may be achieved by merging the edge list and the span list into a single list. Such avoids a need to manage two lists and the need to crosscheck the lists in step 462. Further, it is noted that in the implementations described in this specification, the "background" is not treated as a graphical object. Such simplifies implementation through having the ability to only once establish the rendering for the background. The described implementation may be readily modified for use in systems where the background is treated as an object, in which case steps 418, 450, and 460 may be removed and the qualification noted above with respect to step 428 is obviated.
Example: Fig. 5 shows an image 500 to be rendered by the computer system 300 to the display 314. The image may be sourced from the network 320 and stored as an object description in the HDD 310. Alternatively, the image 500 may be generated by a desktop publishing application executing on the computer module 301 from object descriptions 640561.doc contained therein. The image 500 includes a background object 502, a rectangle object 504 overlying the background 502 and defined by vertical edges 506 and 508, and a triangle object 510 overlying each of the background 502 and rectangle 504. The triangle 510 is defined by edges 512, 514 and 516. The rectangle 504 is filled by an opaque pixel map image, and the triangle 510 by a transparent flat colour. The image 500 is formed by 25 pixels on each of 20 scanlines, numbered as shown.
Due to the coarse resolution of Fig. 5, the triangle 510 and rectangle 504 are shown outlined from the middle of the respective corner pixel locations. The resolution of the fill of the rectangle 504 may be ignored for present purposes. Further, all edges are rendered according to their corresponding rounded, or floored value, being one of a number of approaches known in the art. This is seen in Fig. 5 where the rendered pixel locations are shifted down and to the left of the actual object edges, the extent of which depending upon location at which the respective edge crosses the next scanline and such value being rounded down to either turn on or turn off the object in question. Further, as will be also understood, only whole pixels may be rendered and thus, for this example, the triangle 510 is illustrated having the sloping edges thereof rendered in a stepped fashion. Such will aid the reader to identify the spans, the subject of the present disclosure.
A page description definition of the image 500 may be retained in the memory 306, in the following form: Image 500: Rectangle 504 Triangle 510.
The object definitions for the rectangle 504 and triangle 510 may also be retained in the memory 306, in the following form: Rectangle 504: edge 506 4) 18); value odd edge 508 (14, 4) (14, 18); value even render technique on/off fill type bitmap.
Triangle 510: edge 512 (20, 2) (10, 11), winding value -1 edge 514 (10, 11) (20, 14); winding value -1 edge 516 (20, 2) (20, 14); winding value +1 render technique composite fill type flat colour.
640561.doc -16- The description of this Example will demonstrate an implementation in which the aforementioned edge list and span list are merged into a single list, referred to as the "edge-span list", which may also be retained in the memory 306.
In order to render the image 500, the processor 305 acknowledges the page description and the object definitions. And commences implementation of the method 400.
For scanlines 0 and 1, steps 404 and 406 are executed by the processor 305 which is unable to locate any edges on those scanlines, and step 410 invokes step 412 to cause the processor 305 render the background object 502 colour (eg. white) for the entirety of those scanlines. That object colour is output via the interface 307 to the display 314.
At scanline 2, the edges 512 and 516 are identified by the processor 305 as becoming active and are loaded, in step 406, to the edge-span list in the memory 306.
Since there are no other edges current from preceding scanlines, no merging takes place in step 408, and the edge-span list is marked by the processor 305 as "clean" at step 414.
The edge-span list appears as follows: Edge-Span List Status Clean Current Scanline 2 Edge 512 loc. Edge 516: loc. Next Scanline 3 Edge 512 Edge 516: Step 416 causes the processor 305 to then retrieve the first edge 512 from the list in the memory 306. Step 418 then causes the processor 305 to render the background 402, being essentially the first span on the scanline, from location 0 to location 19 on scanline 2, this being output to the display 314. At step 422, the processor 305 then adds the winding value of the edge 512 to that for the object 510, making the winding count for Sthe triangle 510 to be-1. The winding count may be stored in a cache of the processor 305 or in then memory 306. Step 424 then retrieves all objects with non-zero winding counts, this being only the object 510. Step 426 determines the object 510 to be the frontmost object, and step 428 the corresponding rendering technique as "composite".
At step 430, the next edge, being edge 516, is retrieved by the processor 305 from the 640561.doc -17memory 306, and step 432 connects a span between these edges. Step 434 determines a distance or length of the new span, to be one pixel.
Since in this case the edges 512 and 516 are coincident, then both edges are applied to their respective object's winding count. The pixel underneath the coincident edges is rendered according to the topmost opaque level after both winding counts have been applied. In the present case the winding count of edge 516 of +1 cancels out that for the edge 512 as they relate to the same object, thereby causing the single pixel span at location 20 on scanline 2 to resolve to the background 502, which is the top-most opaque object.
Step 436 then updates the edge 512 to determine the pixel location on the next scanline, being location 19 on scanline 3. This value is stored by the processor 305 in the edge-span list in the memory 306. This update also checks the edge-span list for the next scanline (line 3) for crossings or termination. Step 438 returns a and step 442 operates to store the rendering technique, the length of the span in the next scanline, and the object in the edge-span list. Step 444 then operates by which the processor 305 renders the present (background) span of one pixel at the location 20 for the edges 512 and 516, this being output to the display 314. Step 446 notes that no more edges exist on scanline 2 and step 448 operates to add the winding value of +1 to the winding count for the object 510, to give zero as discussed above.
Step 449 then updates the last edge, being edge 516 for its position of the next scanline. The edge-span list thus appears as follows: Edge-Span List Status Clean Current Scanline 2 Edge 512: loc. Edge 516 loc.= Next Scanline 3 Edge 512 loc. 19; obj. triangle; ren. composite length 1 Edge 516 loc. =20; obj. triangle; ren. composite By step 450 the processor 305 then causes rendering of the last span, being the background 502 (white) to the right edge of scanline 2. In step 452, the processor 305 notes the presence of more scanlines and in step 454 notes the status of the edge-span list 640561.doc 18as being "clean", thereby referring the processor 305 to step 456 for the rendering of spans on the next scanline, being scanline 3.
At step 458, the processor 305 gets the first span defined by the edge first encountered in the edge-span list for the current scanline. In the present case, this is the edge 512. The processor 305, at step 460, renders to the display 314, the background 502 up to the start of that "first" span, being pixels 0 to 18 inclusive.
In step 464, the processor 305 then causes rendering of the "first" span. This is performed by the processor 305 examining the edge-span list and rendering the length of one pixel for the edge 512 at location 19. Step 466 then updates the edge 512 for the next scanline, determining location 18 on scanline 4. In step 468, the processor makes a "no" determination, as also done step 472, since each of the edges in the edge-span list for the current scanline have been processed. In step 476, the processor 305 the updates the edge 516 for its position in the next scanline, being again location 20, this being stored in the memory 306. Since step 468 returned a the length recorded in the span list may be altered based upon the pixel locations of the adjacent edges. The span list then appears as follows: Edge-Span List Status Clean Current Scanline 3 Edge 512 loc. 19; obj. triangle; ren. composite Edge 516 loc. 20; obj. triangle; ren. composite Next Scanline 4 Edge 512 loc. 18; obj. triangle; ren. composite length 2 Edge 516 loc. 20; obj. triangle; ren. composite Step 478 causes the processor 305 to return a "no" and by step 450, the processor 305 renders the background from location 20 to the right edge of the scanline.
Implementing step 452 returns "yes", acknowledging the existence of a new scanline Step 454 notes the edge-span list as being "clean" however whilst checking for new edges, notes that a rounding of the start positions for the edges 506 and 508 on scanline 4 causes those edges only to become active on scanline 5. Accordingly step 454 returns a "no" and control returns to step 456 for rendering scanline 4. Thus scanlines 3 and 4 represent an example of a persistent span.
640561.doc 19- At step 458, the processor 305 extracts the "first" span from the edge-span list, being a span of 2 pixel commencing at location 18, and step 460 renders the background colour 502 from locations 0 to 17. Step 464 then renders the "first span" according to the relevant object parameters and step 466 updates the edge 512 for the position 17 on scanline 5. Step 468 returns a "no" as does step 472. By step 476, the processor 305 updates the edge 516 for scanline 5 in the edge-span list and step 478 also returns no".
Step 450 then renders the background 502 for the remainder of scanline 4. Since there are more scanlines, and new edges on scanline 5 are acknowledged, steps 452 and 454 return control to step 404 for rendering scanline In step 406, the processor 305 then loads the edges for scanline 4 from the memory 306, which are merged and sorted in step 408 into the edge-span list. As there exist active edges, step 410 passes to step 414 marking the list as "clean", leaving the edge-span list, stored in memory 306 as: Edge-Span List Status Clean Current Scanline 5 Edge 506: loc. 5; obj. rectangle; ren. on Edge 508 loc. 14; obj. rectangle; ren. off Edge 512 loc. 17; obj. triangle; ren. composite length 3 Edge 516 loc. 20; obj. triangle; ren. composite In step 416, the processor 305 gets the first edge 506, and step 418 renders the background from location 0 to location 4 to the display 314. By step 422, the processor 305 sets the winding count for the rectangle object as "odd" and step 424 notes that there are no other non-zero objects on the scanline. Step 426 identifies the rectangle 504 and step 428 the render technique of on/off. Step 430 then retrieves the next edge 508, and step 432 creates a span between the edge 508 and the edge 506. Step 434 determines the x-distance or length of the span as 9 pixels. In step 436, the processor 305 calculates an update value for the location of the edge 506 for the next scanline, which is then stored as a new location in the edge-span list in the memory 306.
In this example, no crossings are detected by the processor 305 during the update and step 438 passes to step 442 which stores further detail regarding the span, being the 640561.doc 20 render technique, object and span length At step 444 the processor 305 then renders the span of 9 pixels from location 5 to 13. Step 446 acknowledges more edges on scanline 4 and returns control to step 422.
Step 422 then updates the winding count with that of the current edge (edge 508), and step 424 notes no objects with non-zero winding counts and thus, from step 426, no active objects. Step 428 is thus null, and step 430 gets the next edge 512. In step 432, the processor 305 then connects a span between the edges 508 and 512. In step 434, the processor 305 determines the x-distance of the new span to be 3 pixels. Step 436 then updates the edge 508 for the next scanline, this being stored by the processor 305 in the edge-span list. The process continues as before and step 444 renders the background colour 502 for a span of 3 pixels to the display 314.
Step 446 acknowledges more edges on the scanline and the method steps 420 are then repeated for the triangle object 510 in order to complete scanline 5. At that stage, the edge-span list, as updated by the processor 305 in the memory 306, appears as follows: Edge-Span List Status Clean Current Scanline 5 Edge 506 loc. 5; obj. rectangle; ren. on length 9 Edge 508 loc. 14; obj. rectangle; ren. off length 3 Edge 512 loc. 17; obj. triangle; ren. composite length 3 Edge 516 loc. 20; obj. triangle; ren. composite Next Scanline 6 Edge 506 loc. 5; obj. rectangle; ren. on/off length 9 Edge 508 loc. 14; obj. rectangle; ren. off length 2 Edge 512 loc. 16; obj. triangle; ren. composite length 4 Edge 516 loc. 20; obj. triangle; ren. composite 640561.doc -21- At this stage of the rendering of the image 500, three spans have been identified, those being for the object 504, the background between the objects 504 and 510, and that for the object 510. Those spans are then rendered and updated by the processor 305 on scanlines 6 and 7 using the steps 450 to 454 and those including the steps 462.
However, when performing the update for the edge 512 on scanline 8 with respect to the next scanline 9, the (rounded) crossing of the edges 512 and 508 is detected by the processor 305 at step 468. Here, the edge-span list is marked as "dirty" and, on completion of scanline 8, the updated list appears as: Edge-Span List Status dirty Current Scanline 8 Edge 506 loc. 5; obj. rectangle; ren. on length 9 Edge 508 loc. 14; obj. rectangle; ren. off length 0 Edge 512 loc. 14; obj. triangle; ren. composite length 6 Edge 516 loc. 20; obj. triangle; ren. composite Next Scanline 9 Edge 506 loc. 5; obj. rectangle; ren. on/off Edge 508 loc. 14; obj. rectangle; ren. off Edge 512 loc. 13; obj. triangle; ren. composite Edge 516 loc. 20; obj. triangle; ren. composite Step 450 then passes control step 404, and whilst no new edges are loaded in step 406, in view of there being none, step 408 (re)sorts the edge-span list and step 414 marks the list again as "clean", to give: Edge-Span List Status clean Current Scanline 9 Edge 506 loc. 5; obj. rectangle; ren. on Edge 512 loc. 13; obj. triangle; ren. composite Edge 508 loc. 14; obj. rectangle; ren. off 640561.doc 22 Edge 516 loc. 20; obj. triangle; ren. composite These edges are then processed as before by the processor 305 by way of the steps 420 to thus establish spans for scanline 9, which gives the edge-span list, at conclusion of scanline 9 to be: Edge-Span List Status clean Current Scanline 9 Edge 506 loc. 5; obj. rectangle; ren. on length 8 Edge 512: loc. 13; obj. triangle; ren. composite length 1 Edge 508 loc. 14; obj. rectangle; ren. off length 6 Edge 516 loc. 20; obj. triangle; ren. composite Next Scanline 10 Edge 506 loc. 5; obj. rectangle; ren. on length 7 Edge 512 loc. 12; obj. triangle; ren. composite length 2 Edge 508 loc. 14; obj. rectangle; ren. off length 6 Edge 516 loc. 20; obj. triangle; ren. composite During the rendering of scanline 9, the overlap of the objects 504 and 510 at location 13 for a span of 1 pixel results in a compositing of the semi-transparent triangle over the bit-map image of the rectangle.
Those spans are rendered for scanlines 10, 11 andl2 by way of the steps 462 and are characterised by composite operation for the span defined between the edges 512 and 508 in which the triangle object 510 overlays the rectangle object 504. When rendering scanline 11, at step 468, the termination of the edge 512 is detected by the processor 305 and the edge-span list again marked as "dirty", resulting in the list appearing as: 640561.doc 23 Edge-Span List Status dirty Current Scanline Edge 506 loc. 5; obj. rectangle; ren. on Edge 512 loc. 11; obj. triangle; ren. composite Edge 508 loc. 14; obj. rectangle; ren. off Edge 516 loc. 20; obj. triangle; ren. composite Next Scanline 12 Edge 506 loc. 5; obj. rectangle; ren. on Edge 508 loc. 14; obj. rectangle; ren. off Edge 516 loc. 20 obj. triangle; ren. composite Control then returns to step 404 as before and, step 406 adds the new edge 514 to the edge-span list and, upon conclusion of step 414, the edge-span list appears, for scanline 12, as: Edge-Span List Status clean Current Scanline Edge 506 loc. 5; obj. rectangle; ren. on 12 Edge 514: loc. 11; obj. triangle; ren. composite Edge 508 loc. 14; obj. rectangle; ren. off Edge 516 loc. 20 obj. triangle; ren. composite Rendering proceeds in the fashion described above in which scanlines 12 and 13 are rendered using the steps 420, the later being in view of the crossing at location 14 being detected, again causing the edge-span list to be marked as dirty, thereby causing the process to revert to the steps 420 for scanline 13. This also applies to scanline 14 in view of the termination of the edge 514, and for scanline 15 to establish the new spans, formed solely by the rectangle object 504.
Scanlines 16, 17 and 18 are each rendered using the steps 462 as persistent spans, at which time the edges 506 and 508 terminate, marking the edge-span list as "dirty" and returning control to step 404 for scanline 19. Steps 406, 408 and 410 are to no effect and in step 412, the processor 305 renders the background for the entire scanline 19. Step 413 640561.doc 24 identifies there are no more scanlines to be rendered and the process concludes at step 486.
The Example of Fig. 5 demonstrates that the method of Fig. 4 affords processing optimisations in those instance where spans persist across a number of scanlines. Whilst a traditional workload (steps 420) is required for each scanline incorporating new or altered spans, a reduced workload, centred about steps 462, can be implemented for those instances where those same spans persist for each subsequent scanline, irrespective of changing length of any one or more of those spans.
The arrangements described are preferably performed in software, for example being executed upon a general purpose processor. The persistent span rendering method may alternatively be implemented in dedicated hardware such as one or more integrated circuits. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories. However, hardware implementations of the present disclosure are generally not preferred, as hardware rendering arrangements tend to be better suited to the direct logical resolution of edge intersections and object priorities.
Industrial Applicability It is apparent from the above that the arrangements described are applicable to the computer and image processing industries where speedy rendering of graphical objects is desired.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of". Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings.
640561.doc

Claims (4)

1. A method of scanline rendering an image formed of at least one graphical object, each said object being defined by a plurality of edges, in which objects active on a current scanline are determined and rendered as pixels characterised in that said edges are used to resolve said current scanline into spans of pixels which are rendered and for each of which a record is retained, said records being used in the rendering of at least one successive scanline whereby if only said spans are active on said successive scanlines, a rendering of said successive scanlines can be effected by recalculation of a length of said spans from said record.
2. A method according to claim 1 characterised in that where an edge defining one of said spans terminates or intersects with another said edge, or if said successive scanline includes a new edge, said method comprises determining objects active on said successive scanline to thereby resolve said successive scanline into spans of pixels which are rendered and for each of which a record is retained.
3. A method according to claim 1 or 2 wherein said record comprises information regarding a length of said span, at least one object contributing to said span, and a corresponding rendering technique of said object.
4. A method of scanline rendering an image formed of at least one graphical object, each said object being defined by a plurality of edges, said method comprising the steps of: first rendering a current scanline of said image, said first rendering comprising: (aa) setting a span flag and identifying and ordering edges of objects active on said current scanline and which contribute to said image; (ab) forming a span of pixels to a first one of said ordered edges and updating said one edge for a next scanline of said image; (ac) determining from the updating of step (ab) if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (ad) rendering said span of pixels on said current scanline; (ae) retaining an ordered record of said span for said next scanline;
640561.doc 26 (af) repeating steps (ab) to (ae) for each further span defined between adjacent ones of said edges on said current scanline; repeating step for said next scanline if: (ba) said span flag is reset; or (bb) a new edge is included in said next scanline; second rendering at least one following scanline of said image, said second rendering comprising: (ca) retrieving a first said recorded span from said ordered record and rendering on a following scanline said span of pixels; (cb) updating a first edge of said span in said ordered record for a next scanline of said image; (cc) determining from the updating of step (cb) if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (cd) repeating steps (ca) to (cc) for each remaining span on said following scanline; (ce) if said span flag is set, repeating steps (ca) to (cd) for said next scanline; and repeating step for said next scanline if: (da) said span flag is reset; or (db) a new edge is included in said next scanline. A method according to claim 4 wherein each said record comprises information regarding a length of said corresponding span, at least one object contributing to said corresponding span, and a rendering technique corresponding to each said one object. 6. A computer readable medium, having a program recorded thereon, where the program is configured to make a computer execute a procedure to scanline render an image formed of at least one graphical object, each said object being defined by a plurality of edges, in which objects active on a current scanline are determined and rendered as pixels characterised in that said program is operable to process said edges to resolve said current scanline into spans of pixels which are rendered and for each of which a record is retained, said records being used in the rendering of at least one successive scanline whereby if only said spans are active on said successive scanlines, a 640561.doc 27 rendering of said successive scanlines can be effected by recalculation of a length of said spans from said record. 7. A computer readable medium according to claim 6 characterised in that where an edge defining one of said spans terminates or intersects with another said edge, or if said successive scanline includes a new edge, said program is operable to determine objects active on said successive scanline to thereby resolve said successive scanline into spans of pixels which are rendered and for each of which a record is retained. 8. A computer readable medium according to claim 6 or 7 wherein said record comprises information regarding a length of said span, at least one object contributing to said span, and a corresponding rendering technique of said object. 9. A computer readable medium, having a program recorded thereon, where the program is configured to make a computer execute a procedure to scanline render an image formed of at least one graphical object, each said object being defined by a plurality of edges, said program comprising: code for first rendering a current scanline of said image, said code for first rendering comprising: (aa) code for setting a span flag and identifying and ordering edges of objects active on said current scanline and which contribute to said image; (ab) code for forming a span of pixels to a first one of said ordered edges and updating said one edge for a next scanline of said image; (ac) code for determining from said updating if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (ad) code for rendering said span of pixels on said current scanline; (ae) code for retaining an ordered record of said span for said next scanline; (af) code for repeating recalling said code for first rendering for each further span defined between adjacent ones of said edges on said current scanline; code for recalling said code for first rendering for said next scanline if: (ba) said span flag is reset; or (bb) a new edge is included in said next scanline; 640561.doc -28- code for second rendering at least one following scanline of said image, said code for second rendering comprising: (ca) code for retrieving a first said recorded span from said ordered record and rendering on a following scanline said span of pixels; (cb) code for updating a first edge of said span in said ordered record for a next scanline of said image; (cc) code for determining from said updating if said edge terminated or intersects with another edge on said next scanline, and if so, resetting said span flag; (cd) code for recalling (ca) to (cc) for each remaining span on said following scanline; (ce) code for determining if said span flag is set, and if so, recalling said code for second rendering for said next scanline; and code for recalling said code for first rendering for said next scanline if: (da) said span flag is reset; or (db) a new edge is included in said next scanline. A computer readable medium according to claim 9 wherein each said record comprises information regarding a length of said corresponding span, at least one object contributing to said corresponding span, and a rendering technique corresponding to each said one object. 11. A method of scanline rendering substantially as described herein with reference to Fig. 4. 12. A computer readable medium, having a program recorded thereon, where the program is configured to make a computer execute a procedure to scanline render, said program being substantially as described herein with reference to Fig. 4. 13. Computer apparatus configured to perform the method of any one of claims 1 to 5, or 11. DATED this SEVENTEENTH Day of JULY 2002 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant SPRUSON&FERGUSON 640561.doc
AU2003213492A 2002-08-23 2003-07-16 Scanline Rendering with Persistent Spans Abandoned AU2003213492A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003213492A AU2003213492A1 (en) 2002-08-23 2003-07-16 Scanline Rendering with Persistent Spans

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2002951058 2002-08-23
AU2002951058A AU2002951058A0 (en) 2002-08-23 2002-08-23 Scanline rendering with persistent spans
AU2003213492A AU2003213492A1 (en) 2002-08-23 2003-07-16 Scanline Rendering with Persistent Spans

Publications (1)

Publication Number Publication Date
AU2003213492A1 true AU2003213492A1 (en) 2004-03-11

Family

ID=34218890

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2003213492A Abandoned AU2003213492A1 (en) 2002-08-23 2003-07-16 Scanline Rendering with Persistent Spans

Country Status (1)

Country Link
AU (1) AU2003213492A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1612737A3 (en) * 2004-06-30 2008-03-12 Canon Kabushiki Kaisha Method of rendering graphic objects

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1612737A3 (en) * 2004-06-30 2008-03-12 Canon Kabushiki Kaisha Method of rendering graphic objects
US7755629B2 (en) 2004-06-30 2010-07-13 Canon Kabushiki Kaisha Method of rendering graphic objects

Similar Documents

Publication Publication Date Title
US6891536B2 (en) Method of determining active priorities
US7573485B1 (en) System and method for virtual coverage anti-aliasing
US20060001681A1 (en) Method of rendering graphic objects
KR20040072696A (en) Automatic memory management for zone rendering
JP2002544544A (en) Description of translucent layer
US20060250415A1 (en) Anti-aliasing content using opacity blending
EP1577838A2 (en) A method of rendering graphical objects
JP2009540371A (en) Formulating multiple display layers
US20130300763A1 (en) Rendering Changed Portions of Composited Images
US20070103469A1 (en) System and Method for Optimising Halftoning Printer Performance
AU2003213492A1 (en) Scanline Rendering with Persistent Spans
US8497874B2 (en) Pixel snapping for anti-aliased rendering
CA2213629A1 (en) Maintaining invalidation information in tiled image representations
JP2005235205A (en) Compositing with clip-to-self functionality without using shape channel
US6924813B2 (en) Technique for eliminating stale information from a computer graphics buffer
AU2002301567B2 (en) A Method of Generating Clip Paths for Graphic Objects
AU2002308789B2 (en) A Method for Determining Active Priorities
AU739491B2 (en) Using region arithmetic to partially update a hardware double buffer
AU2012258408A1 (en) Path tracing method
CN110223369B (en) Frame buffer write-back method and device of TBR architecture and computer storage medium
JP3375069B2 (en) Drawing processing device
AU743218B2 (en) Fast renering techniques for rasterised graphic object based images
AU767108B2 (en) Edge merging via lookup table
AU780003B2 (en) Optimising pixel generation from compositing stack
AU702905B2 (en) Data storage format

Legal Events

Date Code Title Description
MK1 Application lapsed section 142(2)(a) - no request for examination in relevant period