Skip to content

Commit 3d34102

Browse files
committed
Merge pull request #976 from osinoleg/develop
Fixed dropshadow / Added distance field outline effect / headless compilation fixes
2 parents 4964238 + d2e769b commit 3d34102

21 files changed

+1233
-307
lines changed

Resources/Images/df_sprite.png

24.4 KB
Loading

Resources/Images/output.png

15.6 KB
Loading

cocos2d-ios.xcodeproj/project.pbxproj

Lines changed: 44 additions & 24 deletions
Large diffs are not rendered by default.

cocos2d-tests-android/Headless.xcodeproj/project.pbxproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
5B0ED736196E54BD00F9868F /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED735196E54BD00F9868F /* Sounds */; };
7474
5B0ED738196E550000F9868F /* Particles in Resources */ = {isa = PBXBuildFile; fileRef = 5B0ED737196E550000F9868F /* Particles */; };
7575
5B165F63195CE564002338B1 /* CCBMFontTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F49195CE564002338B1 /* CCBMFontTest.m */; };
76-
5B165F64195CE564002338B1 /* CCEffectPongTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4A195CE564002338B1 /* CCEffectPongTest.m */; };
7776
5B165F65195CE564002338B1 /* CCEffectsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4B195CE564002338B1 /* CCEffectsTest.m */; };
7877
5B165F66195CE564002338B1 /* CCLabelTTFTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */; };
7978
5B165F67195CE564002338B1 /* CCLayoutTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B165F4D195CE564002338B1 /* CCLayoutTest.m */; };
@@ -243,7 +242,6 @@
243242
5B165F43195CE3F0002338B1 /* SimpleScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleScene.h; sourceTree = "<group>"; };
244243
5B165F44195CE3F0002338B1 /* SimpleScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleScene.m; sourceTree = "<group>"; };
245244
5B165F49195CE564002338B1 /* CCBMFontTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCBMFontTest.m; sourceTree = "<group>"; };
246-
5B165F4A195CE564002338B1 /* CCEffectPongTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectPongTest.m; sourceTree = "<group>"; };
247245
5B165F4B195CE564002338B1 /* CCEffectsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectsTest.m; sourceTree = "<group>"; };
248246
5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLabelTTFTest.m; sourceTree = "<group>"; };
249247
5B165F4D195CE564002338B1 /* CCLayoutTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCLayoutTest.m; sourceTree = "<group>"; };
@@ -418,7 +416,6 @@
418416
isa = PBXGroup;
419417
children = (
420418
5B165F49195CE564002338B1 /* CCBMFontTest.m */,
421-
5B165F4A195CE564002338B1 /* CCEffectPongTest.m */,
422419
5B165F4B195CE564002338B1 /* CCEffectsTest.m */,
423420
5B165F4C195CE564002338B1 /* CCLabelTTFTest.m */,
424421
5B165F4D195CE564002338B1 /* CCLayoutTest.m */,
@@ -832,7 +829,6 @@
832829
5B165F73195CE564002338B1 /* ColorPickerTest.m in Sources */,
833830
D242C50E1958D78700E7726D /* MainMenu.m in Sources */,
834831
5B165F72195CE564002338B1 /* CCTransitionTest.m in Sources */,
835-
5B165F64195CE564002338B1 /* CCEffectPongTest.m in Sources */,
836832
5B165F7A195CE564002338B1 /* TextureTest.m in Sources */,
837833
5B165F76195CE564002338B1 /* ParallaxTest.m in Sources */,
838834
5B165F71195CE564002338B1 /* CCTextureCacheTest.m in Sources */,

cocos2d-tests-android/Headless/tests/CCEffectPongTest.m

Lines changed: 0 additions & 1 deletion
This file was deleted.

cocos2d-ui-tests/tests/CCEffectsTest.m

Lines changed: 174 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
#import "CCEffectStack_Private.h"
99

1010
@interface CCEffectsTest : TestBase @end
11-
@implementation CCEffectsTest
11+
@implementation CCEffectsTest {
12+
#if CC_EFFECTS_EXPERIMENTAL
13+
CCEffectDistanceField* _distanceFieldEffect;
14+
CCEffectDFOutline* _outlineEffect;
15+
#endif
16+
}
1217

1318
-(id)init
1419
{
@@ -20,29 +25,183 @@ -(id)init
2025
return self;
2126
}
2227

23-
-(void)setupOuterGlowEffectTest
28+
#pragma mark Distance Fields
29+
30+
#if CC_EFFECTS_EXPERIMENTAL
31+
32+
-(void)setupDFOutlineEffectTest
2433
{
25-
self.subTitle = @"OuterGlow Effect Test";
34+
self.subTitle = @"Distance Field Outline Test";
2635

27-
// CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
2836
CCSprite *environment = [CCSprite spriteWithImageNamed:@"Images/MountainPanorama.jpg"];
2937
environment.positionType = CCPositionTypeNormalized;
3038
environment.anchorPoint = ccp(0.5, 0.5);
3139
environment.position = ccp(0.5f, 0.5f);
3240

33-
[self.contentNode addChild:environment];
41+
CCTexture* texture = [[CCTextureCache sharedTextureCache] addImage:@"Images/output.png"];
42+
43+
CCColor* fillColor = [CCColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];
44+
_outlineEffect = [CCEffectDFOutline effectWithOutlineColor:[CCColor redColor] fillColor:fillColor outlineWidth:3 fieldScale:32 distanceField:texture];
45+
46+
CCSprite *dfSprite = [CCSprite spriteWithImageNamed:@"Images/df_sprite.png"];
47+
dfSprite.position = ccp(0.5, 0.5);
48+
dfSprite.positionType = CCPositionTypeNormalized;
49+
dfSprite.effect = _outlineEffect;
50+
dfSprite.scale = 1.0f;
3451

35-
CCColor *glowColor = [CCColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.5];
36-
CCEffectOuterGlow* effect = [CCEffectOuterGlow effectWithGlowColor:glowColor];
52+
CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background.png"];
53+
CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background-hilite.png"];
54+
CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-handle.png"];
55+
56+
CCSlider* slider = [[CCSlider alloc] initWithBackground:background andHandleImage:handle];
57+
[slider setBackgroundSpriteFrame:backgroundHilite forState:CCControlStateHighlighted];
58+
slider.positionType = CCPositionTypeNormalized;
59+
slider.position = ccp(0.1f, 0.5f);
60+
61+
slider.preferredSizeType = CCSizeTypeMake(CCSizeUnitNormalized, CCSizeUnitUIPoints);
62+
slider.preferredSize = CGSizeMake(0.5f, 10);
63+
slider.rotation = 90;
64+
slider.anchorPoint = ccp(0.5f, 0.5f);
65+
slider.scale = 0.8;
66+
67+
[slider setTarget:self selector:@selector(outlineWidthChagne:)];
68+
69+
[self.contentNode addChild:environment];
70+
[self.contentNode addChild:slider];
71+
[self.contentNode addChild:dfSprite];
72+
73+
// 6 pixel block used for comparison;
74+
CCNodeColor* block = [CCNodeColor nodeWithColor:[CCColor greenColor]];
75+
block.contentSize = CGSizeMake(6.0, 6.0);
76+
block.position = ccp(0.424, 0.324);
77+
block.positionType = CCPositionTypeNormalized;
78+
block.rotation = 32;
79+
// [self.contentNode addChild:block];
80+
}
81+
82+
- (void)outlineWidthChagne:(id)sender
83+
{
84+
const int outlineWidthMax = 6;
85+
CCSlider* slider = sender;
86+
_outlineEffect.outlineWidth = slider.sliderValue * outlineWidthMax;
87+
}
88+
89+
-(void)setupDistanceFieldEffectTest
90+
{
91+
self.subTitle = @"Distance Field Effect Test";
3792

38-
CCSprite *sampleSprite = [CCSprite spriteWithImageNamed:@"Images/DistanceFieldX.png"];
93+
// CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
94+
CCSprite *environment = [CCSprite spriteWithImageNamed:@"Images/MountainPanorama.jpg"];
95+
environment.positionType = CCPositionTypeNormalized;
96+
environment.anchorPoint = ccp(0.5, 0.5);
97+
environment.position = ccp(0.5f, 0.5f);
98+
99+
[self.contentNode addChild:environment];
100+
101+
CCColor *glowColor = [CCColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];
102+
_distanceFieldEffect = [CCEffectDistanceField effectWithGlowColor:glowColor outlineColor:[CCColor redColor]];
103+
104+
CCSprite *sampleSprite = [CCSprite spriteWithImageNamed:@"Images/output.png"];
39105
sampleSprite.position = ccp(0.5, 0.5);
40106
sampleSprite.positionType = CCPositionTypeNormalized;
41-
sampleSprite.effect = effect;
42-
107+
sampleSprite.effect = _distanceFieldEffect;
108+
sampleSprite.scale = 1.0f;
109+
110+
CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background.png"];
111+
CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background-hilite.png"];
112+
CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-handle.png"];
113+
114+
CCSlider* slider = [[CCSlider alloc] initWithBackground:background andHandleImage:handle];
115+
[slider setBackgroundSpriteFrame:backgroundHilite forState:CCControlStateHighlighted];
116+
slider.positionType = CCPositionTypeNormalized;
117+
slider.position = ccp(0.1f, 0.5f);
118+
119+
slider.preferredSizeType = CCSizeTypeMake(CCSizeUnitNormalized, CCSizeUnitUIPoints);
120+
slider.preferredSize = CGSizeMake(0.5f, 10);
121+
slider.rotation = 90;
122+
slider.anchorPoint = ccp(0.5f, 0.5f);
123+
slider.scale = 0.8;
124+
125+
[slider setTarget:self selector:@selector(outlineInnerWidthChange:)];
126+
127+
CCSlider* slider2 = [[CCSlider alloc] initWithBackground:background andHandleImage:handle];
128+
[slider2 setBackgroundSpriteFrame:backgroundHilite forState:CCControlStateHighlighted];
129+
slider2.positionType = CCPositionTypeNormalized;
130+
slider2.position = ccp(0.15f, 0.5f);
131+
132+
slider2.preferredSizeType = CCSizeTypeMake(CCSizeUnitNormalized, CCSizeUnitUIPoints);
133+
slider2.preferredSize = CGSizeMake(0.5f, 10);
134+
slider2.rotation = 90;
135+
slider2.anchorPoint = ccp(0.5f, 0.5f);
136+
slider2.scale = 0.8;
137+
138+
[slider2 setTarget:self selector:@selector(outlineOuterWidthChange:)];
139+
140+
CCSlider* slider3 = [[CCSlider alloc] initWithBackground:background andHandleImage:handle];
141+
[slider3 setBackgroundSpriteFrame:backgroundHilite forState:CCControlStateHighlighted];
142+
slider3.positionType = CCPositionTypeNormalized;
143+
slider3.position = ccp(0.20f, 0.5f);
144+
145+
slider3.preferredSizeType = CCSizeTypeMake(CCSizeUnitNormalized, CCSizeUnitUIPoints);
146+
slider3.preferredSize = CGSizeMake(0.5f, 10);
147+
slider3.rotation = 90;
148+
slider3.anchorPoint = ccp(0.5f, 0.5f);
149+
slider3.scale = 0.8;
150+
151+
[slider3 setTarget:self selector:@selector(glowWidthChange:)];
152+
153+
CCButton* enableGlow = [CCButton buttonWithTitle:@"Outer Glow"];
154+
enableGlow.positionType = CCPositionTypeNormalized;
155+
enableGlow.anchorPoint = ccp(0.5f, 0.5f);
156+
enableGlow.position = ccp(0.9, 0.8);
157+
[enableGlow setTarget:self selector:@selector(enableGlow:)];
158+
159+
CCButton* enableOutline = [CCButton buttonWithTitle:@"Outline"];
160+
enableOutline.positionType = CCPositionTypeNormalized;
161+
enableOutline.anchorPoint = ccp(0.5f, 0.5f);
162+
enableOutline.position = ccp(0.9, 0.7);
163+
[enableOutline setTarget:self selector:@selector(enableOutline:)];
164+
165+
[self.contentNode addChild:enableOutline];
166+
[self.contentNode addChild:enableGlow];
43167
[self.contentNode addChild:sampleSprite];
168+
[self.contentNode addChild:slider];
169+
[self.contentNode addChild:slider2];
170+
[self.contentNode addChild:slider3];
171+
}
172+
173+
- (void)outlineInnerWidthChange:(id)sender
174+
{
175+
CCSlider* slider = sender;
176+
_distanceFieldEffect.outlineInnerWidth = slider.sliderValue;
177+
}
178+
179+
- (void)outlineOuterWidthChange:(id)sender
180+
{
181+
CCSlider* slider = sender;
182+
_distanceFieldEffect.outlineOuterWidth = slider.sliderValue;
183+
}
184+
185+
- (void)glowWidthChange:(id)sender
186+
{
187+
CCSlider* slider = sender;
188+
_distanceFieldEffect.glowWidth = slider.sliderValue;
44189
}
45190

191+
- (void)enableGlow:(id)sender
192+
{
193+
_distanceFieldEffect.glow = !_distanceFieldEffect.glow;
194+
}
195+
196+
- (void)enableOutline:(id)sender
197+
{
198+
_distanceFieldEffect.outline = !_distanceFieldEffect.outline;
199+
}
200+
201+
#endif
202+
203+
#pragma mark DropShadow
204+
46205
-(void)setupDropShadowEffectTest
47206
{
48207
self.subTitle = @"DropShadow Effect Test";
@@ -54,7 +213,7 @@ -(void)setupDropShadowEffectTest
54213
[self.contentNode addChild:environment];
55214

56215
CCColor *shadowColor = [CCColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:0.5];
57-
CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset:GLKVector2Make(2.0, -2.0) shadowColor:shadowColor];
216+
CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset:GLKVector2Make(2.0, -2.0) shadowColor:shadowColor blurRadius:5];
58217

59218
CCSprite *sampleSprite = [CCSprite spriteWithImageNamed:@"Images/Ohm.png"];
60219
sampleSprite.position = ccp(0.5, 0.5);
@@ -71,6 +230,8 @@ -(void)setupDropShadowEffectTest
71230
[self.contentNode addChild:effectNode];
72231
}
73232

233+
#pragma mark Glass
234+
74235
-(void)setupGlassEffectTest
75236
{
76237
self.subTitle = @"Glass Effect Test";
@@ -453,7 +614,7 @@ -(void)setupBloomEffectTest
453614
sampleSprite3.positionType = CCPositionTypeNormalized;
454615

455616
// Blend glow maps test
456-
CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius:8 intensity:1.0f luminanceThreshold:1.0f - ((float)i/(float)(steps-1))];
617+
CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius:3 intensity:1.0f luminanceThreshold:1.0f - ((float)i/(float)(steps-1))];
457618
sampleSprite3.effect = glowEffect3;
458619

459620
[self.contentNode addChild:sampleSprite3];
@@ -1338,7 +1499,6 @@ - (CCSprite *)spriteWithEffects:(NSArray *)effects image:(NSString *)spriteImage
13381499
return sprite;
13391500
}
13401501

1341-
13421502
-(void)renderTextureHelper:(CCNode *)stage size:(CGSize)size
13431503
{
13441504
CCColor *color = [CCColor colorWithRed:0.0 green:0.0 blue:0.5 alpha:0.5];
@@ -1364,5 +1524,5 @@ -(void)renderTextureHelper:(CCNode *)stage size:(CGSize)size
13641524
]]];
13651525
[node addChild:sprite];
13661526
}
1367-
@end
13681527

1528+
@end

cocos2d/CCEffectBloom.m

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
@implementation CCEffectBloom {
4949
NSUInteger _numberOfOptimizedOffsets;
5050
GLfloat _sigma;
51+
NSUInteger _trueBlurRadius;
5152
BOOL _shaderDirty;
5253
float _transformedIntensity;
5354
}
@@ -73,13 +74,13 @@ -(id)initWithPixelBlurRadius:(NSUInteger)blurRadius intensity:(float)intensity l
7374
CCEffectUniform* u_intensity = [CCEffectUniform uniform:@"float" name:@"u_intensity" value:[NSNumber numberWithFloat:_transformedIntensity]];
7475
CCEffectUniform* u_luminanceThreshold = [CCEffectUniform uniform:@"float" name:@"u_luminanceThreshold" value:[NSNumber numberWithFloat:_luminanceThreshold]];
7576
CCEffectUniform* u_enableGlowMap = [CCEffectUniform uniform:@"float" name:@"u_enableGlowMap" value:[NSNumber numberWithFloat:0.0f]];
76-
CCEffectUniform* u_blurDirection = [CCEffectUniform uniform:@"vec2" name:@"u_blurDirection"
77+
CCEffectUniform* u_blurDirection = [CCEffectUniform uniform:@"highp vec2" name:@"u_blurDirection"
7778
value:[NSValue valueWithGLKVector2:GLKVector2Make(0.0f, 0.0f)]];
7879

7980
unsigned long count = (unsigned long)(1 + (_numberOfOptimizedOffsets * 2));
8081
CCEffectVarying* v_blurCoords = [CCEffectVarying varying:@"vec2" name:@"v_blurCoordinates" count:count];
8182

82-
if(self = [super initWithFragmentUniforms:@[u_enableGlowMap, u_luminanceThreshold, u_intensity]
83+
if(self = [super initWithFragmentUniforms:@[u_enableGlowMap, u_luminanceThreshold, u_intensity, u_blurDirection]
8384
vertexUniforms:@[u_blurDirection]
8485
varyings:@[v_blurCoords]])
8586
{
@@ -121,9 +122,10 @@ -(void)setBlurRadius:(NSUInteger)blurRadius
121122

122123
- (void)setBlurRadiusAndDependents:(NSUInteger)blurRadius
123124
{
125+
_trueBlurRadius = blurRadius;
124126
blurRadius = MIN(blurRadius, BLUR_OPTIMIZED_RADIUS_MAX);
125127
_blurRadius = blurRadius;
126-
_sigma = blurRadius / 2;
128+
_sigma = _trueBlurRadius / 2;
127129
if(_sigma == 0.0)
128130
_sigma = 1.0f;
129131

@@ -134,9 +136,9 @@ -(void)buildFragmentFunctions
134136
{
135137
self.fragmentFunctions = [[NSMutableArray alloc] init];
136138

137-
GLfloat *standardGaussianWeights = calloc(_blurRadius + 1, sizeof(GLfloat));
139+
GLfloat *standardGaussianWeights = calloc(_trueBlurRadius + 1, sizeof(GLfloat));
138140
GLfloat sumOfWeights = 0.0;
139-
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _blurRadius + 1; currentGaussianWeightIndex++)
141+
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _trueBlurRadius + 1; currentGaussianWeightIndex++)
140142
{
141143
standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(_sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(_sigma, 2.0)));
142144

@@ -151,14 +153,14 @@ -(void)buildFragmentFunctions
151153
}
152154

153155
// Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance
154-
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _blurRadius + 1; currentGaussianWeightIndex++)
156+
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _trueBlurRadius + 1; currentGaussianWeightIndex++)
155157
{
156158
standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights;
157159
}
158160

159161
// From these weights we calculate the offsets to read interpolated values from
160162
NSUInteger numberOfOptimizedOffsets = MIN(_blurRadius / 2 + (_blurRadius % 2), BLUR_OPTIMIZED_RADIUS_MAX);
161-
NSUInteger trueNumberOfOptimizedOffsets = _blurRadius / 2 + (_blurRadius % 2);
163+
NSUInteger trueNumberOfOptimizedOffsets = _trueBlurRadius / 2 + (_trueBlurRadius % 2);
162164

163165
NSMutableString *shaderString = [[NSMutableString alloc] init];
164166

@@ -244,9 +246,9 @@ -(void)buildVertexFunctions
244246
{
245247
self.vertexFunctions = [[NSMutableArray alloc] init];
246248

247-
GLfloat* standardGaussianWeights = calloc(_blurRadius + 1, sizeof(GLfloat));
249+
GLfloat* standardGaussianWeights = calloc(_trueBlurRadius + 1, sizeof(GLfloat));
248250
GLfloat sumOfWeights = 0.0;
249-
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _blurRadius + 1; currentGaussianWeightIndex++)
251+
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _trueBlurRadius + 1; currentGaussianWeightIndex++)
250252
{
251253
standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(_sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(_sigma, 2.0)));
252254

@@ -261,7 +263,7 @@ -(void)buildVertexFunctions
261263
}
262264

263265
// Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance
264-
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _blurRadius + 1; currentGaussianWeightIndex++)
266+
for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < _trueBlurRadius + 1; currentGaussianWeightIndex++)
265267
{
266268
standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights;
267269
}

0 commit comments

Comments
 (0)