Fig 1 from patent,
Source: Image processor, components thereof, and rendering method
For referrence,
Previous Sony Patent, B3D thread on PS3 parralel/tile/brick renderring:
EDIT:
Apparently the B3D thread PS3 parralel/tile/brick renderring: has a broken link to the patent, so here's the direct link to the parralel/tile/brick rendering patent:
and
Previous Sony Patent, B3D thread on PS3 PixelEngine:
Okay, I'm tired... But skimming through this patent, it suggests (but correct me if I'm wrong!) that the renderring processor is a hybrid deffered renderer utilizing a primitive buffer, a z-buffer, a stencil buffer and a frame buffer! 8) And referring to a previous patent suggesting parralel tile/brick renderring, the PS3 may well be a hybrid tile based deffered renderrer! 8) ....
Also interesting to note is that fig1 shows three distinct processors, a CPU, a Geometry processor and a renderring processor! 8) ....
Well, let me know what you guys find...
Abstract
To provide an image processor with which the amount of rendering can be reduced. A plurality of primitives are categorized into a first group of primitives that are to be displayed on a display and a second group of primitives that are not to be displayed thereon, by an XYZ clipping section, a Z testing section, and a stencil testing section, according to the data about the plurality of primitives in a primitive buffer. A two-dimensional image is drawn in a frame buffer using the data for the first group of primitives in the primitive buffer.
......
BACKGROUND OF THE INVENTION
[0002] The present invention relates to an image processing technique for efficient rendering of three-dimensional images on a two-dimensional screen such as a display device.
[0003] Image processing capacities of image processors, such as game consoles or personal computers, that renders images on a display device have significantly been increased with a recent increase in processor speed.
[0004] For example, two-dimensional images that are used to display fine three-dimensional images of high quality on a two-dimensional screen can be produced in almost real time.
[0005] Two-dimensional images are produced with a plurality of primitives such as polygons that make up an image of a virtual object included in a three-dimensional image (hereinafter, referred to as an "object") and an attribute data set describing attributes of the relevant primitive, such as the shape, size, color, and brightness.
[0006] Image processing for rendering three-dimensional images on a two-dimensional screen may generally be classified into geometry processing and rendering. The geometry processing includes coordinate transformation to transform the coordinates of a set of vertices of primitives. The rendering is used to determine, for example, the color of each pixel from the geometry data obtained as a result of the geometry processing to create a two-dimensional image.
[0007] In this specification, a device that mainly performs rendering operations (including a distributed system and a semiconductor device) is referred to as a rendering processing unit. The rendering processing unit forms a portion of an image processor.
[0008] Some rendering processing units can render graphics and images, such as complicated pictures for better visual effects by rendering the same primitives two or more times. The rendering with two or more render passes is referred to as "multipass rendering". A single process in the multipass rendering is referred to as a "pass". For multipass rendering with three render passes, a polygon may be rendered without blending any texture during the first pass, a texture may be added during the second pass, and a different texture may be added during the third pass.
[0009] Conventional rendering processing units perform rendering multiple times for all primitives during the multipass rendering. This increases the number of rendering operations and, in turn, the amount of processing, when graphics or images of a complicated picture is to be rendered, resulting in a larger processing load.
[0010] The present invention is made with respect to the above-mentioned problems and an object thereof is to provide a rendering processing unit and a rendering method with which rendering operations for three-dimensional images can be achieved with less processing.
[0011] Another object of the present invention is to provide an image processor and components thereof that produce an image for better visual effects, without any overhead.
........
SUMMARY OF THE INVENTION
[0012] A rendering processing unit according to the present invention that solves the above-mentioned problems is a rendering processing unit for rendering three-dimensional images on a two-dimensional screen, the three-dimensional images being each made up of a plurality of primitives, comprising a primitive buffer in which a plurality of attribute data sets are written in association with relevant primitives, each attribute data set representing attributes of one of the plurality of primitives; and a tester that compares the plurality of attribute data sets in said primitive buffer with each other to categorize(sort) the plurality of primitives into a first group of primitives that are to be displayed on the two-dimensional screen and a second group of primitives that are not displayed thereon; the rendering processing unit being configured to render the first group of primitives and not to render the second group of primitives that are categorized out by said tester.
[0013] The rendering may be typical single pass rendering to render a given primitive using textures with only one render pass or multipass rendering to render the same primitive multiple times with different textures. At any rate, the primitives that are to be displayed actually on the two-dimensional screen (first group of primitives) are rendered. The throughput is significantly improved as compared with conventional rendering processing units that render all primitives making up of a three-dimensional image.
[0014] The "attribute data set" may be any kind of suitable data as long as the data can be used for determining whether a given primitive appears on the two-dimensional screen. In general, the attribute data sets may be numerical data, such as numerical data about vertices of a primitive (e.g., coordinates of a vertex, brightness of a vertex, or coordinates of a texture), the size, color, or transparency of a primitive. The numerical data about vertices may be, for example, geometry data that are obtained as a result of geometry processing.
[0015] The number of the primitives that are written in said primitive buffer may preferably be at least equal to the number of primitives with which three-dimensional images that are fit on one screen are built on the two-dimensional screen. This allows efficient rendering on screen basis.
[0016] In order to provide more efficient rendering on pixel basis, the rendering processing unit further comprises interpolation means that interpolates pixels according to a known attribute data set for a primitive. The tester categorizes the primitives on pixel basis by adding a new attribute data set obtained as a result of the interpolation of pixels into the attribute data sets to be compared with each other. With such a configuration, the primitive being displayed on the two-dimensional screen is categorized into the first group of primitives even at one pixel.
[0017] For images of higher resolutions, each pixel is divided into a predetermined number of subpixels. The interpolation means is configured to interpolate the subpixels according to a known attribute data set for a primitive when at least one of the subpixels is subjected to rendering. The tester is configured to categorize the primitives on subpixel basis by adding a new attribute data set obtained as a result of the interpolation of subpixels into the attribute data sets to be compared with each other.
[0018] The rendering processing unit may further comprise coverage calculation means that calculates a ratio of the number of subpixels that are covered by a given primitive being rendered to the total number of subpixels that make up a single pixel, and the attribute data set for the subject pixel may be determined based on the result of the calculation by said coverage calculation means. This provides faster anti-aliasing.
[0019] In order to allow for anti-aliasing, said tester may be configured not to categorize pixels on the boundary of primitives when two or more primitives are drawn at the pixel.
[0020] Each attribute data set in said primitive buffer may include position information, such as coordinate values (X, Y, and Z), that represents the position of a relative primitive in the three-dimensional images, and the tester may be configured to compare the position information included in the attribute data sets to categorize the primitives into first and second groups of primitives, the first group of primitives being primitives that are closest to the perspective of a viewer through the two-dimensional screen, the second group of primitives being other primitives than those categorized into the first group of primitives. This configuration eliminates rendering of the primitives that are hidden behind other primitive or primitives.
[0021] Each primitive may be adapted to be overlaid on stencil data comprising allowed regions that are allowed to be displayed on the two-dimensional screen and non-allowed regions that are not allowed to be displayed thereon, the stencil data representing the transparency and the shape of an image or images to be displayed. In this case, the tester categorizes the primitives into first and second groups of primitives, the first group of primitives being primitives at least a portion of which is overlaid on the allowed region or non-allowed region of the stencil data, the second group of primitives being other remaining primitives than those categorized into the first group of primitives.
[0022] From the viewpoint of increasing a rendering speed, the tester is configured to record a flag describing whether a given primitive is in the first group of primitives or in the second group of primitives, in a predetermined visible flags table that is referred to in rendering. The flag is recorded in association with the attribute data set for the given primitive. Such a configuration allows the rendering processing unit to determine whether a given attribute data set is in the first group of primitives or in the second group of primitives only by means of checking the flag in the visible flags table. The flag may be a numerical flag which has different values for each primitive, the value of the flag being updated based on the number of pixels covered by the primitive being displayed on the two-dimensional screen.
[0023] The rendering processing unit may further comprise editing means that is adapted to refer to the flag for the relevant primitive recorded in the visible flags table and to restrict the reading of the attribute data sets out of the primitive buffer for the second group of primitives. From the viewpoint of avoiding more positively the use of the second group of primitives, said editing means is adapted to delete, from said primitive buffer, the attribute data sets for the primitives that are categorized into the second group of primitives.
[0024] An image processor according to the present invention that solves the above-mentioned problems is an image processor comprising a frame buffer whose size is equal to the size of a display area in a two-dimensional screen; a first processor adapted to perform geometry processing of a plurality of primitives that describe a three-dimensional image to produce geometry data about the three-dimensional image; a second processor that renders two-dimensional images corresponding to the three-dimensional images in said frame buffer according to the produced geometry data; and a controller for use in displaying the rendered two-dimensional images in the display area.
[0025] The second processor compares a plurality of attribute data sets with each other to categorize the plurality of primitives into a first group of primitives that are to be displayed on the two-dimensional screen and a second group of primitives that are not displayed thereon and to render in said frame buffer the two-dimensional image that is made up of the first group of primitives other than the second group of primitives. Each attribute data set represents attributes of one of the plurality of primitives that are specified by the geometry data obtained from said first processor.
[0026] In a preferred embodiment, a buffer memory is provided between said first processor and said second processor and the geometry data produced by said first processor are transmitted to said second processor via the buffer memory.
[0027] The image processor may be configured by further comprising an image acceptance mechanism that accepts the three-dimensional images to be processed, from an external device, and supplies them to said first processor.
[0028] A rendering method according to the present invention that solves the above-mentioned other problems is a rendering method performed by a device for rendering three-dimensional images on a two-dimensional screen, the three-dimensional images being each made up of a plurality of primitives, the device having a primitive buffer in which the primitives are written for the formation of images. That is, this device performs a test pass and a rendering pass in this order, in which the test pass is for writing a plurality of attribute data sets in a primitive buffer in association with relevant primitives, each attribute data set representing attributes of one of the plurality of primitives that make up of the three-dimensional images, and for comparing the plurality of written attribute data sets with each other to categorize the plurality of primitives into a first group of primitives that are to be displayed on the two-dimensional screen and a second group of primitives that are not displayed thereon while the rendering pass is for reading the first group of primitives other than the second group of primitives that are categorized out in the test pass, out of the primitive buffer to render the read first group of primitives.
[0029] The rendering pass may be performed two or more times to render different textures two or more times for the same primitive.
[0030] In order to solve the above-mentioned problems, the present invention also provides a semiconductor device and a computer program.
[0031] A semiconductor device of the present invention is a semiconductor device that is mounted on a computer to which a display having a two-dimensional screen is connected, the semiconductor device being adapted to establish the following features on the computer in cooperation with other components of the computer, the features comprising a primitive buffer in which a plurality of attribute data sets are written in association with relevant primitives, each attribute data set representing attributes of one of a plurality of primitives that make up three-dimensional images; a tester that compares the plurality of attribute data sets in the primitive buffer with each other to categorize the plurality of-primitives into a first group of primitives that are to be displayed on the two-dimensional screen and a second group of primitives that are not displayed thereon; and rendering process means for rendering the first group of primitives other than the second group of primitives that are categorized out by the tester to produce a two-dimensional image to be displayed on the two-dimensional screen.
[0032] A computer program of the present invention is a computer program for use in directing a computer to perform the following tasks, the computer being connected to a primitive buffer in which primitives are written for the formation of images, and a display having a two-dimensional screen, the tasks comprising writing a plurality of attribute data sets in the primitive buffer in association with relevant primitives, each attribute data set representing attributes of one of a plurality of primitives that make up three-dimensional images; comparing the plurality of attribute data sets in the primitive buffer with each other to categorize the plurality of primitives into a first group of primitives that are to be displayed on the two-dimensional screen and a second group of primitives that are not displayed thereon; and rendering the first group of primitives other than the second group of primitives that are categorized out to produce a two-dimensional image to be displayed on the two-dimensional screen. This computer program is implemented when it is recorded in a computer-readable storage medium.
........
Source: Image processor, components thereof, and rendering method
For referrence,
Previous Sony Patent, B3D thread on PS3 parralel/tile/brick renderring:
EDIT:
Apparently the B3D thread PS3 parralel/tile/brick renderring: has a broken link to the patent, so here's the direct link to the parralel/tile/brick rendering patent:
and
Previous Sony Patent, B3D thread on PS3 PixelEngine:
Okay, I'm tired... But skimming through this patent, it suggests (but correct me if I'm wrong!) that the renderring processor is a hybrid deffered renderer utilizing a primitive buffer, a z-buffer, a stencil buffer and a frame buffer! 8) And referring to a previous patent suggesting parralel tile/brick renderring, the PS3 may well be a hybrid tile based deffered renderrer! 8) ....
Also interesting to note is that fig1 shows three distinct processors, a CPU, a Geometry processor and a renderring processor! 8) ....
Well, let me know what you guys find...