1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- uniform sampler2D samp9;
- out vec4 ocol0;
- in vec2 uv0;
- uniform vec4 resolution;
- void main()
- {
- //variables
- int internalresolution = 1278;
- float4 c0 = texture(samp9, uv0).rgba;
- //blur
- float4 blurtotal = float4(0, 0, 0, 0);
- float blursize = 1.5;
- blurtotal += texture(samp9, uv0 + float2(-blursize, -blursize)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2(-blursize, blursize)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2( blursize, -blursize)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2( blursize, blursize)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2(-blursize, 0)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2( blursize, 0)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2( 0, -blursize)*resolution.zw);
- blurtotal += texture(samp9, uv0 + float2( 0, blursize)*resolution.zw);
- blurtotal *= 0.125;
- c0 = blurtotal;
- //greyscale
- float grey = ((0.3 * c0.r) + (0.4 * c0.g) + (0.3 * c0.b));
- // brighten
- grey = grey * 0.5 + 0.7;
- // darken edges
- float x = uv0.x * resolution.x;
- float y = uv0.y * resolution.y;
- if (x > internalresolution/2) x = internalresolution-x;
- if (y > internalresolution/2) y = internalresolution-y;
- if (x > internalresolution/2*0.95) x = internalresolution/2*0.95;
- if (y > internalresolution/2*0.95) y = internalresolution/2*0.95;
- x = -x+641;
- y = -y+641;
- /*****inline square root routines*****/
- // bit of a performance bottleneck.
- // neccessary to make the darkened area rounded
- // instead of rhombus-shaped.
- float sqrt=x/10;
- while((sqrt*sqrt) < x) sqrt+=0.1;
- x = sqrt;
- sqrt=y/10;
- while((sqrt*sqrt) < y) sqrt+=0.1;
- y = sqrt;
- /*****end of inline square root routines*****/
- x *= 2;
- y *= 2;
- grey -= x/200;
- grey -= y/200;
- // output
- ocol0 = float4(0, grey, 0, 1.0);
- }
|