O material Three.js DoubleSided não lança sombra em ambos os lados da geometria paramétrica planar

Veja este jfiddle:http://jsfiddle.net/blwoodley/5Tr4D/1/

Eu tenho uma luz azul que brilha em um quadrado giratório rotativo. Isso lança uma sombra no solo subjacente. Exceto que apenas lança uma sombra em um lado do quadrado.

Eu vi esta discussão:https://github.com/mrdoob/three.js/issues/3544 o que indica que o abate de faces em superfícies planas é a causa. a recomendação é dar profundidade ao meu quadrado, ou seja, torná-lo um cubo.

Eu posso fazer isso com este exemplo simples, mas estou encontrando o mesmo problema com uma geometria paramétrica que é uma superfície. Existe uma maneira de fazer os dois lados lançarem uma sombra sem ter que dar profundidade à minha geometria?

Aqui está a principal função do violino que replica o problema com um plano:

function init() {

container = document.createElement('div');
document.body.appendChild(container);

camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 100000);
camera.position.x = 100;
camera.position.y = 100;
camera.position.z = 100;
camera.lookAt({x: 0,y: 0,z: 0});

scene = new THREE.Scene();

var groundMaterial = new THREE.MeshLambertMaterial({
    color: 0xffffff, side:THREE.DoubleSide 
});
plane = new THREE.Mesh(new THREE.PlaneGeometry(2000,2000,10,10), groundMaterial);
plane.rotation.x = Math.PI / 2;
plane.position.y = -40;
plane.receiveShadow = true;

scene.add(plane);

var light;

light = new THREE.SpotLight(0x0000ff);
light.position.set(40, 40, 0);
light.castShadow = true;
light.shadowCameraVisible = true;
light.shadowMapWidth = 2048;
light.shadowMapHeight = 2048;
light.position.set(24, 20, 0);
light.lookAt(plane);    
light.castShadow = true;
light.angle = .8;
light.intensity = 30;
light.distance=0;
light.shadowCameraNear = 2;
light.shadowCameraFar = 100;
light.shadowCameraFov = 100;
light.shadowDarkness = 1;
light.shadowCameraVisible = true;
scene.add(light);

var planeGeo = new THREE.PlaneGeometry(20,20,20,20)
_planeMesh = new THREE.Mesh(planeGeo, new THREE.MeshLambertMaterial( { color: 0x00ff00, side:THREE.DoubleSide } ) );
_planeMesh.castShadow = true;
scene.add( _planeMesh );


// RENDERER
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
webglRenderer.domElement.style.position = "relative";
webglRenderer.shadowMapEnabled = true;
webglRenderer.shadowMapSoft = true;

container.appendChild(webglRenderer.domElement);
window.addEventListener('resize', onWindowResize, false);

}

questionAnswers(1)

yourAnswerToTheQuestion