getShadowRenderObjectFunction
getShadowRenderObjectFunction
一个内部工厂函数,它根据阴影类型等设置,创建并缓存一个专用的、高性能的函数,用于将物体渲染到阴影贴图中。
核心优势
核心价值在于通过缓存(记忆化)实现性能优化。它封装了渲染物体到阴影贴图的所有复杂逻辑(如处理 VSM 特例或运动速度),并为开发者提供了 onBefore/AfterShadow 钩子以实现深度定制。
常见用途
为标准阴影生成只检查 `castShadow` 的渲染逻辑。
为 VSM 阴影生成同时检查 `castShadow` 和 `receiveShadow` 的特殊逻辑。
当 TAA 启用时,确保物体的运动速度数据在阴影通道中被正确准备。
执行 `onBeforeShadow` 钩子,允许在渲染阴影时临时替换材质以优化性能。
如何调整
该函数无法直接调整,但其行为受场景属性影响。例如,将光源的 `shadow.type` 从 `BasicShadowMap` 改为 `PCFSoftShadowMap`,会使阴影边缘从锐利变为柔和;或通过 `onBeforeShadow` 钩子,可以实现让一个精细的铁丝网模型投下一个简单的、半透明的平面阴影,以换取性能。
代码示例
1// 通过钩子,让精细模型投射一个简化的影子
2myComplexObject.onBeforeShadow = function ( renderer, object, camera ) {
3 // 换上一个简单的材质
4 object.material = mySimpleShadowMaterial;
5};