directPointLight
directPointLight
计算在特定着色点上,单个点光源的光线方向和经过物理衰减后的光线颜色。
核心优势
将复杂的点光源物理衰减公式(涉及距离计算、平方反比定律等)封装成一个节点,使代码更清晰、可读,并确保与 Three.js 内置材质的光照行为保持一致。
常见用途
为自定义光照模型(如 Phong)提供光线方向和入射光颜色。
在卡通渲染中,根据光照强度确定亮度阶梯。
创建灯光调试材质,直接可视化灯光的衰减范围和强度。
用作混合因子,根据光照强度混合不同的纹理或颜色。
如何调整
通过调整其输入参数来改变效果。改变 `color` 相当于更换灯泡颜色和功率;减小 `cutoffDistance` 会硬性切断光照范围;将 `decayExponent` 从 1(线性衰减)调整为 2(物理衰减)会让光照的亮度渐变更加真实。
代码示例
1// 计算点光源在当前着色点的光照信息
2const lightInfo = directPointLight(
3 light.color, // 光源颜色与强度
4 light.position.sub( positionWorld ), // 从着色点指向光源的向量
5 light.distance, // 光照截止距离
6 light.decay // 衰减指数
7);