public float biomePercentFromPoint(Vector3 pointOnUnitSphere, out float index)
    {
        float heightPercent = (pointOnUnitSphere.y + 1) / 2f;

        heightPercent += (biomeNoiseFilter.SimpleNoiseValueBiome(pointOnUnitSphere) - settings.biomeColorSettings.noiseOffset) * settings.biomeColorSettings.noiseStrengeth;

        float biomeIndex = 0;
        int   numBiomes  = settings.biomeColorSettings.biomes.Length;
        float blendRange = settings.biomeColorSettings.blendAmount / 2f + .001f;

        for (int i = 0; i < numBiomes; i++)
        {
            float dst    = heightPercent - settings.biomeColorSettings.biomes[i].startHeight;
            float weight = Mathf.InverseLerp(-blendRange, blendRange, dst);
            biomeIndex *= (1 - weight);
            biomeIndex += i * weight;
        }
        index = biomeIndex;
        return(biomeIndex / Mathf.Max(1, numBiomes - 1));
    }