blur
blur
对立方体贴图(环境贴图)进行高质量、方向可控的卷积模糊,主要用于模拟 PBR 材质中不同粗糙度等级的模糊反射。
核心优势
将极其复杂的球面模糊算法(包括处理极点奇点问题)封装成一个健壮、高效且易于集成的节点,是生成 PBR 预过滤环境贴图(PMREM)的关键工具。
常见用途
生成 PBR 预过滤环境贴图(PMREM)以模拟不同粗糙度的反射。
实现实时的“毛玻璃”或模糊反射/折射效果。
在非真实感渲染(NPR)中创造风格化的模糊反射,如动态模糊效果。
如何调整
主要通过调整 `dTheta`(模糊半径)和 `samples`(模糊质量)来控制效果。`dTheta` 越大,模糊范围越广;`samples` 越多,模糊过渡越平滑但性能开销越大。`latitudinal` 参数可以切换模糊方向(水平或垂直)。最经典的用法是将材质的 `roughness` 映射到 `dTheta`,以实现从清晰到模糊的平滑反射过渡。
代码示例
1// 对 envMap 进行模糊,模糊中心为 outputDirection
2// dTheta 控制模糊半径, samples 控制质量
3const blurredColor = blur( envMap, outputDirection, weights, samples, dTheta, mipInt, latitudinal, poleAxis );