You can add a custom shader to a ColorRect
node for a postprocessing effect. In the case of black n' white, the shader code would look like this.
shader_type canvas_item;
render_mode unshaded;
void fragment() {
COLOR = texture(SCREEN_TEXTURE, SCREEN_UV);
float luminance = dot(COLOR.rgb, vec3(0.3, 0.59, 0.11));
COLOR.rgb = vec3(luminance);
}
To vary the strength of the effect, just change the alpha of the ColorRect
's colour. :)