texture_return perlinNoiseTexture( in texture_coordinate_info uvw, in vec3 color1, in vec3 color2, in float size, in bool applyMarble, in bool applyDent
                                 , in float noisePhase, in int noiseLevels, in bool absoluteNoise, in vec3 noiseDistortion
                                 , in float noiseThresholdHigh, in float noiseThresholdLow, in float noiseBands )
{
  float noise = perlinNoise( uvw.position / size, noisePhase, noiseLevels, noiseDistortion, absoluteNoise
                           , applyMarble, applyDent, noiseBands, noiseThresholdLow, noiseThresholdHigh );
  texture_return tr;
  tr.tint = mix( color1, color2, noise );
  tr.mono = average( tr.tint );
  return( tr );
}
