scaledLuminosityHighPassFragmentShader top-level property

ShaderObject scaledLuminosityHighPassFragmentShader
final

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 );
}
 """
      ]);