This is used internally by SpotLights for calculating shadows.
    // create a WebGLRenderer and turn on shadows in the renderer
    const renderer = new v3d.WebGLRenderer();
    renderer.shadowMap.enabled = true;
    renderer.shadowMap.type = v3d.PCFShadowMap; // default
    // create a SpotLight and turn on shadows for the light
    const light = new v3d.SpotLight(0xffffff);
    light.castShadow = true; // default false
    app.scene.add(light);
    // set up shadow properties for the light
    light.shadow.mapSize.width = 512; // default
    light.shadow.mapSize.height = 512; // default
    light.shadow.camera.near = 0.5; // default
    light.shadow.camera.far = 500; // default
    light.shadow.focus = 1; // default
    // create a sphere that cast shadows (but does not receive them)
    const sphereGeometry = new v3d.SphereGeometry(5, 32, 32);
    const sphereMaterial = new v3d.MeshStandardMaterial({ color: 0xff0000 });
    const sphere = new v3d.Mesh(sphereGeometry, sphereMaterial);
    sphere.castShadow = true; // default is false
    sphere.receiveShadow = false; //default
    app.scene.add(sphere);
    // create a plane that receives shadows (but does not cast them)
    const planeGeometry = new v3d.PlaneGeometry(20, 20, 32, 32);
    const planeMaterial = new v3d.MeshStandardMaterial({ color: 0x00ff00 })
    const plane = new v3d.Mesh(planeGeometry, planeMaterial);
    plane.receiveShadow = true;
    app.scene.add(plane);
    // create a helper for the shadow camera (optional)
    const helper = new v3d.CameraHelper(light.shadow.camera);
    app.scene.add(helper);
    
    The constructor creates a PerspectiveCamera to manage the shadow's view of the world.
See the base LightShadow class for common properties.
The light's view of the world. This is used to generate a depth map of the scene; objects behind other objects from the light's perspective will be in shadow.
      The default is a PerspectiveCamera with near clipping plane at 0.5. The fov will track the angle property of the owning SpotLight via the update method. Similarly, the aspect property will track the aspect of the mapSize. If the distance property of the light is set, the far clipping plane will track that, otherwise it defaults to 500.
    
      Makes the shadow's camera vertical field of view 90 degrees even for spot lights with a cone more narrow than that.
      Default is false.
    
      Used to focus the shadow camera. The camera's field of view is set as a percentage of the spotlight's field-of-view. Range is [0, 1]. Default is 1.0.
    
Read-only flag to check if a given object is of type SpotLightShadow.
See the base LightShadow class for common methods.
The set shadow param puzzle allows to enable/disable casting or receiving shadows in a visual manner.
For more info on how to obtain the source code of this module see this page.