This is used internally by PointLights 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.PCFSoftShadowMap; // default v3d.PCFShadowMap
//Create a PointLight and turn on shadows for the light
const light = new v3d.PointLight(0xffffff, 1, 100);
light.position.set(0, 10, 0);
light.castShadow = true; // default false
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
//Create a sphere that cast shadows (but does not receive them)
const sphereGeometry = new v3d.SphereBufferGeometry(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
scene.add(sphere);
//Create a plane that receives shadows (but does not cast them)
const planeGeometry = new v3d.PlaneBufferGeometry(20, 20, 32, 32);
const planeMaterial = new v3d.MeshStandardMaterial({ color: 0x00ff00 })
const plane = new v3d.Mesh(planeGeometry, planeMaterial);
plane.receiveShadow = true;
scene.add(plane);
//Create a helper for the shadow camera (optional)
const helper = new v3d.CameraHelper(light.shadow.camera);
scene.add(helper);
Creates a new PointLightShadow. This is not intended to be called directly - it is called internally by PointLight.
See the base LightShadow class for common properties.
See the base LightShadow class for common methods.
Update the matrices for the camera and shadow, used internally by the renderer.
light -- the light for which the shadow is being rendered.
viewportIndex -- calculates the matrix for this viewport
For more info on how to obtain the source code of this module see this page.