It should also be noted that it may be necessary to
perform brightness corrections, this is equally
straightforward using a textured mesh in OpenGL
without any additional performance penalty. This
intensity correction can be required to compensate for
different path lengths of the light or to reduce the effects
of diffuse reflection on different parts of the display
surface. A further extension is to perform a colour
correction to compensate for projection surface colour
and/or colourisation introduced by various mirror
coatings. These effects can be derived from the
simulation of the physical environment. In practice they
are usually unnecessary and are outside the scope of this
discussion except to point out they are not trivial, for
example, they need to take account of the gamma of the
projection system and are thus dependent on the attributes
of the data projector.