city,
					transparent: true,
					depthWrite: false,
				} );
				fillPlane = new THREE.Mesh( planeGeometry, fillPlaneMaterial );
				fillPlane.rotateX( Math.PI );
				shadowGroup.add( fillPlane );

				// the camera to render the depth material from
				shadowCamera = new THREE.OrthographicCamera( - PLANE_WIDTH / 2, PLANE_WIDTH / 2, PLANE_HEIGHT / 2, - PLANE_HEIGHT / 2, 0, CAMERA_HEIGHT );
				shadowCamera.rotation.x = Math.PI / 2; // get the camera to look up
				shadowGroup.add( shadowCamera );

				cam