Q. Describe the z- Buffer algorithm for hidden surface removal.
Ans. Z- buffer method: This method compares surface depths at each pixel position on the projection plane. The surface depth is measured from the view plane along the z- axis of a viewing system. When object description is converted to projection coordinates (x, y, z) each pixel position on the view plane is specified by x & y coordinate, and z value gives the depth information. Thus object depth can by comparing the z- values. The z- buffer algorithm is usually implemented in the normalized coordinates, so that z- values range from 0 at the back clipping plane to 1 at the front clipping plane. Z- Buffer Algorithm 1. Initialize the depth buffer and refresh buffer so that for all buffer position (x, y), depth (x, y) =0 refresh (x, y) = 1 background. 2. For each position on each polygon surface, compare depth values to previously started values in the depth buffer to determine visibility. (a) Calculate the depth z for each (x,y) position on the polygon. (b) If z> depth (x, y) then set depth (x, y) =z refresh (x, y) = I_{suff }(x, y) Where I background intensity and I_{suff} (x, y) is the projection intensity value for the surface at pixel position (x, y). After all surface have been processed, the depth buffer contains depth values for the visible surface and the refresh buffer contains the corresponding intensity values for those surface. In the figure, among three surface, surface S_{1} has the smallest depth at view position (x, y) and hence highest z value. So it is visible at that position. To calculate the z- value, the plane equation Ax + By + Cz + D = 0 is used where (x, y, z) is any point on the plane, and the coefficient A, B, C and D are contents describing the spatial properties of the plane. Only one subtraction is needed to calculate z (x + 1, y) given z (x, y), since the quotient A/C is constant and ^x = 1. A similar incremental calculation cam be performed to determine the first value of z on the next scan line, decrementing by B/C for each ^y. Drawback of z- buffer (i) It requires an additional buffer and hence the large memory. (ii) It is a time consuming process as it requires comparison for each pixel instead for the entire polygon.