Patent ID: 7688319

Claim:
A method for rendering a three-dimensional model which includes a plurality of semi-transparent surfaces, the method comprising: initializing an iteration variable N to 1; rendering the plurality of semi-transparent surfaces the three-dimensional model by performing the following operations iteratively for two or more of the plurality of semi-transparent surfaces in draw-order, wherein the draw-order is contrary to a depth-order for at least a portion of the plurality of semi-transparent surfaces and wherein N corresponds to the draw-order: initializing a Z-buffer, wherein said initializing sets all depth values in the Z-buffer to a default depth value that ensures that depth values stored to the Z-buffer are of a known finite range; rendering the Nth semi-transparent surface according to the draw-order to the Z-buffer, wherein said rendering the Nth semi-transparent surface to the Z-buffer stores depth values for the Nth semi-transparent surface to the Z-buffer, calculating a cumulative transparency value for each pixel of the semi-transparent surface as a function of the transparency value for each surface of the three-dimensional model that intersects the pixel and that is in front of the pixel according to the depth value for the pixel in the Z-buffer, attenuating a surface color value for each pixel the semi-transparent surface by the cumulative transparency value for the respective pixel, adding the attenuated surface color value for each pixel of the semi-transparent surface to a corresponding pixel value in an image buffer, and incrementing N by 1; wherein, during each iteration, depth values for only the Nth semi-transparent surface according to the draw-order are stored in the Z-buffer.