common/art.scnassets/techniques/desaturation.fsh

uniform sampler2D colorSampler;
uniform float Saturation;
 
varying vec2 uv;
 
void main() {
    vec4 color = texture2D(colorSampler, uv);
    
    vec4 scaledColor = color * vec4(0.3, 0.59, 0.11, 1.0);
    float luminance = scaledColor.r + scaledColor.g + scaledColor.b ;
    vec4 lerped = mix(vec4(luminance,luminance,luminance,color.a), color, Saturation);
    gl_FragColor = lerped;
}