Accurate Constant-z Scanline Perspective Texture Mapping

Keith H. Randall


[Full text in Postscript, 110KB]


Modern perspective texture mappers scan-convert polygons into horizontal scanlines and then draw each horizontal scanline in turn. Because a horizontal scanline is not uniformly distant in the field of view, its texture coordinates are a nonlinear function of the screen coordinates. Computing this nonlinear function requires an expensive divide operation or a potentially inaccurate approximation such as quadratic or piecewise linear.

A different approach to texture mapping is to use constant-z scanlines, scanlines that traverse a polygon at a fixed depth of field, allowing their texture coordinates to be computed easily and efficiently. In general, such scanlines will not be horizontal but will instead be at some arbitrary angle on the screen. Angled scanlines can only be approximated on a real display, however, because pixels must be addressed by integral coordinates. The resulting approximation leads to an image that appears "wavy".

This paper provides a new algorithm for correcting the texture coordinates of the constant-z scanline to accomodate the fact that it cannot be drawn exactly. Our algorithm computes a first-order approximation to the deviation of the texture coordinates from the constant-z scanline and gives an efficient linear recurrence for computing this deviation incrementally. With this correction, constant-z scanlines produce accurate results and require no expensive operations (multiplies and divides) in the inner loop, making constant-z scanlines practical for accurate perspective texture mapping.