private void init(int nbSplits, int shadowMapSize) {
        nbShadowMaps = Math.max(Math.min(nbSplits, 4), 1);
        if (nbShadowMaps != nbSplits) {
            throw new IllegalArgumentException("Number of splits must be between 1 and 4. Given value : " + nbSplits);
        }
        splits = new ColorRGBA();
        splitsArray = new float[nbSplits + 1];
        shadowCam = new Camera(shadowMapSize, shadowMapSize);
        shadowCam.setParallelProjection(true);
        for (int i = 0; i < points.length; i++) {
            points[i] = new Vector3f();
        }
    }
Creates a DirectionalLight shadow renderer. More info on the technique at <a
href="https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch10.html">https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch10.html</a>

@param assetManager the application's asset manager
@param shadowMapSize the size of the rendered shadowmaps (512, 1024, 2048,
    etcetera)
@param nbSplits the number of shadow maps rendered (More shadow maps yield
    better quality, fewer fps.)
jme3-core/src/main/java/com/jme3/shadow/DirectionalLightShadowRenderer.java