private void renderPatch(MeshPatch patch, Rendering rendering, float time) {
    if (patch == null) return ;
    final float alphaVal =
      patch.inceptTime == TIME_DONE ? 1 :
      ((time - patch.inceptTime) / 2f) ;
    if (alphaVal >= 1 && patch.previous != null) {
      patch.previous = null ;
      patch.inceptTime = TIME_DONE ;
    }
    else renderPatch(patch.previous, rendering, time) ;
    
    final Colour colour = Colour.transparency(alphaVal) ;
    for (TerrainMesh mesh : patch.meshes) {
      mesh.colour = colour ;
      mesh.setAnimTime(time) ;
      rendering.addClient(mesh) ;
    }
    if (patch.roadsMesh != null) {
      patch.roadsMesh.colour = colour ;
      rendering.addClient(patch.roadsMesh) ;
    }
    if (patch.dirtMesh != null) {
      patch.dirtMesh.colour = colour ;
      rendering.addClient(patch.dirtMesh) ;
    }
  }