/
GPUImageSingleComponentGaussianBlurFilter.m
46 lines (34 loc) · 1.56 KB
/
GPUImageSingleComponentGaussianBlurFilter.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#import "GPUImageSingleComponentGaussianBlurFilter.h"
@implementation GPUImageSingleComponentGaussianBlurFilter
NSString *const kGPUImageSingleComponentGaussianBlurFragmentShaderString = SHADER_STRING
(
uniform sampler2D inputImageTexture;
const lowp int GAUSSIAN_SAMPLES = 9;
varying highp vec2 textureCoordinate;
varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];
void main() {
lowp float sum = 0.0;
sum += texture2D(inputImageTexture, blurCoordinates[0]).r * 0.05;
sum += texture2D(inputImageTexture, blurCoordinates[1]).r * 0.09;
sum += texture2D(inputImageTexture, blurCoordinates[2]).r * 0.12;
sum += texture2D(inputImageTexture, blurCoordinates[3]).r * 0.15;
sum += texture2D(inputImageTexture, blurCoordinates[4]).r * 0.18;
sum += texture2D(inputImageTexture, blurCoordinates[5]).r * 0.15;
sum += texture2D(inputImageTexture, blurCoordinates[6]).r * 0.12;
sum += texture2D(inputImageTexture, blurCoordinates[7]).r * 0.09;
sum += texture2D(inputImageTexture, blurCoordinates[8]).r * 0.05;
gl_FragColor = vec4(sum, sum, sum, 1.0);
}
);
- (id)init;
{
if (!(self = [super initWithFirstStageVertexShaderFromString:nil
firstStageFragmentShaderFromString:kGPUImageSingleComponentGaussianBlurFragmentShaderString
secondStageVertexShaderFromString:nil
secondStageFragmentShaderFromString:kGPUImageSingleComponentGaussianBlurFragmentShaderString]))
{
return nil;
}
return self;
}
@end