US20010055015A1 - Area and span based Z-buffer - Google Patents

Area and span based Z-buffer Download PDF

Info

Publication number
US20010055015A1
US20010055015A1 US09/823,163 US82316301A US2001055015A1 US 20010055015 A1 US20010055015 A1 US 20010055015A1 US 82316301 A US82316301 A US 82316301A US 2001055015 A1 US2001055015 A1 US 2001055015A1
Authority
US
United States
Prior art keywords
function
span
depth information
piecewise
primitive
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
US09/823,163
Other versions
US6972760B2 (en
Inventor
Konstantine Iourcha
Roger Swanson
Axel Schildan
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US09/823,163 priority Critical patent/US6972760B2/en
Publication of US20010055015A1 publication Critical patent/US20010055015A1/en
Application granted granted Critical
Publication of US6972760B2 publication Critical patent/US6972760B2/en
Adjusted 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Definitions

  • the present invention relates generally to computerized three-dimensional (3D) graphics image processing, and more particularly to techniques for Hidden Surface Removal (HSR), otherwise known as Visible Surface Determination (VSD), in 3D graphics processing.
  • HSR Hidden Surface Removal
  • VSD Visible Surface Determination
  • HSR Hidden Surface Removal
  • VSD Visible Surface Determination
  • Z-buffer containing depth information Z-values
  • the Z-values which can typically comprise 16 or 32-bits per pixel, are stored by the 3D graphics processing engine in a memory, along with color information regarding each pixel, for manipulation and display on the computer screen.
  • the present invention overcomes or substantially alleviates prior problems associated with storage and bandwidth requirements for implementing HSR/VSD in 3D graphic image processing.
  • the present invention decreases the amount of data required to represent depth information for 3D images.
  • depth information is represented by a piecewise function Z(x,y).
  • An (x,y) space is split into areas representing a region of primitive, polygonal, or other shapes.
  • Z(x,y) is defined as a simple parametric analytical function. Subsequently, only a few parameters are required to encode this function in each region.
  • an analytical representation may be used to define the area split.
  • the present invention achieves several advantages.
  • the first advantage is that the required storage space decreases in practical cases.
  • the required bandwidth typically decreases while the processing speed increases. This occurs because in each (x,y) area of the split, the visibility of a primitive being rendered can be estimated analytically with a fixed response time regardless of the number of pixels in the region.
  • the piecewise function may be linear or non-linear.
  • the (x,y) space may also be divided into span segments where a span may be the intersection of the primitive object and a scanline. This may be done to simplify the hardware implementation.
  • a module in one embodiment of the invention Upon receiving the spans for a triangle or other types of polygons or shapes, a module in one embodiment of the invention performs visible surface determination by comparing depth information for each span of the triangle with depth information defined by Z functions of the corresponding segments (segments which this particular primitive span overlaps) stored in the span Z-buffer.
  • FIG. 1 For a given Z-buffer size, embodiments employing the principles of the present invention can achieve a higher depth resolution than a standard Z-buffer with the same number of bits.
  • the required memory accesses grow linearly with resolution in the Y-direction only.
  • FIG. 1 is a block diagram of a computer system for implementing the present invention
  • FIG. 2A is a block diagram illustrating the operations of a 3D graphics engine
  • FIG. 2B is a block diagram illustrating alternative operations of a 3D graphics engine
  • FIG. 3A is a viewport showing a piecewise function Z(x,y);
  • FIG. 3B is an alternative embodiment wherein the viewport area is divided into spans
  • FIG. 3C is an illustration of how depth information is stored as a linear function for each segment.
  • FIG. 3D is an illustration of the updating of a scanline to remove hidden objects
  • FIG. 4 is a flowchart illustrating one embodiment of the present invention.
  • FIG. 5 is a block diagram of an exemplary data structure for storage of span segments
  • FIG. 6A is a block diagram of another example of a data structure for storage of span segments.
  • FIG. 6B is a specific embodiment of the data structure of FIG. 6A.
  • FIG. 1 is a block diagram illustrating a computer system 100 capable of implementing the present invention.
  • the computer system 100 includes at least one input device 102 , a display device 104 , a CPU 106 , memory 108 and a graphics engine 110 .
  • the input device 102 may include a keyboard, mouse or similar device for the input of information to the system 100 .
  • the display device 104 may be a monitor, television or similar device which shows objects generated by the present invention.
  • the CPU 106 typically performs a majority of the computational operations of the computer system 100 except for those related to the display device 104 .
  • CPU 106 may perform the computational operations related to the display device 104 .
  • the graphics engine 110 preferably includes a graphics coprocessor which performs the calculations necessary for high quality, high speed graphics required in 3D applications.
  • the graphics engine 110 may include a frame buffer having a Z-buffer.
  • the graphics engine 110 may also include a 3D graphics engine 200 as shown in FIG. 2A.
  • the 3D graphics engine 200 forms a portion of a 3D image rendering pipeline (not shown) that generates 3D image data in the form of a plurality of primitive objects 202 .
  • the primitive object 202 is shown as a triangle, those skilled in the art will realize that other 3D primitive objects such as lines, quadrilaterals and polygons may be contemplated.
  • the remaining portions of the 3D image rendering pipeline are preferably conventional elements omitted in the drawings to assist in describing the functionality of the present invention.
  • the 3D graphics engine 200 receives information about primitive object 202 in the form of 3D positional coordinates.
  • the exemplary primitive object 202 is a triangle.
  • the 3D positional coordinates include each of the three vertices of the triangle.
  • the 3D graphics engine 200 may encompass a variety of other functions to render realistic 3D-type graphical images on a two-dimensional computer display.
  • the 3D graphics engine 200 also receives rendering parameters to generate any one of a plurality of 3D effects including fogging, shading, texturing and lighting. Further functions of a 3D graphics engine are described in Foley, et al., Computer Graphics: Principles and Practices, Second Edition in C, Addison-Wesley Publishing Company (1990).
  • the 3D graphics engine 200 includes a span generator 204 and a visible surface determination module 206 .
  • the span generator 204 receives 3D coordinates for each of the vertices of primitive object 202 . Based on the coordinates, the span generator 204 then generates spans for the primitive object 202 .
  • the span data is then forwarded to the visible surface determination module 206 where depth information for each span is compared with depth information defined by an area represented by a piecewise function Z(x,y) of primitive object 202 and/or a comparison with at least one additional object to determine the visible surface.
  • Piecewise function Z(x,y) will be discussed in more detail in connection to FIGS. 3 A- 3 D.
  • the comparison process includes the generation of span segments (sub-spans) based on intersection points with other spans, with each span segment being indicative of a visible portion of a span of a particular primitive object 102 .
  • the output of the visible surface determination module 206 which identifies the span segments, is then preferably stored in a storage device 208 .
  • the output of the visible surface determination module 206 may be stored in storage device 108 (FIG. 1).
  • depth information is represented by a piecewise function Z(x,y) as shown in FIG. 3A.
  • An (x,y) space defined by a window or viewport 300 , is split into regions representing a region of a primitive, polygon, or other shape.
  • Z 1 (x,y), Z 2 (x,y), . . . Z 1 (x,y) is defined as some simple parametric analytical function, which may be linear or non-linear. Thus, only a few parameters are required to encode this function.
  • analytical representations may be used to define splits (e.g., splits 302 , 304 and 306 ).
  • the processing speed increase is attributed to the fact that for each (x,y) area of the split, the visibility of a primitive being rendered can be estimated analytically with a fixed response time regardless of the number of pixels in the region.
  • the (x,y) space (defined by viewport 320 ) may be divided into spans to simplify the hardware implementation, as shown in FIG. 3B.
  • the visible surface determination module 206 (FIG. 2) is able to compare depth information for each span of the primitive object with depth information defined by Z functions of the corresponding segments (segments which the primitive object span overlaps) stored in the span Z-buffer.
  • the view port 320 is defined by X min . . . X max and Y min . . . Y max , which are all integer values.
  • Parameter n y may be variable for each scanline and should be stored per scanline.
  • the coefficients a y,i and b y,i may take on any real value and should be stored in the span Z-buffer structure.
  • Segments S y,1 may or may not be equal in length.
  • FIG. 3B shows scanline segments S y,1 , S y,2 . . . S y,5 , each having an associated function Z y,1 (x) (not shown).
  • S y,1 has the function Z y,1 (x)
  • S y,2 has the function Z y,2 (x), and so forth.
  • FIG. 3C illustrates how the depth information is defined by the piecewise function of FIG. 3B.
  • the z-axis represents depth values for which different graphs of the Z functions may exist.
  • the example of FIG. 3C shows the Z functions as Z y,1 (x), . . . , Z y,5 (x). Every primitive object is processed scanline-by-scanline (or span-by-span), where the span is the intersection of the primitive object and a scanline.
  • FIG. 3D illustrates the updating of a scanline 350 of a span based Z-buffer.
  • all segments of the scanline 350 which overlap with a primitive object span 352 are determined and processed in an increasing X order (left to right).
  • two linear depth functions are defined on intersection 354 of the segment and primitive object span.
  • One linear depth function represents the current depth stored in the Z-buffer.
  • the other linear depth function represents the depth of the primitive object.
  • the visible regions of the primitive object in this segment can be determined (i.e., determine the X coordinate of the intersection point of the two Z functions and compare it with the end points of the segments).
  • the visible regions of the primitive object in this segment can be determined (i.e., determine the X coordinate of the intersection point of the two Z functions and compare it with the end points of the segments).
  • there may be at most two different visibility segments with one visibility segment corresponding to a non-visible portion of the primitive object and the other segment corresponding to a visible portion of the primitive object.
  • the Z-buffer structure must be updated.
  • the Z function will change only in the visible segment of the primitive object.
  • the original Z-buffer segment may be split into three segments—two of which will keep the original segment Z function from the Z-buffer and one in which a new Z function is assigned.
  • the new Z function will be the Z function of the visible portions of the primitive object.
  • the next segment is then processed in a similar way.
  • the same primitive object Z function may be obtained if the primitive object is visible in both segments. In this situation, the neighboring segments can be merged into one segment which would prevent excessive granularity of the span Z-buffer splits and save memory space.
  • FIG. 3C-D performs processing on a scanline-by-scanline manner. After all spans of the primitive object have been processed, a next primitive object may be processed in the same manner, if one exists.
  • FIG. 4 is a flowchart 400 illustrating a preferred method for determining span segments according to the present invention.
  • the span generator 204 (FIG. 2) generates spans for a primitive object. The spans are based on 3D coordinates of vertices and other surface variations of the primitive object. The span generator 204 then forwards the span information to the visible surface determination module 206 (FIG. 2) for further processing.
  • the visible surface determination module 206 determines if any of the spans are overlapping in block 404 . This determination is performed by comparing depth information for each span with depth information defined by an area represented by a piecewise function Z(x,y) of another object or another part of the same object. The various methods for generating the piecewise function Z(x,y) is described in connection with FIGS. 3 A- 3 D.
  • intersection points of the span with the area represented by the piecewise function Z(x,y) are determined in block 406 by the visible surface determination module 206 . Based on these intersection points, the visible surface determination module 206 generates span segments in block 408 . These span segments or sub-spans indicate visible portions of the spans of the particular primitive object.
  • the outputs of the visible surface determination module 206 are stored in a storage device such as device 208 (FIG. 2).
  • FIG. 5 illustrates one data structure for storage of the span segment (sub-span) information.
  • the span segment data is stored in a linked list for each Y.
  • Each set of span segment data includes position data (i.e., x y,1 ), depth data coefficients a y,1 , b y,1 (or the equivalent set of non-linear coefficients) and data for the memory location in which data coefficients for the next span segment is stored.
  • the data is stored according to scanlines.
  • the position data therefore, only includes position data along the horizontal (X) axis, with the vertical (Y) axis position data being implicit in the data structure and known by the 3D graphics engine 200 .
  • depth functions may be defined by parameters other than by (a y,1 , b y,1 ), and can be a non-linear function.
  • the data for each scanline 600 is organized in a binary tree structure 602 .
  • a binary tree is a set of nodes wherein one node is designated the root and the remaining nodes form, at most, two sub-trees. With the embodiment of FIG. 5, the average time to find a sub-span is one-half of the number of sub-spans.
  • balanced trees may be used to increase access speed.
  • a binary tree is balanced if the height of the left subtree of every node never differs by more than ⁇ 1 from the height of its right subtree.
  • the binary tree supports insertion and deletion of x y,1 (used as a key and stored in the nodes of the tree) as well as fast access to the leftmost segment overlapping with a given primitive object span.
  • x y,1 used as a key and stored in the nodes of the tree
  • fast access to the leftmost segment overlapping with a given primitive object span is proportional to the base- 2 logarithm of the number of sub-spans in the scanline.
  • the binary tree structure of FIG. 6A may store the sub-spans for a scanline as a function of the depth relationship of the sub-span as shown in FIG. 6B.
  • span segment 1 has a greater depth value than span segment 3 , and has a smaller depth value than span segment 2 .
  • span segment 1 is behind, and possibly partially or entirely hidden by span segment 3 .
  • Span segment 1 is in front of and may partially or completely block span segment 2 .
  • Span segment 2 is similarly situated with respect to span segments 4 and 5
  • span segment 3 is similarly situated with respect to span segments 6 and 7 .
  • the depth relationship for each span segment is inherent in the data structure of FIG. 6B.
  • the 3D graphics engine 200 allows for graceful degradation of span-based information to Z-values for individual pixels.
  • information for certain scanlines can be stored in the form of span segments as described above, and information for certain other scanlines may be stored in the form of z-values for individual pixels. This process allows for efficient storage and retrieval of depth information.
  • depth information may be stored in the form of span segments or in the form of z-values for different pixels in the same scanline.
  • the 3D graphics engine 200 described herein can be implement in hardware contained on one or more integrated circuits.
  • the exact manner in which the functions and features described here are implemented is not critical and can be implemented by use of known hardware structures and design techniques.
  • a hardware implementation is preferable as it provides better performance.
  • other considerations such as cost, die size and ease of manufacturing and testing may dictate implementation of certain features and functions with a combination of hardware, software and firmware.

Abstract

A system and method is provided for decreasing the amount of data required to represent depth information for 3D images. In accordance with one embodiment, depth information is represented by a piecewise function Z(x,y). An (x,y) space is split into areas representing a region of primitive shapes. For each of these regions, Z(x,y) is defined as a simple parametric analytical function. Subsequently, only a few parameters are required to encode this function in each region. By using these parametric analytical functions to represent depth value of the split, the present invention achieves advantages such as reductions in required storage space and required bandwidth with a concomitant increase in processing speed. It is emphasized that this abstract is provided to comply with the rules requiring an abstract. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. [37 C.F.R. § 1.72(b)].

Description

    CROSS REFERENCE TO RELATED APPLICATION
  • The present application claims the benefit of U.S. Provisional patent application Ser. No. 60/193,736 filed on Mar. 30, 2000 entitled “Span Based Z-Buffer”, the subject matter of which is herein incorporated by reference.[0001]
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field [0002]
  • The present invention relates generally to computerized three-dimensional (3D) graphics image processing, and more particularly to techniques for Hidden Surface Removal (HSR), otherwise known as Visible Surface Determination (VSD), in 3D graphics processing. [0003]
  • 2. Description of the Background Art [0004]
  • Rendering realistic 3D graphical images for display on a two-dimensional computer screen requires processing of information pertaining to relative depth of particular objects within an image. Typically, Hidden Surface Removal (HSR) (i.e., Visible Surface Determination (VSD)) is utilized because objects, or portions of such objects, which are hidden behind other objects should not be displayed on the two-dimensional computer screen. [0005]
  • One common HSR technique is the use of a Z-buffer containing depth information (Z-values), which indicates a relative depth for each pixel of the computer screen. The Z-values, which can typically comprise 16 or 32-bits per pixel, are stored by the 3D graphics processing engine in a memory, along with color information regarding each pixel, for manipulation and display on the computer screen. [0006]
  • However, the use of Z-values dramatically increases the memory storage requirement of a 3D graphics processing subsystem. For example, if color information for each pixel comprises 16-bits and the Z-value for each pixel comprises 16-bits, then storage of the Z-value requires a doubling in memory capacity. Use of Z-values having 32-bits for 16 bit per pixel images requires tripling of memory capacity. Accompanying the dramatic increase in memory size is the increase in the amount of data that must be transferred between the graphics processor and the memory. Many graphics operations which require manipulation of the Z-buffer require two to three times more data transfers between the graphics controller and the memory. As resolution increases in the X and Y directions, the required memory accesses grow linearly with their product. [0007]
  • Therefore, there is a need for a system and method which reduces the storage and bandwidth requirements for implementing HSR/VSD in 3D graphic image processing. [0008]
  • SUMMARY
  • The present invention overcomes or substantially alleviates prior problems associated with storage and bandwidth requirements for implementing HSR/VSD in 3D graphic image processing. In general, the present invention decreases the amount of data required to represent depth information for 3D images. In accordance with one embodiment of the present invention, depth information is represented by a piecewise function Z(x,y). An (x,y) space is split into areas representing a region of primitive, polygonal, or other shapes. For each of these regions, Z(x,y) is defined as a simple parametric analytical function. Subsequently, only a few parameters are required to encode this function in each region. In a similar fashion, an analytical representation may be used to define the area split. [0009]
  • By using these parametric analytical functions to represent depth value of the span or Z-area split, the present invention achieves several advantages. The first advantage is that the required storage space decreases in practical cases. Secondly, the required bandwidth typically decreases while the processing speed increases. This occurs because in each (x,y) area of the split, the visibility of a primitive being rendered can be estimated analytically with a fixed response time regardless of the number of pixels in the region. Furthermore, the piecewise function may be linear or non-linear. [0010]
  • In one embodiment, the (x,y) space may also be divided into span segments where a span may be the intersection of the primitive object and a scanline. This may be done to simplify the hardware implementation. Upon receiving the spans for a triangle or other types of polygons or shapes, a module in one embodiment of the invention performs visible surface determination by comparing depth information for each span of the triangle with depth information defined by Z functions of the corresponding segments (segments which this particular primitive span overlaps) stored in the span Z-buffer. [0011]
  • Storing depth information for each segment of a scanline can dramatically decrease the amount of memory required for storage of depth information because each segment typically includes several pixels. Accompanying this decrease in storage requirement is a decrease in memory bandwidth required to store and retrieve such depth information. Moreover, consolidation of depth values for pixels that are part of the same object in the same scanline reduces the number of depth value comparisons required in HSR/VSD. Comparisons with individual depth values are minimized and replaced with comparisons of depth values for groups of pixels represented by segments (sub-spans). [0012]
  • Further embodiments employing the principles of the present invention may take advantage of the coherence in adjacent pixels belonging to the same drawing primitive. This enables the detection of the visibility of several pixels at a time and reduces the number of required memory accesses. For a given Z-buffer size, embodiments employing the principles of the present invention can achieve a higher depth resolution than a standard Z-buffer with the same number of bits. Advantageously, the required memory accesses grow linearly with resolution in the Y-direction only. [0013]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a computer system for implementing the present invention; [0014]
  • FIG. 2A is a block diagram illustrating the operations of a 3D graphics engine; [0015]
  • FIG. 2B is a block diagram illustrating alternative operations of a 3D graphics engine; [0016]
  • FIG. 3A is a viewport showing a piecewise function Z(x,y); [0017]
  • FIG. 3B is an alternative embodiment wherein the viewport area is divided into spans; [0018]
  • FIG. 3C is an illustration of how depth information is stored as a linear function for each segment. [0019]
  • FIG. 3D is an illustration of the updating of a scanline to remove hidden objects; [0020]
  • FIG. 4 is a flowchart illustrating one embodiment of the present invention; [0021]
  • FIG. 5 is a block diagram of an exemplary data structure for storage of span segments; [0022]
  • FIG. 6A is a block diagram of another example of a data structure for storage of span segments; and [0023]
  • FIG. 6B. is a specific embodiment of the data structure of FIG. 6A. [0024]
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • FIG. 1 is a block diagram illustrating a [0025] computer system 100 capable of implementing the present invention. As shown, the computer system 100 includes at least one input device 102, a display device 104, a CPU 106, memory 108 and a graphics engine 110. The input device 102 may include a keyboard, mouse or similar device for the input of information to the system 100. The display device 104 may be a monitor, television or similar device which shows objects generated by the present invention. The CPU 106 typically performs a majority of the computational operations of the computer system 100 except for those related to the display device 104. Optionally, CPU 106 may perform the computational operations related to the display device 104.
  • The [0026] graphics engine 110 preferably includes a graphics coprocessor which performs the calculations necessary for high quality, high speed graphics required in 3D applications. According to one embodiment, the graphics engine 110 may include a frame buffer having a Z-buffer.
  • In an embodiment, the [0027] graphics engine 110 may also include a 3D graphics engine 200 as shown in FIG. 2A. The 3D graphics engine 200 forms a portion of a 3D image rendering pipeline (not shown) that generates 3D image data in the form of a plurality of primitive objects 202. Although the primitive object 202 is shown as a triangle, those skilled in the art will realize that other 3D primitive objects such as lines, quadrilaterals and polygons may be contemplated. The remaining portions of the 3D image rendering pipeline are preferably conventional elements omitted in the drawings to assist in describing the functionality of the present invention.
  • The [0028] 3D graphics engine 200 receives information about primitive object 202 in the form of 3D positional coordinates. As shown in FIG. 2A, the exemplary primitive object 202 is a triangle. Thus, the 3D positional coordinates include each of the three vertices of the triangle. The 3D graphics engine 200 may encompass a variety of other functions to render realistic 3D-type graphical images on a two-dimensional computer display. Preferably, the 3D graphics engine 200 also receives rendering parameters to generate any one of a plurality of 3D effects including fogging, shading, texturing and lighting. Further functions of a 3D graphics engine are described in Foley, et al., Computer Graphics: Principles and Practices, Second Edition in C, Addison-Wesley Publishing Company (1990).
  • In a preferred embodiment of the present invention, the [0029] 3D graphics engine 200 includes a span generator 204 and a visible surface determination module 206. The span generator 204 receives 3D coordinates for each of the vertices of primitive object 202. Based on the coordinates, the span generator 204 then generates spans for the primitive object 202. The span data is then forwarded to the visible surface determination module 206 where depth information for each span is compared with depth information defined by an area represented by a piecewise function Z(x,y) of primitive object 202 and/or a comparison with at least one additional object to determine the visible surface. Piecewise function Z(x,y) will be discussed in more detail in connection to FIGS. 3A-3D. The comparison process includes the generation of span segments (sub-spans) based on intersection points with other spans, with each span segment being indicative of a visible portion of a span of a particular primitive object 102. The output of the visible surface determination module 206, which identifies the span segments, is then preferably stored in a storage device 208. Optionally, the output of the visible surface determination module 206 may be stored in storage device 108 (FIG. 1).
  • In one embodiment of the present invention, depth information is represented by a piecewise function Z(x,y) as shown in FIG. 3A. An (x,y) space, defined by a window or viewport [0030] 300, is split into regions representing a region of a primitive, polygon, or other shape. For each region, Z1(x,y), Z2(x,y), . . . Z1(x,y) is defined as some simple parametric analytical function, which may be linear or non-linear. Thus, only a few parameters are required to encode this function. Similarly, analytical representations may be used to define splits (e.g., splits 302, 304 and 306). By using analytical functions to represent this data, required storage space and bandwidth typically decreases while the processing speed increases. The processing speed increase is attributed to the fact that for each (x,y) area of the split, the visibility of a primitive being rendered can be estimated analytically with a fixed response time regardless of the number of pixels in the region.
  • In an alternative embodiment, the (x,y) space (defined by viewport [0031] 320) may be divided into spans to simplify the hardware implementation, as shown in FIG. 3B. With this embodiment, the visible surface determination module 206 (FIG. 2) is able to compare depth information for each span of the primitive object with depth information defined by Z functions of the corresponding segments (segments which the primitive object span overlaps) stored in the span Z-buffer.
  • The [0032] view port 320 is defined by Xmin . . . Xmax and Ymin . . . Ymax, which are all integer values. Each scanline defined by an integer, y, between Ymin and Ymax inclusive, and the scanline is split into an integral number of segments, ny. Parameter ny may be variable for each scanline and should be stored per scanline. The split is defined by split points Xy,1 wherein i=1 . . . ny such that Xmin=Xy,1<Xy,2< . . . <Xy,n y , Xy,ny<Xmax, with the assumption that Xy,n y +1Xy,ny+1=Xmax.
  • A split is a set of segments S[0033] y,i=[Xy,1, Xy,(1+1)] where i=1, 2, . . . ny. For each segment of the split, Sy,i i=1, 2, . . . ny, there is a separate linear function Zy,1(x)=ay,1·x+by,1, defining depth information on this particular segment. Hence, for each segment Sy,1=[Xy,1, Xy,(i+1)], i=1, 2, . . . ny, the coefficients ay,i and by,i may take on any real value and should be stored in the span Z-buffer structure. Segments Sy,1 may or may not be equal in length.
  • As an example, suppose that for some scanline y, n[0034] y=5 and segment end points are Xy,1, . . . Xy,5. FIG. 3B shows scanline segments Sy,1, Sy,2 . . . Sy,5, each having an associated function Zy,1(x) (not shown). Thus, Sy,1 has the function Zy,1(x), while Sy,2 has the function Zy,2(x), and so forth. Alternatively, in addition to a linear function, Zy,1(x) may take on a non-linear function such as Zy,1(x)=aly,1(xk)+ . . . +aky,1(x)+by,1; where k and al . . . ak may be any real value.
  • FIG. 3C illustrates how the depth information is defined by the piecewise function of FIG. 3B. The z-axis represents depth values for which different graphs of the Z functions may exist. The example of FIG. 3C shows the Z functions as Z[0035] y,1(x), . . . , Zy,5(x). Every primitive object is processed scanline-by-scanline (or span-by-span), where the span is the intersection of the primitive object and a scanline.
  • FIG. 3D illustrates the updating of a [0036] scanline 350 of a span based Z-buffer. According to this embodiment of the present invention, all segments of the scanline 350 which overlap with a primitive object span 352 are determined and processed in an increasing X order (left to right). For each such segment 351 which overlaps the primitive object span 352, two linear depth functions are defined on intersection 354 of the segment and primitive object span. One linear depth function represents the current depth stored in the Z-buffer. The other linear depth function represents the depth of the primitive object.
  • As known by those skilled in the art, by solving a simple linear equation, the visible regions of the primitive object in this segment can be determined (i.e., determine the X coordinate of the intersection point of the two Z functions and compare it with the end points of the segments). For a particular Z-buffer segment and primitive object span, there may be at most two different visibility segments with one visibility segment corresponding to a non-visible portion of the primitive object and the other segment corresponding to a visible portion of the primitive object. [0037]
  • Once visibility is determined, the Z-buffer structure must be updated. The Z function will change only in the visible segment of the primitive object. In the worse case, the original Z-buffer segment may be split into three segments—two of which will keep the original segment Z function from the Z-buffer and one in which a new Z function is assigned. Specifically, the new Z function will be the Z function of the visible portions of the primitive object. [0038]
  • After the first segment of the Z-buffer is processed, the next segment is then processed in a similar way. For some of the neighboring new segments (coming from different segments of the Z-buffer), the same primitive object Z function may be obtained if the primitive object is visible in both segments. In this situation, the neighboring segments can be merged into one segment which would prevent excessive granularity of the span Z-buffer splits and save memory space. [0039]
  • Thus, the embodiment of FIG. 3C-D performs processing on a scanline-by-scanline manner. After all spans of the primitive object have been processed, a next primitive object may be processed in the same manner, if one exists. [0040]
  • FIG. 4 is a [0041] flowchart 400 illustrating a preferred method for determining span segments according to the present invention. In block 402, the span generator 204 (FIG. 2) generates spans for a primitive object. The spans are based on 3D coordinates of vertices and other surface variations of the primitive object. The span generator 204 then forwards the span information to the visible surface determination module 206 (FIG. 2) for further processing.
  • The visible [0042] surface determination module 206 determines if any of the spans are overlapping in block 404. This determination is performed by comparing depth information for each span with depth information defined by an area represented by a piecewise function Z(x,y) of another object or another part of the same object. The various methods for generating the piecewise function Z(x,y) is described in connection with FIGS. 3A-3D.
  • If there is an overlap, intersection points of the span with the area represented by the piecewise function Z(x,y) are determined in [0043] block 406 by the visible surface determination module 206. Based on these intersection points, the visible surface determination module 206 generates span segments in block 408. These span segments or sub-spans indicate visible portions of the spans of the particular primitive object.
  • Finally, in [0044] block 410, the outputs of the visible surface determination module 206 are stored in a storage device such as device 208 (FIG. 2).
  • There are numerous ways to store the output of the visible [0045] surface determination module 206. FIG. 5 illustrates one data structure for storage of the span segment (sub-span) information. In FIG. 5, the span segment data is stored in a linked list for each Y. Each set of span segment data includes position data (i.e., xy,1), depth data coefficients ay,1, by,1 (or the equivalent set of non-linear coefficients) and data for the memory location in which data coefficients for the next span segment is stored. As shown in FIG. 5, the data is stored according to scanlines. The position data, therefore, only includes position data along the horizontal (X) axis, with the vertical (Y) axis position data being implicit in the data structure and known by the 3D graphics engine 200. Those skilled in the art will recognize that depth functions may be defined by parameters other than by (ay,1, by,1), and can be a non-linear function.
  • In FIG. 6A, the data for each scanline [0046] 600 is organized in a binary tree structure 602. A binary tree is a set of nodes wherein one node is designated the root and the remaining nodes form, at most, two sub-trees. With the embodiment of FIG. 5, the average time to find a sub-span is one-half of the number of sub-spans. In the embodiment of FIG. 6A, balanced trees may be used to increase access speed. A binary tree is balanced if the height of the left subtree of every node never differs by more than ±1 from the height of its right subtree. Furthermore, the binary tree supports insertion and deletion of xy,1 (used as a key and stored in the nodes of the tree) as well as fast access to the leftmost segment overlapping with a given primitive object span. Thus, the average time to find a sub-span is proportional to the base-2 logarithm of the number of sub-spans in the scanline.
  • The binary tree structure of FIG. 6A may store the sub-spans for a scanline as a function of the depth relationship of the sub-span as shown in FIG. 6B. In the example of FIG. 6B, [0047] span segment 1 has a greater depth value than span segment 3, and has a smaller depth value than span segment 2. Hence, span segment 1 is behind, and possibly partially or entirely hidden by span segment 3. Span segment 1 is in front of and may partially or completely block span segment 2. Span segment 2 is similarly situated with respect to span segments 4 and 5, while span segment 3 is similarly situated with respect to span segments 6 and 7. Thus, the depth relationship for each span segment is inherent in the data structure of FIG. 6B. As such, a comparison of depth value is not necessary in order to determine the relative depth of two span segments, and processing time is reduced. Those skilled in the art will recognize that other forms of binary trees and other forms of data structures can be used in the implementation of the present invention. Additionally, other high speed access methods may be used according to a particular design need.
  • In an embodiment where many span segments comprise only a few pixels, it may be preferable to store an individual depth value for each pixel, such as in a conventional Z-buffer. Additionally, storage of depth information, such as Z-values, is necessary where more than one span segment is designated for storage in the same memory location. In such cases, depth information for the pixels in the scanline covered by the two conflicting span segments is stored as conventional Z-values. Preferably, the [0048] 3D graphics engine 200 allows for graceful degradation of span-based information to Z-values for individual pixels. Thus, information for certain scanlines can be stored in the form of span segments as described above, and information for certain other scanlines may be stored in the form of z-values for individual pixels. This process allows for efficient storage and retrieval of depth information. In a preferred embodiment, depth information may be stored in the form of span segments or in the form of z-values for different pixels in the same scanline.
  • Preferably, the [0049] 3D graphics engine 200 described herein can be implement in hardware contained on one or more integrated circuits. The exact manner in which the functions and features described here are implemented is not critical and can be implemented by use of known hardware structures and design techniques. A hardware implementation is preferable as it provides better performance. However, other considerations such as cost, die size and ease of manufacturing and testing may dictate implementation of certain features and functions with a combination of hardware, software and firmware.
  • It is also within the scope of the present invention to implement a program or code that can be stored in an electronically readable medium to permit a computer or similar device to perform any of the methods described herein. [0050]
  • The invention has been described above with reference to specific embodiments. It will be apparent to those skilled in the art that various modifications may be made and other embodiments can be used without departing from the broader scope of the invention. Therefore, these and other variations upon the specific embodiments are intended to be covered by the present invention, which is limited only by the appended claims. [0051]

Claims (24)

What is claimed is:
1. In a computerized 3D graphical image rendering system for performing visible surface determination, a method of generating depth information, comprising the steps of:
representing depth information by a piecewise function;
upon receiving a primitive object, dividing the primitive object according to areas defined by the piecewise function;
performing a visibility test in the areas; and
updating the piecewise function based on the results of the visibility test.
2. The method of
claim 1
wherein each piece of piecewise function is an analytical function of a predefined class defined by corresponding parameters.
3. The method of
claim 2
wherein the analytical function is a linear function.
4. The method of
claim 2
wherein the analytical function is a non-linear function.
5. The method of
claim 1
wherein a dynamic search structure is used for fast access to the areas of a split overlapping with the primitive object.
6. The method of
claim 4
wherein the dynamic search structure is a tree-based structure.
7. The method of
claim 1
wherein each piece of the piecewise function is defined on a segment of a scanline.
8. An apparatus for generating depth information, comprising:
a first module for representing depth information by a piecewise function;
a second module for dividing a primitive object according to the areas defined by the piecewise function upon receiving the primitive object;
a third module for a performing visibility test in the areas; and
a fourth module for updating the piecewise function based on any results of the visibility test.
9. The apparatus of
claim 8
wherein the first module processes a piecewise analytical function.
10. The apparatus of
claim 9
wherein the first module processes a piecewise linear function.
11. The apparatus of
claim 9
wherein the first module processes a piecewise nonlinear function.
12. The apparatus of
claim 8
further comprising a module implementing a dynamic search structure for selectively accessing a set of the piecewise function parameters.
13. The apparatus of
claim 12
wherein the dynamic search structure is a tree-based structure.
14. The apparatus of
claim 8
wherein each piece of piecewise function is defined on a segment of a scanline.
15. An apparatus for performing visible surface determination of 3D images defined by a plurality of primitive objects and associated depth information, comprising:
a span generator for generating spans for each of the primitive objects, a span corresponding to each horizontal scan line occupied by the primitive object, the span characterized by positional data and depth data; and
a visible surface determination module responsive to the depth data associated with each of the spans, for determining visible segments of each of the spans, and for generating position data corresponding to each of the visible segments of each of the spans.
16. The apparatus of
claim 15
further comprising a means for storing the position data corresponding to each of the visible segments of each of the spans and for causing storage of depth data corresponding to each of the visible segments of each of the spans.
17. A system for performing visible surface determination on 3D images defined by a plurality of primitive objects and associated depth information, comprising:
a processing device;
a display device coupled to the processing device for displaying the 3D images;
a graphics engine coupled to the processing device for performing visible surface determination; and
a storage device for storing results of the visible surface determination,
wherein regions of the primitive objects and the associated depth information are defined by analytical functions.
18. The system of
claim 17
wherein the graphics engine further comprises a span generator for generating spans corresponding to each horizontal scanline of the primitive object.
19. The system of
claim 18
wherein the graphics engine further comprises a visible surface determination module coupled to the span generator for determining visible segments for each span.
20. The system of
claim 17
wherein the storage device stores the results in a linked-list format.
21. The system of
claim 17
wherein the storage device stores the results in a binary tree format.
22. The system of
claim 17
wherein the results comprise information indicative of relative depth of a first visible segment in relations to a second visible segment.
23. A computer readable medium having embodied thereon a program, the program being executable by a machine to perform method steps for performing visible surface determination, the method steps comprising:
representing depth information of a primitive object by a piecewise function;
upon receiving the primitive object, dividing the primitive object according to areas defined by the piecewise function;
performing a visibility test in the areas; and
updating the piecewise function based on the results of the visibility test.
24. A system for performing visible surface determination on 3D images defined by a plurality of primitive objects and associated depth information, comprising:
means for representing depth information by a piecewise function;
upon receiving a primitive object, means for dividing the primitive object according to the areas defined by the piecewise function;
means for performing a visibility test in the areas; and
means for updating the piecewise function based on the results of the visibility test.
US09/823,163 2000-03-30 2001-03-30 Area and span based Z-buffer Expired - Lifetime US6972760B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/823,163 US6972760B2 (en) 2000-03-30 2001-03-30 Area and span based Z-buffer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19373600P 2000-03-30 2000-03-30
US09/823,163 US6972760B2 (en) 2000-03-30 2001-03-30 Area and span based Z-buffer

Publications (2)

Publication Number Publication Date
US20010055015A1 true US20010055015A1 (en) 2001-12-27
US6972760B2 US6972760B2 (en) 2005-12-06

Family

ID=22714812

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/823,163 Expired - Lifetime US6972760B2 (en) 2000-03-30 2001-03-30 Area and span based Z-buffer

Country Status (2)

Country Link
US (1) US6972760B2 (en)
EP (1) EP1139294B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090295811A1 (en) * 2008-05-29 2009-12-03 Stmicroelectronics S.R.I. Rendering module for bidimensional graphics
US8406565B1 (en) 2008-08-26 2013-03-26 Adobe Systems Incorporated Region reasoning for image processing graphs
US20170024927A1 (en) * 2015-06-19 2017-01-26 Arm Limited Method of and apparatus for processing graphics
US20170076187A1 (en) * 2015-09-11 2017-03-16 Canon Kabushiki Kaisha Image processing apparatus and image processing method for estimating time required for print processing
US10726610B2 (en) 2018-08-29 2020-07-28 Arm Limited Efficient graphics processing using metadata
US10769838B2 (en) 2017-12-18 2020-09-08 Arm Limited Hierarchical graphics processing for primitives

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7629507B2 (en) * 2007-07-10 2009-12-08 Monsanto Technology Llc Soybean variety D4201483

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509110A (en) * 1993-04-26 1996-04-16 Loral Aerospace Corporation Method for tree-structured hierarchical occlusion in image generators
US5923332A (en) * 1995-07-10 1999-07-13 Ricoh Company, Ltd. Image processing device
US5990904A (en) * 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6760024B1 (en) * 2000-07-19 2004-07-06 Pixar Method and apparatus for rendering shadows

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999789A (en) * 1987-02-05 1991-03-12 Hewlett-Packard Co. Method and apparatus for trimming B-spline descriptions of patches in a high performance three dimensional graphics system
DE69628451D1 (en) * 1995-07-26 2003-07-03 Apple Computer METHOD FOR DISPLAYING A LINE BY SORTING SEGMENTS AND SUBSEGMENTS
US6512516B1 (en) * 1998-10-05 2003-01-28 Mitsubishi Electric Research Laboratories, Inc. Voxel-based system to permit rapidly deforming volumetric objects made up of inhomogeneous material

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509110A (en) * 1993-04-26 1996-04-16 Loral Aerospace Corporation Method for tree-structured hierarchical occlusion in image generators
US5923332A (en) * 1995-07-10 1999-07-13 Ricoh Company, Ltd. Image processing device
US5990904A (en) * 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
US6760024B1 (en) * 2000-07-19 2004-07-06 Pixar Method and apparatus for rendering shadows

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090295811A1 (en) * 2008-05-29 2009-12-03 Stmicroelectronics S.R.I. Rendering module for bidimensional graphics
US8411094B2 (en) * 2008-05-29 2013-04-02 Stmicroelectronics S.R.L. Rendering module for bidimensional graphics
US8406565B1 (en) 2008-08-26 2013-03-26 Adobe Systems Incorporated Region reasoning for image processing graphs
US20170024927A1 (en) * 2015-06-19 2017-01-26 Arm Limited Method of and apparatus for processing graphics
US10043306B2 (en) * 2015-06-19 2018-08-07 Arm Limited Using depth data in a graphics processing system
US20170076187A1 (en) * 2015-09-11 2017-03-16 Canon Kabushiki Kaisha Image processing apparatus and image processing method for estimating time required for print processing
CN107020845A (en) * 2015-09-11 2017-08-08 佳能株式会社 The image processing apparatus and image processing method of time needed for estimation print processing
US10127483B2 (en) * 2015-09-11 2018-11-13 Canon Kabushiki Kaisha Image processing apparatus and image processing method for estimating time required for print processing
US10769838B2 (en) 2017-12-18 2020-09-08 Arm Limited Hierarchical graphics processing for primitives
US10726610B2 (en) 2018-08-29 2020-07-28 Arm Limited Efficient graphics processing using metadata

Also Published As

Publication number Publication date
US6972760B2 (en) 2005-12-06
EP1139294A8 (en) 2001-11-28
EP1139294A3 (en) 2004-01-02
EP1139294B1 (en) 2016-09-21
EP1139294A2 (en) 2001-10-04

Similar Documents

Publication Publication Date Title
KR102101626B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US7280121B2 (en) Image processing apparatus and method of same
US6292192B1 (en) System and method for the direct rendering of curve bounded objects
JP4327105B2 (en) Drawing method, image generation apparatus, and electronic information device
US6323874B1 (en) System and method for rendering an image
US6509897B1 (en) Method and system for providing implicit edge antialiasing
US8269788B2 (en) Vector graphics anti-aliasing
US20050068326A1 (en) Image processing apparatus and method of same
US5973701A (en) Dynamic switching of texture mip-maps based on pixel depth value
KR20170031479A (en) Method and apparatus for performing a path stroke
KR20060007054A (en) Method and system for supersampling rasterization of image data
US5914722A (en) Memory efficient method for triangle rasterization
JPH0660173A (en) Method and apparatus for reducing picture
US6348917B1 (en) Dynamic switching of texture mip-maps based on depth
US6972760B2 (en) Area and span based Z-buffer
JPH0927045A (en) Image processor
JP3547250B2 (en) Drawing method
EP2728551B1 (en) Image rendering method and system
US6753861B2 (en) Active region determination for line generation in regionalized rasterizer displays
US7170528B1 (en) Fast glyph rendering for vector based fonts
KR100624455B1 (en) Lightmap processing method in 3 dimensional graphics environment and apparatus therefor
JP3872056B2 (en) Drawing method
JP3587105B2 (en) Graphic data processing device
US20160321835A1 (en) Image processing device, image processing method, and display device
KR100441082B1 (en) 3D texture-based volume graphic architecture using visibility ordered division rendering algorithm and method of the same

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12