1. Field of the Invention
The present invention generally relates to computer image generation for display to a user and, more particularly, to an architecture for a compositing subsystem for rendering images of opaque, translucent, transparent or semi-transparent items or objects which may be overlaid on the same display space, especially where the screen is shared by multiple tasks in a multi-tasking environment.
2. Description of the Prior Art
It has long been recognized that visual displays are much preferred for a communication interface between a data processing device or system and an operator. Visual displays provide the operator with confirmation of input actions as well as appropriate input options and instructions, often in the form of icons and/or menus and to exert control over plural applications which may be run concurrently on the data processing system, such as in a multi-tasking environment.
Visual displays have become fairly sophisticated with various display attributes used to enhance communication with a user. Color icons and animation have been used to enhance visibility and indicate both cursor function and identity (e.g. the input device controlling the cursor) as well as system function. The appearance of the visual display, including various display features which may be provided, is a major factor in the "look and feel" of particular data processing applications. By the same token, the appearance of the display, particularly as it is changed in response to user commands or system function or operation is a major factor in user confidence and satisfaction with both the data processing system and applications run on it.
Utilization of multiple display features by one or more applications also calls for an order to be observed in their presentation (often referred to as "compositing", at the level of display screen image generation) to achieve appropriate rendering of each image portion. For example, in a windowing display environment, an order must be established between displayed, overlapping windows so that data being manipulated in one active window is not obscured by objects associated with another window. Menus, at least in the active window, should not be obscured. Cursors must not be obscured by the data on which they operate but, except for a so-called main cursor, may be covered by windows or menus. Sprites may be used both as cursors and application level objects, such as icons (with or without animation) with corresponding visibility requirements.
Additional complexity in ordering results windows which are often used in multi-tasking environments. Windows, themselves, may be regarded as either opaque or transparent. Further, if graphics applications are run in any window, that window may display many objects in many colors (as well as cursors, menus and other display features) which may overlap (e.g. occult each other in various combinations and orders) and which may also have various degrees of opacity or transparency (e.g. translucency) as well as color, pattern, texture, intensity, animation and other display attributes.
Another complexity derives from the expected behavior of display image features. For example, pop-up features such as help windows or balloons and pull-down menus are generally stationary within a window but are expected to appear and disappear from a window almost instantaneously and without leaving artifacts such as blank spaces or obsolete images (e.g. if the image of an object should have been changed while obscured by another images). Images of graphic objects may be dragged from one location to another or be distorted or changed in size by dragging a handle of a border, corner or some other portion of the object and portions of objects or background which have been obscured should immediately reappear, correctly rendered, when the object no longer occults them. Similarly, images of three-dimensional objects may also be rotated in space so that the projection in the plane of the screen may cause the displayed boundary of the object to change. While users do not generally object to the time required for redrawing a screen when an object is added to or deleted from a screen or window, immediate response is expected during many other user interactions with the data processing system.
Display generation is a computationally intensive process in view of the number of pixels to be controlled at high resolution of color, intensity and hue and the number of objects, display features and screens and interactions therebetween which must be supported. Therefore, display generation is usually very expensive in processing time and image data storage. Therefore, buffering of all objects and display features (even though obscured in the final image) does not provide a viable solution to rapid response time of the display. Such potentially massive storage requirements require significant processing time for management and access.
Further, full generality of rendering expands computation time exponentially with the number of layers of data which must be considered in developing the correct pixel image values for control of the display device since each underlying layer can potentially affect the rendering of all layers above it. That is, the compositing process must support simulation of the effects of overlaying of semi-transparent colored filters so that a display may be formed of opaque or semi-transparent shapes that may appear to float over and under each other without flickering or impairing rendering of graphics beneath them. To date, even modest levels of generality of compositing have required substantial hardware provision or such amounts of image processing time as to place sophisticated image processing within acceptable time constraints beyond the capacity of all but the largest of data processing systems.