public static void updateFrustumSplits(float[] splits, float near, float far, float lambda) {
        for (int i = 0; i < splits.length; i++) {
            float IDM = i / (float) splits.length;
            float log = near * FastMath.pow((far / near), IDM);
            float uniform = near + (far - near) * IDM;
            splits[i] = log * lambda + uniform * (1.0f - lambda);
        }

        // This is used to improve the correctness of the calculations. The near and far planes
        // of the camera always stay the same, no matter what happens.
        splits[0] = near;
        splits[splits.length - 1] = far;
    }
Updates the frustum splits stores in <code>splits</code> using PSSM.

@param splits the array of splits (modified)
@param near the distance to the camera's near plane
@param far the distance to the camera's far plane
@param lambda the mixing parameter (0&rarr;purely linear,
1&rarr;purely logarithmic)
jme3-core/src/main/java/com/jme3/shadow/PssmShadowUtil.java