Methods and systems for transparent depth sorting
AssigneeMicrosoft Corporation
InventorJeffrey A. Andrews
Life of this patent
Estimating the term…
Abstract
Methods and systems for transparent depth sorting are described. In accordance with one embodiment, multiple depth buffers are utilized to sort depth data associated with multiple transparent pixels that overlie one another. The sorting of the depth data enables identification of an individual transparent pixel that lies closest to an associated opaque pixel. With the closest individual transparent pixel being identified, the transparency effect of the identified pixel relative to the associated opaque pixel is computed. If additional overlying transparent pixels remain, a next closest transparent pixel relative to the opaque pixel is identified and for the next closest pixel, the transparency effect is computed relative to the transparency effect that was just computed.
Claims44
A method comprising:
- sorting, using multiple depth buffers, depth data associated with multiple transparent pixels that overlie one another to identify an individual pixel that lies closest to an associated opaque pixel;
- computing a transparency effect of the identified pixel relative to the associated opaque pixel;
- and
- after said computing, identifying a next closest transparent pixel relative to the opaque pixel and computing, for the next closest pixel, a transparency effect relative to the transparency effect that was just computed;
- and
- wherein said sorting comprises flipping which of the multiple buffers is considered as a destination buffer and a source buffer.
An apparatus comprising:
- means for sorting, using multiple depth buffers, depth data associated with multiple transparent pixels that overlie one another to identify an individual pixel that lies closest to an associated opaque pixel;
- means for computing a transparency effect of the identified pixel relative to the associated opaque pixel;
- and
- means for identifying a next closest transparent pixel relative to the opaque pixel and computing, for the next closest pixel, a transparency effect relative to the transparency effect that was just computed;
- and
- wherein said means for storing comprises means for flipping which of the multiple buffers is considered as a destination buffer and a source buffer.
A method comprising:
- (a) rendering at least one opaque pixel that lies along a ray;
- (b) identifying a transparent pixel that lies along the ray, the identified transparent pixel being the closest transparent pixel to the opaque pixel;
- (c) computing transparency effects of the identified transparent pixel relative to the opaque pixel;
- (d) if additional transparent pixels lie along the ray, identifying a next closest transparent pixel relative to the opaque pixel and computing transparency effects of the next closest pixel relative to the computed transparency effects of a last computed transparent pixel;
- and
- (e) repeating act (d) until transparency effects of all of the transparent pixels along the ray have been computed in a back-to-front manner;
- (f) wherein acts (a)–(e) are performed utilizing two physical depth buffers for sorting depth data associated with the transparent pixels, and wherein the two depth buffers are configured to be flipped.
A system comprising:
- means for rendering at least one opaque pixel that lies along a ray;
- means for identifying a transparent pixel that lies along the ray, the identified transparent pixel being the closest transparent pixel to the opaque pixel;
- means for computing transparency effects of the identified transparent pixel relative to the opaque pixel;
- and
- means for identifying, in a back-to-front manner, additional transparent pixels and successively computing transparency effects for the additional transparent pixels, wherein said means for identifying comprises a pair of physical depth buffers that can be logically flipped.
A system comprising:
- a transparent depth sorting component comprising:
- at least two physical depth buffers;
- a writeback counter to count writebacks that occur to at least one of the two physical depth buffers;
- and
- comparison logic that is configured to effect:
- sorting, using said at least two physical buffers, of depth data associated with multiple transparent pixels that overlie one another to identify an individual pixel that lies closest to an associated opaque pixel;
- computing a transparency effect of the identified pixel relative to the associated opaque pixel;
- after said computing, identifying a next closest transparent pixel relative to the opaque pixel;
- and
- computing, for the next closest pixel, a transparency effect relative to the transparency effect that was computed for the said closest individual pixel and the associated opaque pixel.
A method comprising:
- mapping a first of two depth buffers as a destination buffer that is readable and writable, a second of the two depth buffers being designated as a source buffer that is only readable;
- rendering one or more opaque objects having associated opaque pixels;
- writing a depth value associated with an opaque pixel to the first buffer;
- mapping the second of the depth buffers as the destination buffer, the first of the depth buffers being designated as the source buffer;
- initializing the destination buffer to a predetermined value;
- effecting a comparison of a new pixel depth value with values in the source and destination buffers and writing the new pixel depth value to the destination buffer if the new pixel depth value is (a) greater than the value currently in the destination buffer and (b) less than the value in the source buffer, effective to write a new pixel depth value that is associated with a pixel that is closest to a pixel whose depth value is contained in the source buffer;
- rendering one or more transparent objects having associated transparent pixels;
- determining if transparency effects for all transparent pixels in all transparent objects have been accounted for and if so, terminating processing and, if not:
- mapping the first of the depth buffers as the destination buffer, the second of the buffers being designated as the source buffer;
- effecting a comparison of The new pixel depth value with values in the source and destination buffers and writing to a frame buffer and the destination buffer if the new pixel depth value is equal to the value in the source buffer and the new pixel depth value is less than the value in the destination buffer;
- rendering one or more transparent objects;
- and
- returning to said act of mapping the second of the depth buffers until transparency effects of all transparent pixels in all the transparent objects have been accounted for.
A system comprising:
- a processor;
- at least two depth buffers;
- a frame buffer;
- and
- a graphics subsystem operably connected with the processor and configured to, under the influence of the processor:
- map a first of the depth buffers as a destination buffer that is readable and writable, a second of the depth buffers being designated as a source buffer that is only readable;
- render one or mare opaque objects baying associated opaque pixels;
- write a depth value associated with an opaque pixel to the first buffer;
- map the second of the depth buffers as the destination buffer, the first of the depth buffers being designated as the source buffer;
- initialize the destination buffer to a predetermined value;
- effect a comparison of a new pixel depth value with values in the source and destination buffers and write the new pixel depth value to the destination buffer if the new pixel depth value is (a) greater than the value currently in the destination buffer and (b) less than the value in the source buffer, effective to write a new pixel depth value that is associated with a pixel that is closest to a pixel whose depth value is contained in the source buffer;
- render one or mare transparent objects having associated transparent pixels;
- determine if transparency effects for all transparent pixels in all the transparent objects have been accounted for and if so, terminate processing and, if not:
- map the first of the depth buffers as the destination buffer, the second of the buffers being designated as the source buffer;
- effect a comparison of the new pixel depth value with values in the source and destination buffers and write to the frame buffer and the destination buffer if the new pixel depth value is equal to the value in the source buffer and the new pixel depth value is less than the value in the destination buffer;
- render one or more transparent objects;
- and
- return to said mapping the second of the depth buffers until transparency effects of all transparent pixels in all the transparent objects have been accounted for.
Dependencies are inferred from the claim text.