Hi! It works but is slow, can it be speeded up?
I want to blur the background during the pause when the event occurs, it takes 2-3 sec.
main.agc
SetWindowTitle( "Image blur" )
SetWindowSize( 960, 540, 0 )
Global DeviceHeight as float, DeviceWidth as float
DeviceHeight = Round(1136*GetDeviceHeight()/GetDeviceWidth())
DeviceWidth = 1136
SetVirtualResolution( DeviceWidth, DeviceHeight )
SetOrientationAllowed( 0, 0, 1, 1 )
SetSyncRate( 30, 0 ) // 30fps instead of 60 to save battery
UseNewDefaultFonts( 1 ) // since version 2.0.20 we can use nicer default fonts
global blur1,blur2
blur1=LoadspriteShader("blur1.ps" )
blur2=LoadspriteShader("blur2.ps" )
sprite=CreateSprite(LoadImage("img.png"))
SetSpriteSize(sprite,DeviceWidth,DeviceHeight)
do
if GetPointerPressed() = 1
blur(sprite)
endif
Sync()
loop
function blur(id)
SetSpriteSize(id,DeviceWidth,DeviceHeight)
SetSpriteShader(id,blur1)
Render()
img = GetImage(0,0,DeviceWidth,DeviceHeight)
DeleteSprite(id)
sprite = CreateSprite(img)
SetSpriteSize(sprite,DeviceWidth,DeviceHeight)
SetSpriteShader(sprite,blur2)
endfunction
blur1.ps
#ifdef GL_ES
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
#endif
uniform vec2 agk_resolution;
uniform sampler2D texture0;
varying vec2 uvVarying;
vec2 PixelOffsets [ 13 ];
float BlurWeights [ 13 ];
void main()
{
PixelOffsets[ 0 ] = vec2( -6, 0 );
PixelOffsets[ 1 ] = vec2( -5, 0 );
PixelOffsets[ 2 ] = vec2( -4, 0 );
PixelOffsets[ 3 ] = vec2( -3, 0 );
PixelOffsets[ 4 ] = vec2( -2, 0 );
PixelOffsets[ 5 ] = vec2( -1, 0 );
PixelOffsets[ 6 ] = vec2( 0, 0 );
PixelOffsets[ 7 ] = vec2( 1, 0 );
PixelOffsets[ 8 ] = vec2( 2, 0 );
PixelOffsets[ 9 ] = vec2( 3, 0 );
PixelOffsets[ 10 ] = vec2( 4, 0 );
PixelOffsets[ 11 ] = vec2( 5, 0 );
PixelOffsets[ 12 ] = vec2( 6, 0 );
BlurWeights [ 0 ] = 0.002216;
BlurWeights [ 1 ] = 0.008764;
BlurWeights [ 2 ] = 0.026995;
BlurWeights [ 3 ] = 0.064759;
BlurWeights [ 4 ] = 0.120985;
BlurWeights [ 5 ] = 0.176033;
BlurWeights [ 6 ] = 0.200496;
BlurWeights [ 7 ] = 0.176033;
BlurWeights [ 8 ] = 0.120985;
BlurWeights [ 9 ] = 0.064759;
BlurWeights [ 10 ] = 0.026995;
BlurWeights [ 11 ] = 0.008764;
BlurWeights [ 12 ] = 0.002216;
vec2 scale = 2.0 /agk_resolution.xy;
vec4 color = vec4(0,0,0,0);
for (int i = 0; i < 13; i++) {
color += texture2D( texture0, uvVarying + PixelOffsets[i].yx*scale ) * BlurWeights[i];
}
gl_FragColor = color;
}
blur2.ps
#ifdef GL_ES
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
#endif
uniform vec2 agk_resolution;
uniform sampler2D texture0;
varying vec2 uvVarying;
vec2 PixelOffsets [ 13 ];
float BlurWeights [ 13 ];
void main()
{
PixelOffsets[ 0 ] = vec2( -6, 0 );
PixelOffsets[ 1 ] = vec2( -5, 0 );
PixelOffsets[ 2 ] = vec2( -4, 0 );
PixelOffsets[ 3 ] = vec2( -3, 0 );
PixelOffsets[ 4 ] = vec2( -2, 0 );
PixelOffsets[ 5 ] = vec2( -1, 0 );
PixelOffsets[ 6 ] = vec2( 0, 0 );
PixelOffsets[ 7 ] = vec2( 1, 0 );
PixelOffsets[ 8 ] = vec2( 2, 0 );
PixelOffsets[ 9 ] = vec2( 3, 0 );
PixelOffsets[ 10 ] = vec2( 4, 0 );
PixelOffsets[ 11 ] = vec2( 5, 0 );
PixelOffsets[ 12 ] = vec2( 6, 0 );
BlurWeights [ 0 ] = 0.002216;
BlurWeights [ 1 ] = 0.008764;
BlurWeights [ 2 ] = 0.026995;
BlurWeights [ 3 ] = 0.064759;
BlurWeights [ 4 ] = 0.120985;
BlurWeights [ 5 ] = 0.176033;
BlurWeights [ 6 ] = 0.200496;
BlurWeights [ 7 ] = 0.176033;
BlurWeights [ 8 ] = 0.120985;
BlurWeights [ 9 ] = 0.064759;
BlurWeights [ 10 ] = 0.026995;
BlurWeights [ 11 ] = 0.008764;
BlurWeights [ 12 ] = 0.002216;
vec2 scale = 2.0 /agk_resolution.xy;
vec4 color = vec4(0,0,0,0);
for (int i = 0; i < 13; i++) {
color += texture2D( texture0, uvVarying + PixelOffsets[i].yx*scale ) * BlurWeights[i];
}
gl_FragColor = color;
}