Computer systems typically have some method of interfacing with users. Often, this interfacing involves the graphical representation of images (graphics) on a display screen, other visualization device or a hard copy printout. Graphics are generated by computer graphics systems that simulate and display images of real or abstract objects. Graphics enable a user to visualize and comprehend the configuration of a single object or the interaction and relationships between a group of objects. The images usually comprise pictures in which the objects remain still, or video displays in which the objects move. Most modern computer graphics systems are interactive, permitting a user to input changes to a display or modify the images on the fly. Computer graphics are used to perform a wide variety of tasks and have become a key technology for communicating ideas, data, and trends in most areas of business, science, education and entertainment.
In most computer graphic systems an image is represented as a raster (an array) of logical picture elements (pixels). A pixel is usually a rectangle, but can be other shapes. The computer graphics system assigns parameter values to each pixel. These parameter values are digital values corresponding to certain attributes of the image (e.g. color, depth, etc.) measured over a small area of the image represented by a pixel. Typically each graphical image is represented by thousands of combined pixels.
In a complex or three dimensional (3D) computer generated graphical image, objects are typically described by graphics data models. These coverage masks typically define the shape of the object, the object's attributes, and where the object is positioned. The shape of the object is normally described in terms of "primitives", which usually comprise mathematically described circular disks, vectors, polygons or polyhedra. In order to simplify very complex models the primitives are broken down into small pieces called fragments. Each fragment must be the size of a pixel or smaller.
FIG. 1 shows a schematic of one embodiment of a computer graphics system 100. Computer graphics system 100 comprises a central processing unit (CPU) 101, a main memory 102, graphics controller 103, frame buffer 104, mass storage device 105, keyboard controller 106, keyboard 108, printer 109 and display monitor 110, all of which are coupled to bus 107. CPU 101 handles most of the control and data processing. Main memory 102 provides a convenient method of storing data for quick retrieval by CPU 101. Graphics controller 103 processes image data in pipelined stages. Frame buffer 104 stores pixel parameter values. Mass storage device 105 stores data associated with multiple images and applications. Keyboard controller 106 controls keyboard 108, which operates as an input device. Printer 109 prints hard copies of graphical images and display monitor 110 displays graphical images.
The objective of most computer graphics systems is to create a graphical image. This usually begins with inputting data and instructions on an input device (e.g. keyboard 108). A CPU (e.g. CPU 101) interprets the instructions and image data in order to perform the appropriate processing. Some computer graphics systems may include special-purpose processors, each custom tailored to specific graphics functions. The main graphical processing function of the CPU (or special-purpose processors) is to take the specifications of graphical primitives specified by application programs and to assign pixels a parameter value or values that best represent characteristics of an image.
Parameter values are stored in frame buffers which typically are implemented in special types of memory chips, such as video random access memory (VRAM) or dynamic random access memory (DRAM). These special memory chips permit fast redisplay of the contents of the frame buffer. The resolution and detail of the image are largely determined by the number of pixels in the frame buffer. The number of bits that are used for each pixel defines the depth of the frame buffer and determines properties such as how many colors can be represented on a given system. For example, a 1-bit-deep frame buffer allows only two colors. Frame buffers play an important role in rasterization.
Rasterization is the process of assigning a pixel a parameter value in the frame buffer for particular primitives. Rasterization can proceed on a pixel basis or primitive basis. The first step in a rasterization process is to determine which pixels are to be updated in rendering a particular primitive, usually by establishing a bounding box. The next step involves the determination of how those pixels should be updated and what parameter values should be assigned to a pixel for creating a visually accurate display.
One of the most effective ways to select each pixel's parameter values is known as multisampling or supersampling. Multisampling "measures" parameter values at a number of sample circular disks located in each pixel. In most computer graphics systems, multisampling actually involves reconstructing a signal and sampling the reconstructed signal. The number of samples per pixel may vary from application to application. Typically each pixel has eight sample circular disks.
Despite being one of the most effect ways to draw images, prior art multisampling processes produced some undesirable results. Prior art multisample processes were relatively slow and displayed other problems, such as flickering due to the number of samples not remaining constant. For example, if a image of a light circular disk was being displayed from the perspective of a moving airplane, the location of the light on a monitor moves and if the number of samples are not kept constant the light intensity changes causing the light to flicker. In addition, prior art multisample processes did not analyze samples in a manner that provided the best definition, for example, circular disks were sometimes skewed and not necessarily round. Previous multisampling processes require very large frame buffers to store attributes for all the samples. This is true even for comparatively simple images, such as a circular disk.
Thus, there is a need for a multisample process which is inexpensive to implement, yet highly effective. Optimally, a computer graphics system should provide excellent image quality while minimizing software and hardware requirements. Images should have good definition and should not appear to flicker. The solution should use less memory than prior art multisample processes and operates at a faster rate.