Coherence.

Copyright (c) Susan Laflin. August 1999.

In many cases in computer graphics, we use information about the objects depicted to reduce the amount of processing needed. In particular, we may use knowledge about similarities between areas within the scene or between successive frames of a film or video to make large reductions in the number of calculations. Such an approach is known as `coherence' and it occurs in many forms.

object coherence.

If two objects are completely separate, then we may apply global tests when comparing them rather than testing each facet or vertex of each object. This will usually allow us to group a large collection of faces and apply one or two tests to determine information about them all.

face coherence.

Even when the faces are general surfaces and not planes, it is usual for properties of the face to vary smoothly across it, and this should be taken into account when designing computational methods.

edge coherence.

Similar to face coherence. In addition, an edge on one object changes visibility only when it crosses behind a visible edge or intersects a visible face. Having located the points on an edge at which things change, we may then deduce that the visibility is constant at all other points of the edge.

Span or scan-line coherence.

When drawing a picture, scan-line by scan-line, the changes from one line to the next will be small and this can be used to good effect in designing such algorithms. In the same way, the whole area within a facet will be very similar and this information may be used to give efficient algorithms.

frame coherence.

Pictures of the same scene at two successive times (close together) will usually have small changes with much of the scene unchanged. This can be used reduce the amount of data that has to be calculated each time.

Another concept which can be used to reduce the total amount of computation is `spatial subdivision'. If the projection plane is divided into a small number of rectangles, using a fairly large, coarse grid, and each square of the resulting mesh has a list of the objects whose projections intersect it, then we can carry out the hidden surface removal for each mesh in turn. Because the list of objects or facets is so much smaller for any one grid square, the total amount of computation (especially comparisons) will be smaller. Frequently, we shall find that some squares only contain one object, making it unnecessary to do any do any comparisons in this particular square.