    Ray tracing is known for the dramatic way it depicts reflection, refrac-
 tion and lighting effects.  Much of our perception depends on the reflective
 properties of an object.  Ray tracing can exploit this by playing tricks on
 our perception to make us see complex details that aren't really there.

    Suppose you wanted a very bumpy surface on the object.  It would be very
 difficult to mathematically model lots of bumps.  We can however simulate
 the way bumps look by altering the way light reflects off of the surface.
 Reflection calculations depend on a vector called a 'surface normal' vector.
 This is a vector which points away from the surface and is perpendicular to
 it.  By artificially modifying (or perturbing) this normal vector you can
 simulate bumps.

    The 'normal {...}' statement is the part of a texture which defines the
 pattern of normal perturbations to be applied to an object.  Like the pig-
 ment statement, you can omit the surrounding texture block to save typing.
 Do not forget however that there is a texture implied.  For example:
       this...                        can be shortened to this...
          object {                       object {
             My_Object                      My_Object
             texture {                      pigment {
                pigment {                      color Purple
                   color Purple             }
                }                           normal { bumps 0.3 }
                normal { bumps 0.3 }     }
             }
          }

    NOTE: Attaching a normal pattern does not really modify the surface.  It
 only affects the way light reflects or refracts at the surface so that it
 looks bumpy.

    The most complete form for defining a normal is as follows:
       normal {
          NORMAL_IDENTIFIER
          NORMAL_PATTERN_TYPE
          NORMAL_MODIFIERS
          TRANSFORMATIONS...
       }

    Each of the items in a normal are optional but if they are present, they
 should be in the order shown above to insure that the results are as expec-
 ted.  Any items after the NORMAL_IDENTIFIER modify or override settings gi-
 ven in the IDENTIFIER.  If no identifier is specified then the items modify
 the normal values in the current default texture.  TRANSFORMATIONs are tran-
 slate, rotate and scale statements.  They apply only to the normal and not
 to other parts of the texture.  They should be specified last.
