The Warnock algorithm is a hidden surface algorithm invented by John Warnock that is typically used in the field of computer graphics.[1] It solves the problem of rendering a complicated image by recursive subdivision of a scene until areas are obtained that are trivial to compute. In other words, if the scene is simple enough to compute efficiently then it is rendered; otherwise it is divided into smaller parts which are likewise tested for simplicity.[2]

Polygon visibility in a given viewport: a) polygon fills the viewport, b) polygon partially and c) completely visible, d) polygon invisible.
Four steps of a viewport divisions for a simple scene

This is a divide and conquer algorithm with run-time of [dubiousdiscuss], where n is the number of polygons and p is the number of pixels in the viewport.

The inputs are a list of polygons and a viewport. The best case is that if the list of polygons is simple, then draw the polygons in the viewport. Simple is defined as one polygon (then the polygon or its part is drawn in appropriate part of a viewport) or a viewport that is one pixel in size (then that pixel gets a color of the polygon closest to the observer). The continuous step is to split the viewport into 4 equally sized quadrants and to recursively call the algorithm for each quadrant, with a polygon list modified such that it only contains polygons that are visible in that quadrant.

Warnock expressed his algorithm in words and pictures, rather than software code, as the core of his PhD thesis, which also described protocols for shading oblique surfaces and other features that are now the core of 3-dimensional computer graphics. The entire thesis was only 26 pages from Introduction to Bibliography.

References

edit
  1. ^ Warnock, John (1969). A hidden surface algorithm for computer generated halftone pictures (Thesis). University of Utah. The algorithm was Warnock's doctoral thesis., 32 pages
    Also: http://www.codersnotes.com/notes/warnock-subdivision-for-deferred-lighting/warnock.pdf
  2. ^ Daintith, John; Wright, Edmund (2009). Oxford Dictionary of Computing. Oxford University Press. ISBN 978-0-19-923400-4., 608 pages
edit