static void PermutePlanet(Material mat, ref PlanetColorData planetColorData)
    {
        mat.SetColor("_Color", planetColorData.baseColor);
        mat.SetColor("_BaseLayerColor", planetColorData.baseLayerColor);
        mat.SetColor("_Add0LayerColor", planetColorData.addLayerColor);
        mat.SetColor("_AtmosphereColor", planetColorData.atmosphereColor);

        PermutePram(mat, "_Scale", scalePercentVariance);
        PermutePram(mat, "_Squish", squishPercentVariance);
        PermutePram(mat, "_Density", densityPercentVariance);
        PermutePram(mat, "_DistortionScale", distortionScalePercentVariance);
        PermutePram(mat, "_Distortion", distortionPercentVariance);
        PermutePram(mat, "_AtmosphereInflate", atmoSizePercentVariance);
        PermutePram(mat, "_AtmosphereFalloff", atmoFalloffPercentVariance);
    }
    void RandomizePlanet()
    {
        planetMat.SetVector("_RandomOffsets", GetRandomOffset());

        // calculate random rotation
        float xAngle = 0;        // Random.value * maxPlanetAngleFromBottom;
        float yAngle = Random.value * 360f;

        planetAnchor.rotation = Quaternion.Euler(xAngle, yAngle, 0);
        float planetScale = GetVariedValue(1f, overallSizePercentVariance);

        planetAnchor.localScale = new Vector3(planetScale, 1, planetScale);

        PlanetColorData colorData = planetDatas[Random.Range(0, planetDatas.Length)];

        PermutePlanet(planetMat, ref colorData);
    }