grayscale
grayscale
将一个颜色值(vec3/vec4)转换为其对应的灰度(亮度)值(float),即去除色彩信息,只保留明暗关系。
核心优势
通过一个简单的函数调用 `grayscale(color)`,替代了手动编写 `dot(color.rgb, vec3(0.299, 0.587, 0.114))` 的复杂、易错且可读性差的亮度计算过程,极大地提升了代码的简洁性和可维护性。
常见用途
制作黑白电影或照片效果。
作为 `mix` 节点的混合因子,实现从彩色到黑白的平滑过渡,动态控制饱和度。
将纹理的亮度信息用作遮罩(Mask),以混合两种不同的纹理或效果。
根据贴图亮度控制自发光强度,例如让城市夜景贴图中的窗户亮起来。
如何调整
该节点本身无参数可调。其效果完全由输入颜色决定。一个常见的调节方式是,使用 `mix` 节点将原始颜色与其灰度版本混合,通过一个 `uniform` 变量(如 `fadeAmount`)来控制混合比例,从而实现从全彩到全灰度的平滑过渡效果。
代码示例
1const finalColor = mix( originalColor, vec3( grayscale( originalColor ) ), desaturationAmount );