Skip to content

Commit dce8781

Browse files
committed
Merge branch 'develop' of https://github.com/cocos2d/cocos2d-iphone into develop
Conflicts: cocos2d-osx.xcodeproj/project.pbxproj
2 parents 9d7c718 + d4568ee commit dce8781

19 files changed

+417
-108
lines changed

cocos2d-ios.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@
112112
9D85671E191B018200573093 /* CCEffectBrightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D85671C191B018200573093 /* CCEffectBrightness.m */; };
113113
9D856721191B019900573093 /* CCEffectContrast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D85671F191B019900573093 /* CCEffectContrast.h */; };
114114
9D856722191B019900573093 /* CCEffectContrast.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D856720191B019900573093 /* CCEffectContrast.m */; };
115+
9DB7599A196E09FF00AF3E4A /* CCEffectHue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB75998196E09FF00AF3E4A /* CCEffectHue.h */; };
116+
9DB7599B196E09FF00AF3E4A /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DB75999196E09FF00AF3E4A /* CCEffectHue.m */; };
115117
9DE90429192D630000AEB37A /* CCEffectRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DE90427192D630000AEB37A /* CCEffectRenderer.h */; };
116118
9DE9042A192D630000AEB37A /* CCEffectRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DE90428192D630000AEB37A /* CCEffectRenderer.m */; };
117119
9DF37621191C594A00C6D27A /* CCEffectPixellate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */; };
@@ -438,6 +440,8 @@
438440
9D85671F191B019900573093 /* CCEffectContrast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectContrast.h; sourceTree = "<group>"; };
439441
9D856720191B019900573093 /* CCEffectContrast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectContrast.m; sourceTree = "<group>"; };
440442
9D85B7DC195396E90039A9DB /* CCEffectStackProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCEffectStackProtocol.h; sourceTree = "<group>"; };
443+
9DB75998196E09FF00AF3E4A /* CCEffectHue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectHue.h; sourceTree = "<group>"; };
444+
9DB75999196E09FF00AF3E4A /* CCEffectHue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectHue.m; sourceTree = "<group>"; };
441445
9DE90427192D630000AEB37A /* CCEffectRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRenderer.h; sourceTree = "<group>"; };
442446
9DE90428192D630000AEB37A /* CCEffectRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRenderer.m; sourceTree = "<group>"; };
443447
9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectPixellate.h; sourceTree = "<group>"; };
@@ -1218,6 +1222,8 @@
12181222
9D85671C191B018200573093 /* CCEffectBrightness.m */,
12191223
9D85671F191B019900573093 /* CCEffectContrast.h */,
12201224
9D856720191B019900573093 /* CCEffectContrast.m */,
1225+
9DB75998196E09FF00AF3E4A /* CCEffectHue.h */,
1226+
9DB75999196E09FF00AF3E4A /* CCEffectHue.m */,
12211227
9DF3761F191C594A00C6D27A /* CCEffectPixellate.h */,
12221228
9DF37620191C594A00C6D27A /* CCEffectPixellate.m */,
12231229
D2B49102192146FB00C3443A /* CCEffectGaussianBlur.h */,
@@ -1418,6 +1424,7 @@
14181424
A0C20AC8144FDAF700D84B47 /* CCParticleBatchNode.h in Headers */,
14191425
B7705FDF1831A07B0043CC67 /* ObjectALConfig.h in Headers */,
14201426
A046E29314C1DB7D0005BBF2 /* CCDirectorMac.h in Headers */,
1427+
9DB7599A196E09FF00AF3E4A /* CCEffectHue.h in Headers */,
14211428
A046E29714C1DB7D0005BBF2 /* CCGLView.h in Headers */,
14221429
A046E29914C1DB7E0005BBF2 /* CCWindow.h in Headers */,
14231430
B791E85E182074C500DAE1D7 /* CCProgressNode.h in Headers */,
@@ -1555,6 +1562,7 @@
15551562
B7705FE91831A07B0043CC67 /* ALDevice.m in Sources */,
15561563
5018F2740DFDEAFF00C013A5 /* CCLabelTTF.m in Sources */,
15571564
9D856722191B019900573093 /* CCEffectContrast.m in Sources */,
1565+
9DB7599B196E09FF00AF3E4A /* CCEffectHue.m in Sources */,
15581566
926B97F61938606D00E345FB /* CCAnimationManager.m in Sources */,
15591567
5018F2760DFDEAFF00C013A5 /* CCNodeColor.m in Sources */,
15601568
B77060001831A07B0043CC67 /* NSMutableArray+WeakReferences.m in Sources */,

cocos2d-osx.xcodeproj/project.pbxproj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@
3939
92D1343C1954FC7A003833C4 /* CCRenderTexture_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92D134371954FC7A003833C4 /* CCRenderTexture_Private.h */; };
4040
92D1343E1954FC7A003833C4 /* CCActionManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92D134391954FC7A003833C4 /* CCActionManager_Private.h */; };
4141
92D1343F1954FC7A003833C4 /* CCEffectGaussianBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = 92D1343A1954FC7A003833C4 /* CCEffectGaussianBlur.h */; };
42+
9D23869C196F0BC4001B792B /* CCEffectHue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D23869A196F0BC4001B792B /* CCEffectHue.h */; };
43+
9D23869D196F0BC4001B792B /* CCEffectHue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D23869B196F0BC4001B792B /* CCEffectHue.m */; };
44+
9DB75994196E073200AF3E4A /* CCEffectBloom.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB75992196E073200AF3E4A /* CCEffectBloom.h */; };
45+
9DB75995196E073200AF3E4A /* CCEffectBloom.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DB75993196E073200AF3E4A /* CCEffectBloom.m */; };
4246
9DDFEF6A19635F0600CCE3DF /* CCEffectRefraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDFEF6819635F0600CCE3DF /* CCEffectRefraction.h */; };
4347
9DDFEF6B19635F0600CCE3DF /* CCEffectRefraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DDFEF6919635F0600CCE3DF /* CCEffectRefraction.m */; };
4448
A003ACA7165731D500C7B792 /* ccFPSImages.h in Headers */ = {isa = PBXBuildFile; fileRef = A003ACA5165731D500C7B792 /* ccFPSImages.h */; };
@@ -391,6 +395,10 @@
391395
92D134371954FC7A003833C4 /* CCRenderTexture_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderTexture_Private.h; sourceTree = "<group>"; };
392396
92D134391954FC7A003833C4 /* CCActionManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionManager_Private.h; sourceTree = "<group>"; };
393397
92D1343A1954FC7A003833C4 /* CCEffectGaussianBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectGaussianBlur.h; sourceTree = "<group>"; };
398+
9D23869A196F0BC4001B792B /* CCEffectHue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectHue.h; sourceTree = "<group>"; };
399+
9D23869B196F0BC4001B792B /* CCEffectHue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectHue.m; sourceTree = "<group>"; };
400+
9DB75992196E073200AF3E4A /* CCEffectBloom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectBloom.h; sourceTree = "<group>"; };
401+
9DB75993196E073200AF3E4A /* CCEffectBloom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectBloom.m; sourceTree = "<group>"; };
394402
9DDFEF6819635F0600CCE3DF /* CCEffectRefraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEffectRefraction.h; sourceTree = "<group>"; };
395403
9DDFEF6919635F0600CCE3DF /* CCEffectRefraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCEffectRefraction.m; sourceTree = "<group>"; };
396404
A003ACA5165731D500C7B792 /* ccFPSImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccFPSImages.h; sourceTree = "<group>"; };
@@ -854,6 +862,8 @@
854862
929D1B5B1954C2A600B27340 /* CCEffectContrast.m */,
855863
92D1343A1954FC7A003833C4 /* CCEffectGaussianBlur.h */,
856864
929D1B5C1954C2A600B27340 /* CCEffectGaussianBlur.m */,
865+
9D23869A196F0BC4001B792B /* CCEffectHue.h */,
866+
9D23869B196F0BC4001B792B /* CCEffectHue.m */,
857867
929D1B5E1954C2A600B27340 /* CCEffectNode.h */,
858868
929D1B5F1954C2A600B27340 /* CCEffectNode.m */,
859869
929D1B601954C2A600B27340 /* CCEffectPixellate.h */,
@@ -1562,7 +1572,7 @@
15621572
D389412818639DD400725CFC /* CCPhysicsJoint.h in Headers */,
15631573
B770607B1831B0C40043CC67 /* ALDevice.h in Headers */,
15641574
B77060651831B0C40043CC67 /* OALAudioActions.h in Headers */,
1565-
92CD1C0B1965D6E6002BF2DE /* CCEffectBloom.h in Headers */,
1575+
9DB75994196E073200AF3E4A /* CCEffectBloom.h in Headers */,
15661576
D3AD531B18C84FA1005B6CF3 /* CCCache.h in Headers */,
15671577
B7D273291822F5460054849B /* CCBAnimationManager.h in Headers */,
15681578
929D1B781954C2A600B27340 /* CCEffectSaturation.h in Headers */,
@@ -1667,6 +1677,7 @@
16671677
B7E2603517E7C774007067F0 /* NSEvent+CC.h in Headers */,
16681678
B77060961831B0C40043CC67 /* OALAudioFile.h in Headers */,
16691679
B7E2603917E7C786007067F0 /* UITouch+CC.h in Headers */,
1680+
9D23869C196F0BC4001B792B /* CCEffectHue.h in Headers */,
16701681
);
16711682
runOnlyForDeploymentPostprocessing = 0;
16721683
};
@@ -1846,6 +1857,7 @@
18461857
D389412B18639DD400725CFC /* CCPhysicsNode.m in Sources */,
18471858
E076E7641225EC7400DE0DA2 /* ccUtils.c in Sources */,
18481859
B770608C1831B0C40043CC67 /* OALSuspendHandler.m in Sources */,
1860+
9D23869D196F0BC4001B792B /* CCEffectHue.m in Sources */,
18491861
E076E7671225EC7400DE0DA2 /* CGPointExtension.m in Sources */,
18501862
E076E76A1225EC7400DE0DA2 /* TGAlib.m in Sources */,
18511863
B7EE69ED1819EAAC00B983FE /* CCLayoutBox.m in Sources */,

cocos2d-ui-tests/tests/CCEffectsTest.m

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,13 @@ -(void)setupBlurEffectNodeTest
233233
sampleSprite4.position = ccp(0.5, 0.5);
234234
sampleSprite4.positionType = CCPositionTypeNormalized;
235235

236-
237236
CCEffectNode* effectNode4 = [[CCEffectNode alloc] initWithWidth:80 height:80];
238237
effectNode4.positionType = CCPositionTypeNormalized;
239238
effectNode4.position = ccp(0.6, 0.5);
240239
[effectNode4 addChild:sampleSprite4];
241240
CCEffectGaussianBlur* effect4 = [CCEffectGaussianBlur effectWithPixelBlurRadius:7.0];
242241
effectNode4.effect = effect4;
243-
242+
244243
[self.contentNode addChild:effectNode4];
245244
}
246245

@@ -376,6 +375,32 @@ -(void)setupSaturationEffectNodeTest
376375
[self.contentNode addChild:[self effectNodeWithEffects:@[effects[8]] appliedToSpriteWithImage:@"Images/grossini.png" atPosition:ccp(0.9, 0.5)]];
377376
}
378377

378+
-(void)setupHueEffectTest
379+
{
380+
self.subTitle = @"Hue Effect Test";
381+
382+
// Effect nodes that use the effects in different combinations.
383+
int stepCount = 12;
384+
385+
float startX = 0.05f;
386+
float endX = 0.95f;
387+
float stepX = (endX - startX) / stepCount;
388+
float x = startX;
389+
float y = 0.5f;
390+
391+
float startHue = 180.0f;
392+
float endHue = -180.0f;
393+
float stepHue = (endHue - startHue) / stepCount;
394+
float hue = startHue;
395+
396+
for (int i = 0; i <= stepCount; i++)
397+
{
398+
[self.contentNode addChild:[self spriteWithEffects:@[[[CCEffectHue alloc] initWithHue:hue]] image:@"Images/grossini.png" atPosition:ccp(x, y)]];
399+
x += stepX;
400+
hue += stepHue;
401+
}
402+
}
403+
379404
-(void)setupPerformanceTest
380405
{
381406
self.subTitle = @"Effect Performance Test";

cocos2d/CCEffect.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,7 @@ typedef void (^CCEffectRenderPassEndBlock)(CCEffectRenderPass *pass);
129129

130130
-(BOOL)stitchSupported:(CCEffectFunctionStitchFlags)stitch;
131131

132+
-(void)setVarying:(NSArray*)varying;
133+
132134
@end
133135
#endif

cocos2d/CCEffect.m

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -359,14 +359,7 @@ - (void)buildEffectWithFragmentFunction:(NSMutableArray*) fragmentFunctions vert
359359
_vertexUniforms = [[CCEffect defaultEffectVertexUniforms] copy];
360360
}
361361

362-
if (varying)
363-
{
364-
_varyingVars = [varying copy];
365-
}
366-
else
367-
{
368-
_varyingVars = nil;
369-
}
362+
[self setVarying:varying];
370363

371364
_stitchFlags = CCEffectFunctionStitchBoth;
372365

@@ -406,6 +399,17 @@ -(void)buildUniformTranslationTable
406399
}
407400
}
408401

402+
-(void)setVarying:(NSArray*)varying
403+
{
404+
if (varying)
405+
{
406+
_varyingVars = [varying copy];
407+
}
408+
else
409+
{
410+
_varyingVars = nil;
411+
}
412+
}
409413

410414
-(void)buildEffectShader
411415
{

cocos2d/CCEffectBloom.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,16 @@
1111
#if CC_ENABLE_EXPERIMENTAL_EFFECTS
1212
@interface CCEffectBloom : CCEffect
1313

14-
@property (nonatomic) NSUInteger blurRadius;
15-
@property (nonatomic) float intensity;
14+
// ranges between 0.0-1.0 - defines which part of the image should be glown via a luminance factor (brightness).
1615
@property (nonatomic) float luminanceThreshold;
1716

17+
// intensity ranges between 0.0-1.0 - defines the contrast of the glowing image. A higher value will make the glow more prevelant.
18+
@property (nonatomic) float intensity;
19+
20+
// blurRadius number of pixels blur will extend to (6 is the maximum, because we are limited by the number
21+
// of varying variables that can be passed to a glsl program). TODO: create a slower bloom shader, that does not have this restriction.
22+
@property (nonatomic) NSUInteger blurRadius;
23+
1824
/**
1925
* @param blurRadius number of pixels blur will extend to (6 is the maximum, because we are limited by the number
2026
* of varying variables that can be passed to a glsl program). TODO: create a slower bloom shader, that does not have this restriction.

cocos2d/CCEffectBloom.m

Lines changed: 53 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,28 +50,7 @@ @implementation CCEffectBloom {
5050
NSUInteger _numberOfOptimizedOffsets;
5151
GLfloat _sigma;
5252
BOOL _shaderDirty;
53-
}
54-
55-
- (void)setBlurRadiusAndDependents:(NSUInteger)blurRadius
56-
{
57-
blurRadius = MIN(blurRadius, GAUSSIANBLUR_OPTMIZIED_RADIUS_MAX);
58-
_blurRadius = blurRadius;
59-
_sigma = blurRadius / 2;
60-
if(_sigma == 0.0)
61-
_sigma = 1.0f;
62-
63-
_numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), GAUSSIANBLUR_OPTMIZIED_RADIUS_MAX);
64-
}
65-
66-
-(void)setBlurRadius:(NSUInteger)blurRadius
67-
{
68-
[self setBlurRadiusAndDependents:blurRadius];
69-
70-
// The shader is constructed dynamically based on the blur radius
71-
// so mark it dirty and make sure this propagates up to any containing
72-
// effect stacks.
73-
_shaderDirty = YES;
74-
[self.owningStack passesDidChange:self];
53+
float _transformedIntensity;
7554
}
7655

7756
-(id)init
@@ -87,13 +66,12 @@ -(id)init
8766

8867
-(id)initWithPixelBlurRadius:(NSUInteger)blurRadius intensity:(float)intensity luminanceThreshold:(float)luminanceThreshold
8968
{
90-
_intensity = clampf(intensity, 0.0f, 1.0f);
91-
_intensity = 1.0f - _intensity;
92-
93-
_luminanceThreshold = clampf(luminanceThreshold, 0.0f, 1.0f);
94-
95-
[self setBlurRadiusAndDependents:blurRadius];
69+
self.intensity = intensity;
70+
self.luminanceThreshold = luminanceThreshold;
9671

72+
[self setBlurRadiusAndDependents:blurRadius];
73+
74+
CCEffectUniform* u_intensity = [CCEffectUniform uniform:@"float" name:@"u_intensity" value:[NSNumber numberWithFloat:_transformedIntensity]];
9775
CCEffectUniform* u_luminanceThreshold = [CCEffectUniform uniform:@"float" name:@"u_luminanceThreshold" value:[NSNumber numberWithFloat:_luminanceThreshold]];
9876
CCEffectUniform* u_enableGlowMap = [CCEffectUniform uniform:@"float" name:@"u_enableGlowMap" value:[NSNumber numberWithFloat:0.0f]];
9977
CCEffectUniform* u_blurDirection = [CCEffectUniform uniform:@"vec2" name:@"u_blurDirection"
@@ -102,7 +80,7 @@ -(id)initWithPixelBlurRadius:(NSUInteger)blurRadius intensity:(float)intensity l
10280
unsigned long count = (unsigned long)(1 + (_numberOfOptimizedOffsets * 2));
10381
CCEffectVarying* v_blurCoords = [CCEffectVarying varying:@"vec2" name:@"v_blurCoordinates" count:count];
10482

105-
if(self = [super initWithFragmentUniforms:@[u_enableGlowMap, u_luminanceThreshold]
83+
if(self = [super initWithFragmentUniforms:@[u_enableGlowMap, u_luminanceThreshold, u_intensity]
10684
vertexUniforms:@[u_blurDirection]
10785
varying:@[v_blurCoords]])
10886
{
@@ -120,6 +98,39 @@ +(id)effectWithPixelBlurRadius:(NSUInteger)blurRadius intensity:(float)intensity
12098
return [[self alloc] initWithPixelBlurRadius:blurRadius intensity:intensity luminanceThreshold:luminanceThreshold];
12199
}
122100

101+
-(void)setLuminanceThreshold:(float)luminanceThreshold
102+
{
103+
_luminanceThreshold = clampf(luminanceThreshold, 0.0f, 1.0f);
104+
}
105+
106+
-(void)setIntensity:(float)intensity
107+
{
108+
_intensity = clampf(intensity, 0.0f, 1.0f);
109+
_transformedIntensity = 1.0f - _intensity;
110+
}
111+
112+
-(void)setBlurRadius:(NSUInteger)blurRadius
113+
{
114+
[self setBlurRadiusAndDependents:blurRadius];
115+
116+
// The shader is constructed dynamically based on the blur radius
117+
// so mark it dirty and make sure this propagates up to any containing
118+
// effect stacks.
119+
_shaderDirty = YES;
120+
[self.owningStack passesDidChange:self];
121+
}
122+
123+
- (void)setBlurRadiusAndDependents:(NSUInteger)blurRadius
124+
{
125+
blurRadius = MIN(blurRadius, GAUSSIANBLUR_OPTMIZIED_RADIUS_MAX);
126+
_blurRadius = blurRadius;
127+
_sigma = blurRadius / 2;
128+
if(_sigma == 0.0)
129+
_sigma = 1.0f;
130+
131+
_numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), GAUSSIANBLUR_OPTMIZIED_RADIUS_MAX);
132+
}
133+
123134
-(void)buildFragmentFunctions
124135
{
125136
self.fragmentFunctions = [[NSMutableArray alloc] init];
@@ -202,8 +213,9 @@ -(void)buildFragmentFunctions
202213

203214

204215
// Choose one?
216+
// TODO: try using min(src, dst) to create a gloomEffect
205217
NSString* addativeBlending = @"src + dst";
206-
NSString* screenBlending = [NSString stringWithFormat:@"(src + dst) - ((src * dst) * %f)", _intensity];
218+
NSString* screenBlending = @"(src + dst) - ((src * dst) * u_intensity)";
207219

208220
[shaderString appendFormat:@"\
209221
return %@;\n", screenBlending];
@@ -300,6 +312,8 @@ -(void)buildRenderPasses
300312
pass.shaderUniforms[CCShaderUniformMainTexture] = previousPassTexture;
301313
pass.shaderUniforms[CCShaderUniformPreviousPassTexture] = previousPassTexture;
302314
pass.shaderUniforms[self.uniformTranslationTable[@"u_enableGlowMap"]] = [NSNumber numberWithFloat:0.0f];
315+
pass.shaderUniforms[self.uniformTranslationTable[@"u_luminanceThreshold"]] = [NSNumber numberWithFloat:_luminanceThreshold];
316+
pass.shaderUniforms[self.uniformTranslationTable[@"u_intensity"]] = [NSNumber numberWithFloat:_transformedIntensity];
303317

304318
GLKVector2 dur = GLKVector2Make(1.0 / (previousPassTexture.pixelWidth / previousPassTexture.contentScale), 0.0);
305319
pass.shaderUniforms[self.uniformTranslationTable[@"u_blurDirection"]] = [NSValue valueWithGLKVector2:dur];
@@ -313,6 +327,8 @@ -(void)buildRenderPasses
313327

314328
pass.shaderUniforms[CCShaderUniformPreviousPassTexture] = previousPassTexture;
315329
pass.shaderUniforms[self.uniformTranslationTable[@"u_enableGlowMap"]] = [NSNumber numberWithFloat:0.0f];
330+
pass.shaderUniforms[self.uniformTranslationTable[@"u_luminanceThreshold"]] = [NSNumber numberWithFloat:_luminanceThreshold];
331+
pass.shaderUniforms[self.uniformTranslationTable[@"u_intensity"]] = [NSNumber numberWithFloat:_transformedIntensity];
316332

317333
GLKVector2 dur = GLKVector2Make(0.0, 1.0 / (previousPassTexture.pixelHeight / previousPassTexture.contentScale));
318334
pass.shaderUniforms[self.uniformTranslationTable[@"u_blurDirection"]] = [NSValue valueWithGLKVector2:dur];
@@ -325,6 +341,9 @@ -(void)buildRenderPasses
325341
pass2.beginBlocks = @[[^(CCEffectRenderPass *pass, CCTexture *previousPassTexture){
326342
pass.shaderUniforms[CCShaderUniformPreviousPassTexture] = previousPassTexture;
327343
pass.shaderUniforms[self.uniformTranslationTable[@"u_enableGlowMap"]] = [NSNumber numberWithFloat:1.0f];
344+
pass.shaderUniforms[self.uniformTranslationTable[@"u_luminanceThreshold"]] = [NSNumber numberWithFloat:_luminanceThreshold];
345+
pass.shaderUniforms[self.uniformTranslationTable[@"u_intensity"]] = [NSNumber numberWithFloat:_transformedIntensity];
346+
328347
} copy]];
329348

330349
self.renderPasses = @[pass0, pass1, pass2];
@@ -340,6 +359,10 @@ - (CCEffectPrepareStatus)prepareForRendering
340359
CCEffectPrepareStatus result = CCEffectPrepareNothingToDo;
341360
if (_shaderDirty)
342361
{
362+
unsigned long count = (unsigned long)(1 + (_numberOfOptimizedOffsets * 2));
363+
CCEffectVarying* v_blurCoords = [CCEffectVarying varying:@"vec2" name:@"v_blurCoordinates" count:count];
364+
[self setVarying:@[v_blurCoords]];
365+
343366
[self buildFragmentFunctions];
344367
[self buildVertexFunctions];
345368
[self buildEffectShader];

0 commit comments

Comments
 (0)