GB2352381A - Processing graphical data - Google Patents
Processing graphical data Download PDFInfo
- Publication number
- GB2352381A GB2352381A GB0006986A GB0006986A GB2352381A GB 2352381 A GB2352381 A GB 2352381A GB 0006986 A GB0006986 A GB 0006986A GB 0006986 A GB0006986 A GB 0006986A GB 2352381 A GB2352381 A GB 2352381A
- Authority
- GB
- United Kingdom
- Prior art keywords
- fragment
- depth value
- opaque
- transparent
- queue
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
Method of processing image data to be displayed having a plurality of pixels comprising: <SL> <LI><B>a.</B> defining a data queue having a predetermined number of locations therein; <LI><B>b.</B> defining the depth value of the most visible opaque primitive to be displayed at the pixel; <LI><B>c.</B> defining the depth value of the most visible transparent primitive to be displayed at the pixel; <LI><B>d.</B> receiving fragment information belonging to an image to be displayed at the pixel, and; <LI><B>e.</B> determining whether it relates to a visible image with respect to the opaque depth value, and discarding it if it does not, otherwise; <LI><B>f.</B> determining if it belongs an opaque image or to a transparent image; <LI><B>g.</B> if opaque: <SL> <LI><B>1.</B> updating the opaque depth value to equal the fragment depth value, <LI><B>2.</B> determining if the fragment information is visible with reference to the transparent depth value; and if so; <LI><B>3.</B> clearing the queue locations and updating the transparent depth values to equal the fragment depth value; </SL> <LI><B>h.</B> if transparent and visible with respect to the transparent depth value, updating the transparent depth value to equal the fragment depth value; <LI><B>i.</B> storing the fragment data in the next available queue location; <LI><B>j.</B> repeating steps <B>d.</B> to <B>i.</B> for new fragment info. until the queue is full, or until no further fragment info. is available; <LI><B>k.</B> sorting the entries in the queue in depth value order; and processing in turn fragment info. stored in the queue locations to produce respective pixel display values. </SL>
Description
2352381 PROCESSING GRAPHICAL DATA The present invention relates to
processing graphical data and in particular to methods and apparatus for calculating pixel data for display on a display device having a plurality of pixels.
BACKGROUND OF THE INVENTION
Graphical images are conventionally displayed on display devices which include a plurality of picture elements, or pixels. one such device is illustrated in Figure 1 of the accompanying drawings. The display device I is made up of a plurality (for example 15 640x480, 800x6OO, to 1600x1200) of pixels (picture elements) 3 which are used to make up the image display on the screen as is well known. In order to display an image on the screen the colour value of each pixel must be calculated for each frame of the image to be 20 displayed. The pixel information is typically stored in a "frame buffer" of the display device. Calculation of pixel colour values is known as "shading" and is advantageously performed by a dedicated graphics processing system. The use of such a dedicated 25 graphics processing system in combination with a host system enables the processing power of the host system to be more effectively utilised processing applications software. The application software typically determines the geometry of the images to be shown on 30 the display device and the graphics system takes geometrical information and calculates the actual pixel values for display on the device I from that information.
Commonly, the graphics processing system receives information from the host application in the form of information data regarding graphical primitives to be displayed. A graphical primitive is a basic graphical element which can be used to make up complex images.
For example, a common graphical primitive is a triangle and a number of different shaped and sized triangles can be used to make up a larger more complex shape.
The primitive data includes information regarding, the extent, colour, texture and other attributes of the primitive. Any amount of primitive information can be used. For example, simply colour and extent information may be sufficient for the application or primitive concerned. Visual depth information, ie the relative position, of the primitive can also be included. In the following examples, primitives having a high visual depth value are considered to be closer the viewer, ie more visible, than those primitives having lower visual depth value. Such a convention is; arbitrary, and could be replaced by any other suitable convention.
Figure 2 illustrates in side view, and Figure 3 illustrates in front view, the display of primitives P1, P2 and P3 on the pixels 3 of the display device 1.
Primitive P1 is the rearmost primitive, having a visual depth Pld which is lower than the visual depths of the other primitives. Primitive P3 is the frontmost primitive. As can be seen, the primitives overlap one another, and so the graphics processing system must calculate, for each pixel, which of the primitives is displayed at that pixel.
In the following examples, three pixels 3a, 3b and 3c will be used illustrate the graphical processing of the primitive data.
In a graphical processing system having a single processor, a primitive analysed so that a pixel covered by the primitive can be identified. A "fragment" of the primitive data is determined for that pixel, and is then processed to determine the colour to be displayed for the pixel. when one fragment has been processed, a further fragment can be identified and processed.
The graphics processor receives fragment information which contains data indicating the colour, texture and blending characteristics of the primitive concerned at a particular pixel.
A "shading" process is then used to process the fragment information in order to determine the actual pixel data which is to be written to the frame buffer:
of the display device for display thereon. The shading process results in the determination of the colour of the pixel from the fragment information. This may involve a texture look-up operation to determine the texture characteristics to be displayed at the pixel.
A texture look-up involves a memory access step to retrieve the texel, or texture element, for the pixel.
For opaque primitives, the colourinformation is supplied to the frame buffer where it overwrites the current value to give a new value for display.
The frame buffer contents can be displayed immediately, or could be displayed at an arbitrary time in the future (for example using multiple frame buffers for the device), and any suitable scheme can be used for the display device concerned.
Figure 4 shows the final frame buffer values for the primitives arrangements shown in Figure 2 and 3. Pixel 3a will display the properties of primitive Pi, pixel 3b will display the properties of primitive P2, and pixel 3c will display the properties of primitive P3.
A development of such a system uses a region-based processing scheme including a plurality of processors.
As illustrated in Figure 1, the pixels 3 of the display device 1 are grouped in to a number of regions, for example region 5. The region size is usually defined by the number of processors in the multiple processor system. One particular processing architecture could is be a single instruction multiple data (SIMD) processing architecture. In a region based architecture, the primitives are sorted to determine which regions of the display include which primitives and are then subjected to "rasterisation" to break the primitives into fragments. The fragment information is stored for each primitive until all of the primitives have been rasterised. Usually, only the most recently determined fragment information is retained for each pixel. A shading process is then used to determine the pixel data to be stored in the frame buffer for display.
Such a scheme has the advantage that the shading process can be used a minimized number of times by shading multiple pixels at the same time (using one processor per pixel) and by waiting until a high proportion of pixels are ready to be shaded. Such a scheme is known as "deferred shading" because the shading process is carried out after the rasterisation process has been completed.
Such a scheme works well when all of the primitives are opaque since deferring the shading operation enables large memory accesses (i.e. texture look-ups) to be deferred and performed in parallel. The result for opaque primitives will be as shown in Figure 4.
A technique which can be used to provide transparent or partly transparent primitives is known as "blending".
In a blending process, the current pixel data stored in the frame buffer is combined with newly calculated pixel data relating to a new primitive. The combination is performed in a manner defined by the blending algorithm in accordance with a so-called a value which indicates the amount of blending that is to be achieved, for example an a-value of 0.5 indicates that the result of the blend is to be half existing colour and half new colour. Blending occurs after the shading process. In the single processor case blending is performed immediately following the shading process for each pixel. The pixel data is blended in the order in which the associates primitives are output from the host system.
Figure 5 illustrates the calculated frame buffer values for the primitives of Figures 2 and 3, where primitives Pi is a transparency, P2 is opaque and P3 is transparent. Pixel 3a displays the background viewed through primitive P1, pixel 3b displays P2, and 3c displays P2 viewed through P3 In the region based architecture, it has not been practical to defer blending with the deferred shading process because of the requirement to store large amounts of data relating to all of the primitives occurring at a pixel regardless of whether those primitives are visible or not. This is necessary because a blended primitive can have an effect on the final values of the pixel. In such a case, the shading and blending processes must be carried out for a pixel as soon as a blended primitive is encountered. This results in low utilisation of a multi-processor design, since, on average, a single blended primitive is likely to cover only a small number of pixels and so the shading and blending processes must be carried out even though only a small number of the available processors have the required data. In addition, if shading and blending were to be performed for each primitive, many operations would be unnecessary due to overlapping primitives at a pixel.
Deferred shading for images including blended primitives has not been implemented for region based multiple processor graphics processing architectures, because of these problems.
It is therefore desirable to provide a graphics processing system which can defer blending and shading operations in order to provide higher performance and faster computation time.
SUMMARY OF THE PRESMqT INVENTION
According to one aspect of the present invention, there is provided a method of processing data representing images to be displayed on a device having a plurality of pixels, the method comprising, for at least one pixel of the device:
a) defining a data queue having a predetermined number of locations therein; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) defining the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receiving fragment information belonging to an image to be displayed by the pixel; e) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to is such a visible image; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:
i) updating the opaque depth value to equal the fragment depth value; ii) determining whether the fragment information is visible with reference to the transparent depth value; and iii) if the fragment is visible with reference to the transparent depth value, clearing the queue locations and updating the transparent depth value to equal the fragment depth value; h) if the fragment relates to a transparent image, and if the fragment is visible with respect to the transparent depth value, updating the transparent depth value to equal the fragment depth value; i) storing the fragment data in the next available queue location; j) repeating steps d) to i) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; k) sorting the entries in the queue in order of depth value; and 1) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
is According to another aspect of the present invention, there is provided a method of processing data representing images to be displayed on a device having a plurality of pixels, the method comprising, for at least one pixel of the device:
a) defining a data queue having a predetermined number of locations therein, and assigning one of the locations for storing only data relating to opaque images; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) defining the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receiving fragment information belonging to an image to be displayed by the pixel; e) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to such a visible image; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:
i) updating the opaque depth value to equal the fragment depth value; ii) determining whether the fragment information is visible with reference to the transparent depth value; iii) if the fragment is visible with reference to the transparent depth value, clearing the queue locations and updating the transparent depth value to equal the fragment depth value; and iv) storing the fragment data in the opaque queue location; h) if the fragment relates to a transparent image:
i) if the fragment is visible with respect to the transparent depth value, updating the transparent depth value to equal the fragment depth value; and ii) storing the fragment data in the next available queue location; i) repeating steps d) to h) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; k) sorting the entries in the queue in order of depth value; and 1) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
According to another aspect of the present invention there is provided a method of processing data representing images to be displayed on a device having a plurality of pixels, the method comprising, for at least one pixel of the device:
a) defining a data queue having a predetermined number of locations therein, and assigning one of the locations for storing only data relating to opaque images; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) receiving fragment information belonging to an image to be displayed by the pixel, the fragment information including fragment depth information; d) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to such a visible image; e) storing the fragment information in the queue at a location corresponding to the fragment depth information; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:
-Il- i) clearing the queue location relating to fragment depths behind the fragment depth; and ii) updating the opaque depth value to equal the fragment depth; h) repeating steps c) to g) until all of the locations if a data queue contain fragment information, or until no further fragment information is available; i) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure I is a schematic diagram illustrating a display device; Figure 2 and Figure 3 are schematic diagrams illustrating graphical primitives and the device of Figure 1; Figures 4 and 5 illustrate calculated frame buffers for non-blended and blended graphics primitives respectively; Figure 6 illustrates a graphics processing system; Figure 7 illustrates part of the system of Figure 6; Figure 8 illustrates a method embodying the present invention; Figures 9 to 12 illustrate one example processing using the method of Figure 8; Figures 13 to 16 illustrate another example processing using the method of Figure 8; Figure 17 illustrates a second method embodying the present invention; Figures 18 to 21 illustrate one example processing using the method of Figure 17; Figure 22 illustrates a third method embodying the present invention.
DESCRIPTION OF THE PREFERRED EMBODIMENT Figure 6 of the accompanying drawings illustrates a graphics processing system including a host system 11 connected to communicate with a graphics processing 10 core 13. The graphics processing core 13 includes processor elements 15 and a controller 17. The processor elements 15 receive graphical primitive information from the host system 11 and control signals from the controller 17. The processor elements 15 is operate to process the graphical primitive data in accordance with instructions from the controller 17 and to output information relating to properties of a respective pixel. Figure 7 illustrates one of the processor elements 15 of Figure 6 in more detail. Th4 20 processor element 15 includes a processor unit 151, and a memory unit 152. The processor unit 151 may, for example, include an arithmetic logic unit and operates to process the data supplied by the host system, and the memory unit 152 is used as a local data storage 25 area by the processor unit 151. A method of processing graphical data embodying one aspect of the present invention will now be described with reference to Figures 6 tO 12. As illustrated in 30 Figure 9 a respective data queue 19a, 19b, 19c is defined for each pixel 3a, 3b, 3c (Figure 2). Each queue has a plurality of locations and acts as a firstin-first-out queue. Each queue is preferably defined within the processor memory unit 152, although could be implemented as a dedicated FIFO buffer or other appropriate device.
Graphical primitive information is received from the host system 11 a single primitive at a time. A rasterisation and sorting process identifies the pixels that are included in the primitive and divides the primitive into fragments, one fragment per pixel. When all of the primitives have been rasterised and sorted, the pixel attribute calculation can begin. Such rasterisation and sorting processes are well known in the art.
Figure 8 shows a flow chart of a first method embodying the present invention. At step A the queue for each pixel is defined, and two depth values are defined. A first depth value, the "opaque depth value (ODV)", indicates the current depth of the most visible opaque fragment at the pixel, and a second value, the "transparent depth value (TDV)" relates to the most visible transparent fragment at a pixel.
Fragment data is received step B, and its depth value is compared with the current ODV. If the fragment is found not to be visible (i.e. it is behind the current opaque depth value, then the data is discarded. If the fragment is visible (i.e. not behind the opaque depth value) then the fragment is tested to see whether it is opaque (step D). If the fragment is opaque, then the opaque depth value (ODV) is updated to equal the fragment depth value. The fragment is then tested to determine whether the fragment is behind the current transparent depth value (step F). If the fragment is not (i.e. it is in front of the TDV) then the queue for that pixel is cleared (step G) and the TDV updated to equal the fragment depth value (step H). Processing then moves to step K in which the fragment data is stored in the next available queue location for the pixel. If the opaque fragment is determined to be behind the transparent depth value, then the queue is not cleared, but the fragment data is stored in the next available queue location.
For non opaque (transparent) fragments determined at step D, the fragment depth value is again tested to determine whether the new fragment is behind the current transparent depth value (step I). If the new depth value is behind the current transparent depth value, then the fragment data is stored in the next available queue location. However, if the new depth value is in front of the transparent depth value, the transparent depth value is updated (step J) before the fragment data is stored in the next available queue location (step K).
The process continues whilst there is more fragment data available (step L). When no further fragment data is available, then the queue contents are sorted into depth order (step M) with any fragment data behind the frontmost opaque value being discarded. When the queue has been sorted into depth order, then the shading an blending of the queue contents (step N) can be undertaken in order of queue location. The first location contents are shaded and blended with the frame buffer contents to produce updated frame buffer contents. The second queue location can then be shaded and blended itself. This shading and blending continues until the queue contents are all shaded.
The method of Figure 8 will now be illustrated using the primitives shown in Figure 2. In Figure 2, the first primitive Pi is a transparent primitive, the second primitive P2 is an opaque primitive, and the third primitive P3 is a transparent primitive. It is assumed in this first example that the primitive data arrives in the order P1, P2 and P3.
The queues and depth values are initialised as shown in Figure 9, and the data relating to PI is received.
Since Pi is in front of the current depth value (0), is not opaque and is in front of the current transparent depth value, the P1 fragment data is entered in the first location of each queue and the transparent depth value for each pixel updated (Figure 10).
Date concerning primitive P2 is then received. Since P2 is opaque, is front of the current opaque depth, and is in front of the current transparent depth, queues 19B and 19C relating to pixels 3B and 3C are cleared and P2 fragment data entered in the first queue location. The opaque depth value and the transparent depth value for each queue is updated in line with P2.
This result is shown in Figure 11.
Data concerning primitive P3 is then received. Since P3 is a transparent primitive which is in front of the current opaque and transparent depth values, its data is entered into the next available location for queue 19C (the second location) and the transparent depth value for that queue is updated appropriately. No change is made to the opaque depth value, since the third primitive P3 is a transparent primitive. The final queue contents and depth values are shown in Figure 12. It will be noted that in this first example, since the primitive information is supplied in the correct depth order, that no sorting of the queue is required.
A second example of the results of the method of Figure 8 will now be explained using the primitives shown in Figure 2. However, in this second example the primitives arrive in the order P2, P1, P3. In this example, Pi is an opaque primitive, and P2 and P3 are transparent primitives. The queues and depth values are once again initialised, and the primitive information relating to P2 is received. Since P2 is the first primitive to be received, its data is loaded is into the first locations of queues 19B and 19C. The transparent depth values for both queues is updated to the second primitive value, but the opaque depth value is not since the primitive P2 is transparent.
Data relating to primitive Pi is then received and for the first queue (19A) is entered in the first location and the opaque and transparent depth values updated appropriately. For the remaining queues 19B and 19C, since Pi is an opaque primitive which has a depth value below the current transparent depth value for those pixels, data relating to P1 is loaded into the next available (second) location in each queue. Depth value for each queue is updated to be in line with the first primitive, but the transparent depth value remains as the P2 value, since P2 is in front of P1.
Data relating to primitive P3 is then received, and for queue 19C the primitive is visible (i.e. in front of the current opaque depth value) and so its data is loaded into the next available queue location (location 3) since it is a transparent primitive. The transparent depth value is updated to the P3 value, but the opaque depth value remains the Pi value. Since there are no further fragments available to be processed, the queues are sorted into depth order, with the lowest depth value primitive occupying the first location in the queue. The results of the sorting process can be seen in Figure 16.
In this way, shading and blending of fragment information can be deferred so that the large texture look-ups and other calculations which are required for shading and blending do not impact on the processing is speed of the rasterisation process. In addition, the shading and blending is deferred until a large number of the processor units 15 are able to take part in the shading operation. This is particularly important in a single instruction multiple data (SIMD) processor architecture in which all processors process the same instruction at the same time.
Another advantage of this method is that when the queues are not filled during rasterisation, the number of shade steps is minimized. Even where a queue is filled, the number of shade steps will probably be less than the number of rasterisation steps.
An alternative method embodying the invention is illustrated in Figure 17. The method of Figure 17 is identical to the method described with reference to Figure 8, with the exception that in the method of Figure 17 a specific location in each queue for each pixel is reserved for storing the most visible opaque primitive information. Thus, step K of Figure 8 is replaced by two steps KI and K2 in Figure 17. For an opaque fragment the opaque location is replaced when that opaque fragment is visible, i.e. when it is in front of the current opaque depth value. If the new opaque fragment is in front of the current transparent depth value, then the queue is cleared, as before, and the transparent depth value updated.
For transparent fragments, the fragment data is stored in the next available queue location, but not in the opaque location. The method of Figure 17 will be illustrated with reference to the primitives of Figure 2, assuming that the primitive Pi is opaque primitive P2 is transparent and primitive P3 is opaque. It will also be assumed that the primitive data is received by the system in the correct order, i.e. P1 followed by P2 followed by P3. Figure 18 shows the initialised queues and depth values, with the first position in each queue reserved for the most visible opaque data. Data relating to primitive P1 is received and since the primitive is opaque, its date is loaded into the opaque location of each queue. The opaque depth value and transparent depth values are updated to relate to this first primitive (Figure 19). Data relating to primitive P2 is received, and since this primitive is transparent the opaque location of each queue remains unchanged, and the P2 primitive data is loaded into the second location of queues 19B and 19C. The opaque depth values are unchanged, but the transparent depth values are updated to relate to the second primitive (Figure 20).
Data for primitive P3, which is an opaque primitive, causes the queue 19C to be cleared and the data for primitive P3 stored in the opaque location of that queue. The opaque depth value and transparent depth value are updated to relate to primitive P3, since primitive P3 is the most visible primitive (Figure 21).
The methods described with reference to Figures 8 and 17 can also be used for alpha tested primitives, i.e.
where the fragment depth value is uncertain, simply by treating all fragments (including opaque) as being transparent. The sort process can then be used to discard those fragments which are not visible.
Figure 22 illustrates a third method embodying the present invention. In step A of Figure 22 the queues are defined for each pixel, together with a single opaque depth value. Fragment data is received at step B, and if that fragment data is behind the current opaque depth value then it is discarded (step C), as before. In this third embodiment, visible data is then entered into the queue for a pixel at a location appropriate to its fragment depth value. If the fragment is opaque (step E) then the queue entries behind the new fragment data (i.e. with a lower depth value) are cleared (step F). The reception of fragment data continues if there are more fragments available (step G). As soon as all of the primitives have been processed, the queue contents are shaded and blended as before.
It will be appreciated that the method in accordance with Figure 22 avoids the need for post-rasterisation sorting since the incoming fragments areeffectively sorted when being loaded into the queue. The queue location is chosen on the basis of the fragment depth value, rather than simply the next available location, as in the other methods. The contents of the final queue for each pixel will contain an opaque primitive data location and a sorted list of transparent primitive data locations.
Claims (18)
- CLAIMS 1. A method of processing data representing images to be displayedon a device having a plurality of pixels, the method comprising, for at least one pixel of the device:a) defining a data queue having a predetermined number of locations therein; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; c) defining the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receiving fragment information belonging to an image to be displayed by the pixel; e) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to such a visible image; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:i) updating the opaque depth value to equal the fragment depth value; ii) determining whether the fragment information is visible with reference to the transparent depth value; and iii) if the fragment is visible with reference to the transparent depth value, clearing the queue locations and updating the transparent depth value to equal the fragment depth value; h) if the fragment relates to a transparent image, and if the fragment is visible with respect to the transparent depth value, updating the transparent depth value to equal the fragment depth value; i) storing the fragment data in the next available queue location; j) repeating steps d) to i) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; k) sorting the entries in the queue in order of depth value; and 1) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 2. A method of processing data representing images to be displayed on a device having a plurality of pixels, the method comprising, for at least one pixel of the device:a) defining a data queue having a predetermined number of locations therein, and assigning one of the locations for storing only data relating to opaque images; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) defining the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receiving fragment information belonging to an image to be displayed by the pixel; e) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to such a visible image; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:i) updating the opaque depth value to equal the fragment depth value; ii) determining whether the fragment information is visible with reference to the transparent depth value; iii) if the fragment is visible with reference to the transparent depth value, clearing the queue locations and updating the transparent depth value to equal the fragment depth value; and iv) storing the fragment data in the opaque queue location; h) if the fragment relates to a transparent image:i) if the fragment is visible with respect to the transparent depth value, updating the transparent depth value to equal the fragment depth value; and ii) storing the fragment data in the next available queue location; i) repeating steps d) to h) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; k) sorting the entries in the queue in order of depth value; and 1) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 3. A method of processing data representing images to be displayed on a device having a plurality of pixels, the method comprising, for at least one pixel of the device:is a) defining a data queue having a predetermined number of locations therein, and assigning one of the locations for storing only data relating to opaque images; b) defining an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) receiving fragment information belonging to an image to be displayed by the pixel, the fragment information including fragment depth information; d) determining whether the fragment information relates to a visible image with respect to the opaque depth value, and discarding the fragment information if it does not relate to such a visible image; e) storing the fragment information in the queue at a location corresponding to the fragment depth information; f) determining whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:i) clearing the queue location relating to fragment depths behind the fragment depth; and ii) updating the opaque depth value to equal the fragment depth; h) repeating steps c) to g) until all of the locations if a data queue contain fragment information, or until no further fragment information is available; i) processing in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 4. A method as claimed in claim 1, 2 or 3, wherein the processing of the fragment information includes a shading step in which pixel data is derived from the fragment information.
- 5. A method as claimed in claim 4, wherein the display includes a frame buffer for storing pixel display data, and wherein the processing of the fragment information includes blending derived pixel data with the frame buffer for fragments belonging to blended images.
- 6. A method as claimed in claim 4, wherein the display includes a frame buffer for storing pixel display data, and wherein the processing of the fragment information includes replacing existing pixel display data stored in the frame buffer.
- 7. A method of processing data substantially as hereinbefore described with reference to the accompanying drawings.
- 8. An apparatus for processing data representing images to be displayed on a device having a plurality of pixels, the apparatus comprising processing means operable, for at least one pixel of the device, to:a) define a data queue having a predetermined number of locations therein; b) define an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) define the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receive fragment information belonging to an image to be displayed by t1le pixel; e) determine whether the fragment information relates to a visible image with respect to the opaque depth value, and discard the fragment information if it does not relate to such a visible image; f) determine whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:i) update the opaque depth value to equal the fragment depth value; ii) determine whether the fragment information is visible with reference to the transparent depth value; and iii) if the fragment is visible with reference to the transparent depth value, clear the queue locations and update the transparent depth value to equal the fragment depth value; h) if the fragment relates to a transparent image, and if the fragment is visible with respect to the transparent depth value, update the transparent depth value to equal the fragment depth value; and i) store the fragment data in the next available queue location, j) the processing means being operable to repeat steps d) to i) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; and k) to sort the entries in the queue in order of depth value; and 1) to process in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 9. An apparatus for processing data representing images to be displayed on a device having a plurality of pixels, the apparatus comprising means operable, for at least one pixel of the device, to:a) define a data queue having a predetermined number of locations therein, and assign one of the locations for storing only data relating to opaque images; b) define an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) define the transparent depth value indicating the depth value of the most visible transparent primitive to be displayed at the pixel; d) receive fragment information belonging to an image to be displayed by the pixel; e) determine whether the fragment information relates to a visible image with respect to the opaque depth value, and discard the fragment information if it does not relate to such a visible image; f) determine whether the fragment information belongs to an opaque image or to a transparent image; g) if the fragment information relates to an opaque image:i) update the opaque depth value to equal the fragment depth value; ii) determine whether the fragment information is visible with reference to the transparent depth value; iii) if the fragment is visible with reference to the transparent depth value, clear the queue locations and update the transparent depth value to equal the fragment depth value; and iv) store the fragment data in the opaque queue location; and h) if the fragment relates to a transparent image:i) if the fragment is visible with respect to the transparent depth value, update the transparent depth value to equal the fragment depth value; and ii) store the fragment data in the next available queue location; i) the processing means being operable to repeat steps d) to h) for new fragment information, until fragment information is stored in all of the locations of a data queue or until no further fragment information is available; and k) to sort the entries in the queue in order of depth value; and 1) to process in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 10. An apparatus for processing data representing images to be displayed on a device having a plurality of pixels, the apparatus comprising processing means operable, for at least one pixel of the device, to a) define a data queue having a predetermined number of locations therein, and assign one of the locations for storing only data relating to opaque images; b) define an opaque depth value indicating the depth value of the most visible opaque primitive to be displayed at the pixel; C) receive fragment information belonging to an image to be displayed by the pixel, the fragment information including fragment depth information; d) determine whether the fragment information relates to a visible image with respect to the opaque depth value, and discard the fragment information if it does not relate to such a visible image; e) store the fragment information in the queue at a location corresponding to the fragment depth information; f) determine whether the fragment information belongs to an opaque image or to a transparent image; and g) if the fragment information relates to an opaque image:i) clear the queue location relating to fragment depths behind the fragment depth; and ii) update the opaque depth value to equal the fragment depth, h) the processing means being operable to repeat steps c) to g) until all of the locations if a data queue contain fragment information, or until no further fragment information is available; and i) to process in turn fragment information stored in the locations of the queue to produce respective pixel display values.
- 11. An apparatus as claimed in claim 8, 9 or 10, wherein the processing of the fragment information includes a shading step in which pixel data is derived from the fragment information.
- 12. An apparatus as claimed in claim 11, wherein the display includes a frame buffer for storing pixel display data, and wherein the processing of the fragment information includes blending derived pixel data with the frame buffer for fragments belonging to blended images.
- 13. An apparatus as claimed in claim 11, wherein the display includes a frame buffer for storing pixel display data, and wherein the processing of the fragment information includes replacing existing pixel display data stored in the frame buffer.
- 14. An apparatus for processing data substantially as hereinbefore described with reference to, and as shown in, the accompanying drawings.
- 15. A data processing system including apparatus as claimed in any one of claims 8 to 14.
- 16. A graphical data processing system including apparatus as claimed in any one of claims 8 to 14.
- 17. A games console including a system as claimed in' claim 15 or 16.
- 18. A set-top receiver including a system as claimed in claim 15 or 16.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0120840A GB2362552B (en) | 1999-06-28 | 2000-03-22 | Processing graphical data |
GB0015678A GB2356717B (en) | 1999-06-28 | 2000-06-27 | Data processing |
GB0015766A GB2356718B (en) | 1999-06-28 | 2000-06-27 | Data processing |
AU55545/00A AU5554500A (en) | 1999-06-28 | 2000-06-28 | Method and apparatus for rendering in parallel a z-buffer with transparency |
US10/019,188 US6898692B1 (en) | 1999-06-28 | 2000-06-28 | Method and apparatus for SIMD processing using multiple queues |
PCT/GB2000/002474 WO2001001352A1 (en) | 1999-06-28 | 2000-06-28 | Method and apparatus for rendering in parallel a z-buffer with transparency |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9915060A GB2355633A (en) | 1999-06-28 | 1999-06-28 | Processing graphical data |
Publications (3)
Publication Number | Publication Date |
---|---|
GB0006986D0 GB0006986D0 (en) | 2000-05-10 |
GB2352381A true GB2352381A (en) | 2001-01-24 |
GB2352381B GB2352381B (en) | 2001-10-24 |
Family
ID=10856182
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB9915060A Withdrawn GB2355633A (en) | 1999-06-28 | 1999-06-28 | Processing graphical data |
GB0006986A Expired - Fee Related GB2352381B (en) | 1999-06-28 | 2000-03-22 | Processing graphical data |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB9915060A Withdrawn GB2355633A (en) | 1999-06-28 | 1999-06-28 | Processing graphical data |
Country Status (1)
Country | Link |
---|---|
GB (2) | GB2355633A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004061776A2 (en) * | 2002-12-24 | 2004-07-22 | Intel Corporation | Z-buffering techniques for graphics rendering |
WO2005015503A2 (en) * | 2003-07-25 | 2005-02-17 | Imagination Technologies Limited | Method and apparatus for rendering translucent and opaque 3d graphics |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923333A (en) * | 1997-01-06 | 1999-07-13 | Hewlett Packard Company | Fast alpha transparency rendering method |
EP0984392A1 (en) * | 1997-05-22 | 2000-03-08 | Sega Enterprises, Ltd. | Image processor and image processing method |
GB2344039A (en) * | 1998-09-10 | 2000-05-24 | Sega Enterprises Kk | Blending processing for overlapping translucent polygons |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487145A (en) * | 1993-07-09 | 1996-01-23 | Taligent, Inc. | Method and apparatus for compositing display items which minimizes locked drawing areas |
GB2343601B (en) * | 1998-11-06 | 2002-11-27 | Videologic Ltd | Shading and texturing 3-dimensional computer generated images |
-
1999
- 1999-06-28 GB GB9915060A patent/GB2355633A/en not_active Withdrawn
-
2000
- 2000-03-22 GB GB0006986A patent/GB2352381B/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923333A (en) * | 1997-01-06 | 1999-07-13 | Hewlett Packard Company | Fast alpha transparency rendering method |
EP0984392A1 (en) * | 1997-05-22 | 2000-03-08 | Sega Enterprises, Ltd. | Image processor and image processing method |
GB2344039A (en) * | 1998-09-10 | 2000-05-24 | Sega Enterprises Kk | Blending processing for overlapping translucent polygons |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004061776A2 (en) * | 2002-12-24 | 2004-07-22 | Intel Corporation | Z-buffering techniques for graphics rendering |
WO2004061776A3 (en) * | 2002-12-24 | 2004-12-02 | Intel Corp | Z-buffering techniques for graphics rendering |
US7268779B2 (en) | 2002-12-24 | 2007-09-11 | Intel Corporation | Z-buffering techniques for graphics rendering |
WO2005015503A2 (en) * | 2003-07-25 | 2005-02-17 | Imagination Technologies Limited | Method and apparatus for rendering translucent and opaque 3d graphics |
WO2005015503A3 (en) * | 2003-07-25 | 2005-04-07 | Imagination Tech Ltd | Method and apparatus for rendering translucent and opaque 3d graphics |
US8446409B2 (en) * | 2003-07-25 | 2013-05-21 | Imagination Technologies Limited | Method and apparatus for rendering computer graphic images of translucent and opaque objects |
Also Published As
Publication number | Publication date |
---|---|
GB2355633A (en) | 2001-04-25 |
GB9915060D0 (en) | 1999-08-25 |
GB2352381B (en) | 2001-10-24 |
GB0006986D0 (en) | 2000-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10957082B2 (en) | Method of and apparatus for processing graphics | |
JP3657518B2 (en) | Graphics processor with deferred shading | |
US6476807B1 (en) | Method and apparatus for performing conservative hidden surface removal in a graphics processor with deferred shading | |
US7042462B2 (en) | Pixel cache, 3D graphics accelerator using the same, and method therefor | |
US6898692B1 (en) | Method and apparatus for SIMD processing using multiple queues | |
US9299187B2 (en) | Opacity testing for processing primitives in a 3D graphics processing system | |
US20080100627A1 (en) | Processing of 3-Dimensional Graphics | |
US20070139421A1 (en) | Methods and systems for performance monitoring in a graphics processing unit | |
US6670955B1 (en) | Method and system for sort independent alpha blending of graphic fragments | |
US6424345B1 (en) | Binsorter triangle insertion optimization | |
US9454844B2 (en) | Early depth testing in graphics processing | |
EP3333805B1 (en) | Removing or identifying overlapping fragments after z-culling | |
US6518971B1 (en) | Graphics processing system with multiple strip breakers | |
US7616202B1 (en) | Compaction of z-only samples | |
US20060033743A1 (en) | Method and apparatus for generating compressed stencil test information | |
JPH09500462A (en) | Computer graphics system with high performance multi-layer z-buffer | |
GB2496394A (en) | Jagged edge aliasing removal using multisample anti-aliasing (MSAA) with reduced data storing for pixel samples wholly within primitives | |
US20030002729A1 (en) | System for processing overlapping data | |
GB2362552A (en) | Processing graphical data | |
GB2352381A (en) | Processing graphical data | |
US6268874B1 (en) | State parser for a multi-stage graphics pipeline | |
US11790479B2 (en) | Primitive assembly and vertex shading of vertex attributes in graphics processing systems | |
US10157132B1 (en) | Data processing systems using both a cache and a buffer for processing data | |
EP1107177A2 (en) | Method and apparatus for processing portions of primitives that are being rendered | |
US7408549B1 (en) | Method for hardware sorted fragment composition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
732E | Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977) | ||
732E | Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977) |
Free format text: REGISTERED BETWEEN 20101111 AND 20101117 |
|
PCNP | Patent ceased through non-payment of renewal fee |
Effective date: 20180322 |