luminance
luminance
计算一个 RGB 颜色的感知正确亮度值,并能自动适应当前项目的色彩空间。
核心优势
它能自动使用项目所配置色彩空间对应的正确亮度系数,无需手动进行复杂的加权平均计算或硬编码,极大地提升了代码的物理准确性和跨色彩空间的可移植性。
常见用途
实现高质量的彩色转灰度效果。
为辉光(Bloom)等后期效果创建亮度遮罩,以提取画面中的高光区域。
在 HSL/HSV 色彩变换中计算亮度(L)分量,用于高级色彩校正。
根据纹理的亮度来驱动其他效果,例如使用亮度控制置换贴图的强度。
如何调整
其输出主要由输入的 `color` 决定。对于高级或艺术化效果,可以提供一个自定义的 `luminanceCoefficients` 向量来覆盖默认行为。例如,传入 `vec3(1, 0, 0)` 将只提取红色通道信息,从而在最终的亮度值上产生一种红色滤镜的效果。
代码示例
1// 为辉光效果创建一个遮罩
2const luma = luminance( viewportTexture( uv ) );
3const bloomMask = step( threshold, luma ); // 提取出比阈值更亮的像素