luminosityHighPassFragmentShader top-level property
Implementation
final ShaderObject luminosityHighPassFragmentShader =
ShaderObject("LuminosityHighPassF")
..AddUniformVars([uRange, uColorAlpha, uTexture])
..SetBody([
"""
// http://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color
float RGB2Luma(vec3 rgb) { return dot(rgb, vec3(0.212, 0.715, 0.072)); }
// float RGB2Luma(vec3 rgb) { return dot(rgb, vec3(0.299, 0.587, 0.114)); }
void main() {
vec4 color = texelFetch(${uTexture}, ivec2(gl_FragCoord.xy), 0);
float luma = RGB2Luma(color.rgb);
float alpha = smoothstep(${uRange}.x, ${uRange}.y, luma);
${oFragColor} = mix(${uColorAlpha}, color, alpha );
}
"""
]);