123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- // samplers
- uniform sampler2D textureSampler; // original color
- // uniforms
- uniform float gain;
- uniform float threshold;
- uniform float screen_width;
- uniform float screen_height;
- // varyings
- varying vec2 vUV;
- // apply luminance filter
- vec4 highlightColor(vec4 color) {
- vec4 highlight = color;
- float luminance = dot(highlight.rgb, vec3(0.2125, 0.7154, 0.0721));
- float lum_threshold;
- if (threshold > 1.0) { lum_threshold = 0.94 + 0.01 * threshold; }
- else { lum_threshold = 0.5 + 0.44 * threshold; }
- luminance = clamp((luminance - lum_threshold) * (1.0 / (1.0 - lum_threshold)), 0.0, 1.0);
- highlight *= luminance * gain;
- highlight.a = 1.0;
- return highlight;
- }
- void main(void)
- {
- vec4 original = texture2D(textureSampler, vUV);
- // quick exit if no highlight computing
- if (gain == -1.0) {
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
- return;
- }
- float w = 2.0 / screen_width;
- float h = 2.0 / screen_height;
- float weight = 1.0;
- // compute blurred color
- vec4 blurred = vec4(0.0, 0.0, 0.0, 0.0);
- #ifdef PENTAGON
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.84*w, 0.43*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.48*w, -1.29*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.61*w, 1.51*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.55*w, -0.74*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.71*w, -0.52*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.94*w, 1.59*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.40*w, -1.87*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.62*w, 1.16*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.09*w, 0.25*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.46*w, -1.71*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.08*w, 2.42*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.85*w, -1.89*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.89*w, 0.16*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.29*w, 1.88*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.40*w, -2.81*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.54*w, 2.26*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.60*w, -0.61*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.31*w, -1.30*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.83*w, 2.53*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.12*w, -2.48*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.60*w, 1.11*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.82*w, 0.99*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.50*w, -2.81*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.85*w, 3.33*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.94*w, -1.92*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.27*w, -0.53*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.95*w, 2.48*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.23*w, -3.04*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.17*w, 2.05*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.97*w, -0.04*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.25*w, -2.00*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.31*w, 3.08*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.94*w, -2.59*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.37*w, 0.64*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.13*w, 1.93*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.03*w, -3.65*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.60*w, 3.17*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.14*w, -1.19*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.00*w, -1.19*h)));
- #else
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.85*w, 0.36*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.52*w, -1.14*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.46*w, 1.42*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.46*w, -0.83*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.79*w, -0.42*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.11*w, 1.62*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.29*w, -2.07*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.69*w, 1.39*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.28*w, 0.12*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.65*w, -1.69*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.08*w, 2.44*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.63*w, -1.90*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.55*w, 0.31*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.13*w, 1.52*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.56*w, -2.61*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.38*w, 2.34*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.64*w, -0.81*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.53*w, -1.21*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.06*w, 2.63*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.00*w, -2.69*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.59*w, 1.32*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.82*w, 0.78*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.57*w, -2.50*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.54*w, 2.93*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.39*w, -1.81*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.01*w, -0.28*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.04*w, 2.25*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.02*w, -3.05*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.09*w, 2.25*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.07*w, -0.25*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.44*w, -1.90*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.52*w, 3.05*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.68*w, -2.61*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.01*w, 0.79*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.76*w, 1.46*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.05*w, -2.94*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.21*w, 2.88*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.84*w, -1.30*h)));
- blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.98*w, -0.96*h)));
- #endif
- blurred /= 39.0;
- gl_FragColor = blurred;
- //if(vUV.x > 0.5) { gl_FragColor.rgb *= 0.0; }
- }
|