Noise module that caches the last output value generated by a source module. If an application passes an input value to the GetValue() method that differs from the previously passed-in input value, this noise module instructs the source module to calculate the output value. This value, as well as the ( @a x, @a y, @a z ) coordinates of the input value, are stored (cached) in this noise module. If the application passes an input value to the GetValue() method that is equal to the previously passed-in input value, this noise module returns the cached output value without having the source module recalculate the output value. If an application passes a new source module to the SetSourceModule() method, the cache is invalidated. Caching a noise module is useful if it is used as a source module for multiple noise modules. If a source module is not cached, the source module will redundantly calculate the same output value once for each noise module in which it is included.