displacement tilebump( float frequency = 100 )
{
    float smod = mod( s * frequency, 1 );
    float tmod = mod( t * frequency, 1 );
    float mag;
    
    if( smod < 0.1  ||  tmod < 0.1 )
    {   // grout
        mag = 0;
    }
    else
    {   
        if( tmod < 0.2 )
        {
            mag = 500*pow( tmod-0.1, 3 ) -  
        }        
        else if( smod < 0.2 )
        {
            mag = 500*(    
        }
        else if( tmod > 0.9  ||  tmod > 0.9 )
        {
            
        }
        
        mag = sin( smod );
    }
    
    P += normalize( N ) * mag;
    N = calculatenormal( P );
}