constructor( data ) {

		data = data || {};

		/**
		 * The zNear value. This value depends on whether the CSM
		 * is used with WebGL or WebGPU. Both API use different
		 * conventions for their projection matrices.
		 *
		 * @type {number}
		 */
		this.zNear = data.webGL === true ? - 1 : 0;

		/**
		 * An object representing the vertices of the near and
		 * far plane in view space.
		 *
		 * @type {Object}
		 */
		this.vertices = {
			near: [
				new Vector3(),
				new Vector3(),
				new Vector3(),
				new Vector3()
			],
			far: [
				new Vector3(),
				new Vector3(),
				new Vector3(),
				new Vector3()
			]
		};

		if ( data.projectionMatrix !== undefined ) {

			this.setFromProjectionMatrix( data.projectionMatrix, data.maxFar || 10000 );

		}

	}
Constructs a new CSM frustum.

@param {CSMFrustum~Data} [data] - The CSM data.