一次渲染阴影

时间:2015-07-07 17:48:27

标签: 3d three.js renderer shadows

考虑到阴影投射的成本,我想知道是否有一个特征或可能/实验方法在three.js中渲染一个阴影贴图(即使在webgl中),对于动态定位的静态对象(例如:程序)市)。因此,结果可以在静态对象的下一帧中使用,而不需要任何费用。阴影渲染只有在某些东西移动时才会完成。

1 个答案:

答案 0 :(得分:3)

修改

mrdoobs批准:

renderer.shadowMap.autoUpdate = false;
renderer.shadowMap.needsUpdate = true; // when scene changes

原始答案:

我找到了自己的方式:我复制了verticesNeedUpdate的工作方式。我在WebGLRenderer中添加了shadowMapNeedsUpdate = true参数。在ShadowMapPlugin的渲染函数中,我检查此参数是否为真,并在以下情况下将其设置为false:

if( _renderer.shadowMapEnabled===false || _renderer.shadowMapNeedsUpdate===false ) return;

_renderer.shadowMapNeedsUpdate = false

这样,阴影贴图在第一次渲染时渲染一次,如果场景需要实时阴影贴图,则必须在渲染循环中对其进行精确处理。否则计算能力被释放