private Vector3[] GenerateVertices()
    {
        int          smoothingPasses = (noise.overtones * smoothings) + 1;
        HeightMap    map             = new HeightMap(SmoothFilter.ComputeStartSize(size + smoothingPasses, smoothingPasses));
        SmoothFilter smooth          = new SmoothFilter();

        noise.ClearOvertoneFilters();
        for (int i = 0; i != smoothings; ++i)
        {
            noise.AddOvertoneFilter(smooth);
        }
        map = smooth.Filter(weathering.Filter(typeFilter.Filter(noise.Filter(map))));
        int dif    = map.Size - size;
        int offset = dif >> 1;

        Vector3[] vertices = map.ToVertices(offset, offset, size);
        ClampToOrigin(vertices);
        return(vertices);
    }