VSMShadowMap castShadow when receiveShadow enabled

Into file three.module.js (WebGLShadowMap.js) renderer.shadowMap.type = THREE.VSMShadowMap adds castShadow for mesh which have got receiveShadow=true even if mesh castShadow=false. Why is this done?

if ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) )

White plane castShadow=false, receiveShadow=true


When deleted is ok || ( object.receiveShadow && type === VSMShadowMap )

As far as I remember this is how the Variance Shadow Map algorithm works.