scaledLuminosityHighPassFragmentShader top-level property
Implementation
final ShaderObject scaledLuminosityHighPassFragmentShader =
ShaderObject("ScaledLuminosityHighPassF")
..AddVaryingVars([vTexUV])
..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 = texture(${uTexture}, ${vTexUV});
float luma = RGB2Luma(color.rgb);
float alpha = smoothstep(${uRange}.x, ${uRange}.y, luma);
${oFragColor} = mix(${uColorAlpha}, color, alpha );
}
"""
]);