Abstract:
An improved method and apparatus for classifying triangles. A description of a triangle in the form of the coordinates of its vertices is supplied to calculation logic. The calculation logic calculates a plurality or parameters of the triangle from these coordinates. These parameters are then provided to a look-up table. The look-up table has previously been programmed to include at each address the proper triangle classification for that address, with each address being a different combination of the parameters. The addresses for the look-up table cover all possible combinations of the parameters, and thus all possible triangles.

Description:
The Appendix is a computer program for computing a table to implement a portion of the triangle classification algorithm. 
     BACKGROUND 
     The present invention relates to classifying triangles into different categories for three-dimensional graphics displays. 
     Three-dimensional computer graphics displays are used to display images to a user as if he were observing a real world environment. These systems store in a data base a representation in three-dimensional coordinates of three-dimensional objects, as well as their color and other properties. Additional &#34;environment&#34; information including the number, color, location, and other properties of illumination sources, atmospheric properties, and many other details may also be specified. The display is produced after being provided with the desired viewing angle for the viewer. The system must calculate all the details of the image, including determining which objects obscure others from the viewer&#39;s point of view, and present them accordingly. 
     A typical graphics display system is shown in FIG. 1. An image data base 12 stores a description of the objects in the scene. The objects are described with a number of small polygons which cover the surface of the object in the same manner that a number of small tiles can cover a wall or other surface. Each polygon is described as a list of vertex coordinates (X, Y, Z in &#34;Model&#34; coordinates) and some specification of material surface properties (i.e., color, texture, shininess, etc.), as well as possibly the normal vectors to the surface at each vertex. For three-dimensional objects with complex curved surfaces, the polygons in general must be triangles or quadralaterals, and the latter can always be decomposed into pairs of triangles. 
     A transformation engine 14 transforms the object coordinates in response to the angle of viewing selected by a user from user input 16. In addition, the user may specify the field of view, the size of the image to be produced, and the back end of the viewing volume so as to include or eliminate background as desired. 
     Once this viewing area has been selected, a clipping circuit 18 eliminates the polygons (i.e., triangles) which are outside the viewing area and &#34;clips&#34; the polygons which are partly inside and partly outside the viewing area. These clipped polygons will correspond to the portion of the polygon inside the viewing area with new edge(s) corresponding to the edge(s) of the viewing area. The polygon vertices are then transmitted to the next stage in coordinates corresponding to the viewing screen (in X, Y coordinates) with an associated depth for each vertex (the Z coordinate). In a typical system, the lighting model 20 is next applied taking into account the light sources 22. The polygons with their color values are then transmitted to a rasterizer 24. 
     For each polygon, rasterizer 24 determines which pixel positions are covered by the polygon and attempts to write the associated color values and depth (Z value) into frame buffer 26. Rasterizer 24 compares the depth values (Z) for the polygon being processed with the depth value of a pixel which may already be written into the frame buffer. If the depth value of the new polygon pixel is smaller, indicating that it is in front of the polygon already written into the frame buffer, then its value will replace the value in the frame buffer because the new polygon will obscure the polygon previously processed and written into the frame buffer. This process is repeated until all of the polygons have been rasterized. At that point, video controller 28 displays the contents of frame buffer 26 on a display 30 a scan line at a time in raster order. 
     In order to aid the rasterizer in processing the polygons, the polygons are often classified by type. Where the polygons are triangles, for instance, if the triangle has a level bottom on a single scan line, the rasterizer will know that it can stop once it has reached the end of the left border, which may be marked by a change in slope. If, on the other hand, the slope of the left border changes because the triangle has a bottom at an angle, the rasterizer must keep rasterizing but with a different slope for the left boundary. If the rasterizer is provided with information on the triangle type, it will know what to do in these situations with minimal data. Typically, the classification of triangles is done by doing a series of calculations on the triangle data. For instance, the bottom two vertices may be compared to see if they are on the same scan line (same y coordinate). If not, a further test may be done to determine if one vertex is to the left of the other or to the right of the other. After passing through a series of tests, the classification of the triangle can eventually be determined. 
     In addition to classifying triangles, some triangles must be eliminated. For example, certain &#34;degenerate&#34; triangles should not be processed. Such triangles include triangles where all three vertices are on a single line, and thus the triangle is just a line. Alternately, the triangle may be so small that it does not enclose a pixel and would not show up in the display. Finally, there are &#34;backfacing&#34;  triangles, which are triangles on the backside of a surface to be viewed. These triangles should also be eliminated since they will not be visible from a particular viewpoint. One can determine whether a triangle is backfacing if one can figure out the order of the vertices. In a typical system, the triangles are defined with the vertices in clockwise order from the viewing angle in which the triangle is visible. Thus, if a viewing angle is selected from the opposite side, where the triangle is not visible, the triangle vertices will be presented in counter-clockwise order. A determination of the clockwise or counter-clockwise nature of the data is performed to determine whether a triangle is backfacing and should be eliminated. 
     SUMMARY OF THE INVENTION 
     The present invention is an improved method and apparatus for classifying triangles. A description of a triangle in the form of the coordinates of its vertices is supplied to calculation logic. The calculation logic calculates a plurality or parameters of the triangle from these coordinates. These parameters are then provided to a look-up table. The look-up table has previously been programmed to include at each address the proper triangle classification for that address, with each address being a different combination of the parameters. The addresses for the look-up table cover all possible combinations of the parameters, and thus all possible triangles. 
     In a preferred embodiment, the triangles are classified into five classes: degenerate triangles which are deleted; wide bottom triangles which have a bottom edge which does not cross a y scan line; wide top triangles which have a top edge which does not cross a y scan line; new left triangles which have the vertex on the left side of the triangle between top and bottom vertices; and new right triangles which have a right side vertex between top and bottom vertices of the triangle. 
     For the parameters of the triangle, the edges are first computed as vectors from the vertices, with each edge being given a sign bit. Then, values representing whether a particular edge crosses an integral x or y boundary are calculated. From these values, the slopes of the edges can be calculated and then the slopes are compared to each other to produce a set of slope comparison parameters. 
     Preferably, when a triangle is provided to the computation logic, it includes a bit which indicates whether the vertices are arranged in clockwise or counter-clockwise order. This bit can be used to eliminate triangles which are backfacing and to aid in reordering the vertices where necessary. This reordering is necessary when the vertex information does not include the top left vertex as the first piece of information. 
     The present invention uniquely recognizes five categories of triangles which allow a rasterizer, especially a triangle processor, to more efficiently rasterize. 
     In addition, the present invention provides a look-up table system which vastly simplifies the logic and the calculation time for classifying triangles. 
     For a fuller understanding of the nature and advantages of the invention, reference should be made to the ensuing detailed description taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a prior art three-dimensional display processing system; 
     FIG. 2 is a block diagram of a three-dimensional graphics display processing system according to the present invention; 
     FIGS. 3A-3E show five classes of triangles into which triangles are sorted by the present invention; and 
     FIG. 4 is a block diagram of a triangle classification circuit according to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     FIG. 2 is a block diagram of a graphics display processing system according to the present invention. A host work station 42 is coupled to a display list DRAM 44 and a display list processor 46. Host work station 42 loads display lists into display list DRAM 44 and edits the display lists as desired. Display list processor 46 interprets the display list code and outputs primitives, structures and commands to transform and clip unit (XTC) 50. Optionally, a B-spline to polygon processor 48 may be inserted if the display list is defined in terms of splines rather than polygons. Transform and clip circuit 50 transforms the triangle descriptions from model space to view space, then clips the triangles so that only the portion of triangles in the view area or the guardband area are passed along. 
     Triangle preparation and Y-sort circuit 52, in conjunction with Y buffer 54, sorts the triangles into scan line order. Each triangle is assigned to the scan line upon which it first appears. This circuitry keeps track of the number of triangles sent down the triangle pipeline as well as the number of triangle processors which are freed up in order to prevent an overflow condition. The triangle pipeline consists of a series of triangle processors 56 which are loaded with descriptions of particular triangles. The triangle processor then compares these descriptions to pixel positions as each scan line is traversed. The triangle processor then compares these descriptions to pixel positions as each scan line is traversed. The triangle processors output the proper value for each pixel to a normal vector shading circuit 58. This circuit provides the appropriate shading of the 3-D picture in accordance with chose angles of light, etc. The output of the normal vector shader is provided to an RGB Z buffer 60 and from there to a CRT 62. A frame buffer controller 63 compares the contents of frame buffer 60 to a new pixel value from a second pass through the triangle processor pipeline after an overflow. RGB Z frame buffer 60 and controller 63 may optionally be eliminated since the data is provided scan line by scan line ready for display. However, provision must then be made to handle overflows and assure that the load time for the triangles does not exceed the line flyback time of the CRT. 
     A triangle classification and assembly stage in unit 50 classifies triangles and lines and outputs data that will reorganize the points for the following stages. In order to do this, this stage needs to calculate certain of the parameters required in subsequent stages. This data will be transferred to help save calculations down-pipe. 
     The classification logic classifies triangles as being wide top, wide bottom, new right, new left, degenerate in y, or backfacing. It is here that backface rejection occurs, when enabled. 
     Triangle Classification Setup 
     The task of taking a triangle of arbitrary orientation and at high speed converting its vertices into the incremental rendering data needed by the triangle processors is a non-trivial task. In the prior art this sort of computation was handled as a large number of special cases by complex microcode utilizing a number of time consuming tests. In the present invention, a new method o±rapidly classifying the triangles into one of five general classes with six parameterized orientations is employed. 
     In FIGS. 3A-3E, the five general classes are presented. They are generally defined as follows: 
     3A. (WT) WIDE TOP: The top two vertices of the triangle fall between the same two integral y coordinates. 
     3B. (WB) WIDE BOTTOM: The bottom two vertices of the triangle fall between the same two integral y coordinates. (Note: The terms Wide Bottom and Wide Top are simply convenient designations, the bottoms and tops of these triangles could be very narrow.) 
     3C. (NL) NEW LEFT: All three vertices fall between different pairs of integral y coordinates, and the middle vertex is to the left of the line segment between the other two vertices. 
     3D. (NR) NEW RIGHT: All three vertices fall between different pairs of integral y coordinates, and the middle vertex is to the right of the line segment between the other two vertices. 
     3E. (DG) DEGENERATE: No two vertices of the triangle are on different sides of both x and y integral boundaries. Such a triangle does not contain any valid sample points, and may be safely discarded. 
     In addition, the classification places the vertices in a unique order: one topmost vertex, the other two in clockwise order. This provides six different reorderings of three points. If the reordering included reversing the order between the vertices, then the triangle must be backfacing (assuming that all triangles were originally defined in clockwise order when front facing). This is a much more robust test of backfacing than the more usual testing of the normal vectors to the vertices or testing of the cross product of the vectors formed by two edges. The former won&#39;t work if no normals are provided, or if the normals bend across the face of the triangle. The latter requires significant extra computation, and can be unreliable for many near degenerate triangles. 
     The above definition cannot be employed directly to classify triangles in hardware, as it relies upon tests not directly available to the hardware (such as testing on which side of an edge a vertex lies). A method to obtain the semantically same classification with simple information will be described after some intermediate terms are described. 
     The triangle classification is used three ways: to weed out degenerate, corrupted, or backfacing triangles; to indicate which of the four parameter setup methods to employ (and as to which vertices), and to tell the triangle processors what class of triangle to rasterize. 
     Note that the triangle processors do not distinguish between WIDE --  TOP and WIDE --  BOTTOM classes. Because all triangle tops are always clipped to the uppermost scan line crossed, the triangle processor sees all triangles as starting with a wide top, and indeed if they also have a new left or new right vertice, the triangle processor really deals with them as a form of quadralateral. 
     The method starts with the three triangle vertices, p0, p1, and p2, with screen coordinates (x0,y0), (x1,y1), and (x2,y2), as output by the clipping section. From these values, a number of intermediate terms are computed for use in triangle classification. One of the strengths of the classification method is that most of terms will be used by the next processing stage for set-up of incremental rendering parameters for the triangle processors, and thus are available at little cost. In the following text, &#34;=&#34; indicates assignment, while &#34;==&#34; indicates comparison. 
     First the edges of the triangle are computed as vectors with components (dx*,dy*): 
     
         ______________________________________dx0 = x1 - x0       dy0 = y1 - y0dx1 = x2 - x1       dy1 = y2 - y1dx2 = x0 - x2       dy2 = y0 - y2______________________________________ (let sdx0, sdy0, sdx1, sdx2, sdy2 be the sign bits of these), 
    
     Then boolean values idx* and idy* are computed representing whether a particular edge crosses an integral x or y boundary: 
     
         idx0=integer (x0)==integer (xl) 
    
     
         idx1=integer (xl)==integer (x2) 
    
     
         idx2=integer (x2)==integer (x0) 
    
     
         idy0=integer (y0)==integer (yl) 
    
     
         idy1=integer (yl)==integer (y2) 
    
     
         idy2=integer (y2)==integer (y0) 
    
     Then the slopes m* of the edges are computed from dx* and dy*: 
     
         m0=dx0/dy0 
    
     
         m1=dx1/dy1 
    
     
         m2=dx2/dy2 
    
     Finally the slopes are compared, and the results of the comparisons are stored in the slope sense boolean bits s*: 
     
         s0=m2≧m0 
    
     
         s1=m0≧m1 
    
     
         s2=ml≧m2 
    
     With these values computed, the five triangle classifications can be precisely defined. In FIGS. 3A-3D, the points i0, i1, and i2 are some (as yet undetermined) permutation of p0, p1, and p2. CLASS DELETE(DT) is defined by: 
     
         ______________________________________not (      (idx0 == 1 and idy0 == 1)                           or      (idx1 == 1 and idy1 == 1)                           or      (idx2 == 1 and idy2 == 1)                            )______________________________________ 
    
     This says at least one of the triangle&#39;s edges must cross integral boundaries in both x and y. Otherwise, the triangle is degenerate, such as a line or a triangle which is too small to cross a pixel position. 
     The class DELETE must be checked first. The other classifications assume that the conditions for DELETE do not hold. Any triangle in this class is deleted and not processed further. 
     CLASS Wide Bottom (WB) (FIG. 3A) is defined by: 
     
         idyl==0 and not (DELETE) 
    
     This says that the edge between il and i2 must not cross a y scan line, e.g. result in a flat bottom when rasterized. 
     CLASS Wide Top (WT) (FIG. 3B) is defined by: 
     
         idy0==0 and not (DELETE) 
    
     This says that the edge between i0 and i1 must not cross a y scan line, e.g. result in a flat top when rasterized. 
     
         ______________________________________   idy0 == 1 and idy1 == 1 and   idy2 == 1 and sdy1 == 1 and    s1 == 1 and not (DELETE)______________________________________ 
    
     This says that all three edges must each cross at least one y scan line, point i2 is above point il and on different scan lines, and that the edge between i1 and i2 is to the left of the edge between i0 and i1. 
     
         ______________________________________   idy0 == 1 and idyl == 1 and   idy2 == 1 and sdyl == 0 and    s1 == 1 and not (DELETE)______________________________________ 
    
     This says that all three edges must each cross at least one y scan line, point i2 is below point i1 and on different scan lines, and that the edge between i1 and i2 is to the right of the edge between i0 and i2. 
     This establishes the classifications, but not the assignments of vertices. Consider the 15 bit state vector represented by a concatenation of our boolean terms: 
     
         /s0/s1/s2/idx0/sdx0/idy0/sdy0/ idx1/sdx1/idy1/sdy1/idx2/sdx2/idy2/sdy2/ 
    
     The five classes of triangles represent a complete and disjoint partition of the space defined by this state vector. In other words, the classification is completely unambiguous (e.g., no triangle is both of class NEW --  RIGHT and class NEW --  LEFT), and all possible triangles fall into one of the five classes. This means that if we exhaustively analyze all 32,768 possible triangles represented by the state vector, we can unambiguously place each one into one of the five classes, and furthermore, as a side effect of classification, determine the remapping of vertices. This is the key to the method: a ROM that takes as its address input this state vector, and outputs one of five triangle classes, and vertex reordering information. This can be represented by 10 bits of output, including a bit indicating that the reordering reversed the order of the vertices, indicating that the triangle was backfacing. 
     While this table could be constructed by hand, a computer program is a more effective method of determining the ROM contents. Such a program is shown in the Appendix. The program is completely based upon the classification formula described above, and the main complexities involve searching for possible reorderings of input endpoints. 
     FIG. 4 shows a block diagram of a classification system according to the present invention. The coordinates of the triangle vertices are provided on an input line 70 to calculation logic 72. Logic 72 performs a calculation set forth above and provides a 15 bit state vector (plus a clockwise, counter-clockwise bit if desired) on a line 74 to a look-up ROM 76. The addresses of look-up ROM 76 cover all possible combinations of the 15 bit state vector and provide as an output on line 78 the triangle classification. The system of FIG. 4 is provided as part of block 50 of FIG. 2 after the clipping logic. 
     As will be understood by those familiar with the art, the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. For example, new left and new right triangles could be split into two triangles, one wide bottom and one wide top. Alternately, other parameters could be used for the state vector. Accordingly, the disclosure of the preferred embodiment of the invention is intended to be illustrative, but not limiting, of the scope of the invention which is set forth in the following claims. ##SPC1##