Skip to content

Commit 8381cac

Browse files
committed
Fixed compilation issues for headless.
Mdae some progress on a DistanceField outline effect. (works as is, I'm still keeping in hidden under experimental until I figure out how to package the tool).
1 parent e82679c commit 8381cac

File tree

9 files changed

+45
-28
lines changed

9 files changed

+45
-28
lines changed

Resources/Images/df_sprite.png

24.4 KB
Loading

Resources/Images/output.png

7.64 KB
Loading

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: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ @interface CCEffectsTest : TestBase @end
1111
@implementation CCEffectsTest {
1212
#if CC_EFFECTS_EXPERIMENTAL
1313
CCEffectDistanceField* _distanceFieldEffect;
14-
#endif
1514
CCEffectDFOutline* _outlineEffect;
15+
#endif
1616
}
1717

1818
-(id)init
@@ -27,6 +27,8 @@ -(id)init
2727

2828
#pragma mark Distance Fields
2929

30+
#if CC_EFFECTS_EXPERIMENTAL
31+
3032
-(void)setupDFOutlineEffectTest
3133
{
3234
self.subTitle = @"Distance Field Outline Test";
@@ -36,13 +38,16 @@ -(void)setupDFOutlineEffectTest
3638
environment.anchorPoint = ccp(0.5, 0.5);
3739
environment.position = ccp(0.5f, 0.5f);
3840

39-
_outlineEffect = [CCEffectDFOutline effectWithOutlineColor:[CCColor redColor] fillColor:[CCColor blackColor] outlineWidth:3 fieldScale:32];
41+
CCTexture* texture = [[CCTextureCache sharedTextureCache] addImage:@"Images/output.png"];
4042

41-
CCSprite *sampleSprite = [CCSprite spriteWithImageNamed:@"Images/output.png"];
42-
sampleSprite.position = ccp(0.5, 0.5);
43-
sampleSprite.positionType = CCPositionTypeNormalized;
44-
sampleSprite.effect = _outlineEffect;
45-
sampleSprite.scale = 2.0f;
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;
4651

4752
CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background.png"];
4853
CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background-hilite.png"];
@@ -63,7 +68,7 @@ -(void)setupDFOutlineEffectTest
6368

6469
[self.contentNode addChild:environment];
6570
[self.contentNode addChild:slider];
66-
[self.contentNode addChild:sampleSprite];
71+
[self.contentNode addChild:dfSprite];
6772

6873
// 6 pixel block used for comparison;
6974
CCNodeColor* block = [CCNodeColor nodeWithColor:[CCColor greenColor]];
@@ -81,7 +86,6 @@ - (void)outlineWidthChagne:(id)sender
8186
_outlineEffect.outlineWidth = slider.sliderValue * outlineWidthMax;
8287
}
8388

84-
#if CC_EFFECTS_EXPERIMENTAL
8589
-(void)setupDistanceFieldEffectTest
8690
{
8791
self.subTitle = @"Distance Field Effect Test";
@@ -101,7 +105,7 @@ -(void)setupDistanceFieldEffectTest
101105
sampleSprite.position = ccp(0.5, 0.5);
102106
sampleSprite.positionType = CCPositionTypeNormalized;
103107
sampleSprite.effect = _distanceFieldEffect;
104-
sampleSprite.scale = 2.0f;
108+
sampleSprite.scale = 1.0f;
105109

106110
CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background.png"];
107111
CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed:@"Tests/slider-background-hilite.png"];

cocos2d/CCEffectDFOutline.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* CCEffectDFOutline create a drop shadow.
1313
*
1414
*/
15+
#if CC_EFFECTS_EXPERIMENTAL
1516

1617
@interface CCEffectDFOutline : CCEffect
1718

@@ -28,6 +29,9 @@
2829
/** Outline width pixel width of the outline */
2930
@property (nonatomic) int outlineWidth;
3031

32+
// Distance Field, generated by SDFGen (https://github.com/osinoleg/SDFGen)
33+
@property (nonatomic, strong) CCTexture* distanceField;
34+
3135
/// -----------------------------------------------------------------------
3236
/// @name Initializing a CCEffectDFOutline object
3337
/// -----------------------------------------------------------------------
@@ -52,7 +56,7 @@
5256
*
5357
* @return The CCEffectDFOutline object.
5458
*/
55-
-(id)initWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)outlineColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale;
59+
-(id)initWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)outlineColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale distanceField:(CCTexture*)distanceField;
5660

5761

5862
/// -----------------------------------------------------------------------
@@ -66,6 +70,8 @@
6670
*
6771
* @return The CCEffectDFOutline object.
6872
*/
69-
+(id)effectWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale;
73+
+(id)effectWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale distanceField:(CCTexture*)distanceField;
7074

7175
@end
76+
77+
#endif

cocos2d/CCEffectDFOutline.m

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
//
88

99
#import "CCEffectDFOutline.h"
10+
11+
#if CC_EFFECTS_EXPERIMENTAL
12+
1013
#import "CCEffect_Private.h"
1114
#import "CCRenderer.h"
1215
#import "CCTexture.h"
@@ -19,10 +22,10 @@ @implementation CCEffectDFOutline {
1922

2023
-(id)init
2124
{
22-
return [self initWithOutlineColor:[CCColor redColor] fillColor:[CCColor blackColor] outlineWidth:3 fieldScale:32];
25+
return [self initWithOutlineColor:[CCColor redColor] fillColor:[CCColor blackColor] outlineWidth:3 fieldScale:32 distanceField:[CCTexture none]];
2326
}
2427

25-
-(id)initWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale
28+
-(id)initWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale distanceField:(CCTexture*)distanceField
2629
{
2730
NSArray *uniforms = @[
2831
[CCEffectUniform uniform:@"vec4" name:@"u_fillColor" value:[NSValue valueWithGLKVector4:[CCColor blackColor].glkVector4]],
@@ -37,15 +40,16 @@ -(id)initWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor o
3740
self.outlineWidth = 3;
3841
_fillColor = fillColor;
3942
_outlineColor = outlineColor;
43+
_distanceField = distanceField;
4044

4145
self.debugName = @"CCEffectDFOutline";
4246
}
4347
return self;
4448
}
4549

46-
+(id)effectWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale
50+
+(id)effectWithOutlineColor:(CCColor*)outlineColor fillColor:(CCColor*)fillColor outlineWidth:(int)outlineWidth fieldScale:(float)fieldScale distanceField:(CCTexture*)distanceField
4751
{
48-
return [[self alloc] initWithOutlineColor:outlineColor fillColor:fillColor outlineWidth:outlineWidth fieldScale:fieldScale];
52+
return [[self alloc] initWithOutlineColor:outlineColor fillColor:fillColor outlineWidth:outlineWidth fieldScale:fieldScale distanceField:distanceField];
4953
}
5054

5155
-(void)buildFragmentFunctions
@@ -54,8 +58,10 @@ -(void)buildFragmentFunctions
5458

5559
NSString* effectBody = CC_GLSL(
5660
vec4 outputColor = u_fillColor;
57-
outputColor.a = 1.0;
58-
float distAlphaMask = texture2D(cc_MainTexture, cc_FragTexCoord1).r;
61+
if(u_fillColor.a == 0.0)
62+
outputColor = texture2D(cc_MainTexture, cc_FragTexCoord1);
63+
64+
float distAlphaMask = texture2D(cc_NormalMapTexture, cc_FragTexCoord1).r;
5965

6066
float center = 0.5;
6167
float transition = fwidth(distAlphaMask) * 1.0;
@@ -65,14 +71,14 @@ -(void)buildFragmentFunctions
6571

6672
// soft edges
6773
outputColor.a *= smoothstep(min, max, distAlphaMask);
68-
74+
6975
min = u_outlineOuterWidth.x;
7076
max = u_outlineOuterWidth.y;
77+
7178
if(min == 0.5 && max == 0.5)
7279
return outputColor;
7380

74-
vec4 glowTexel = texture2D(cc_MainTexture, cc_FragTexCoord1);
75-
81+
vec4 glowTexel = texture2D(cc_NormalMapTexture, cc_FragTexCoord1);
7682

7783
vec4 glowc = u_outlineColor * smoothstep(min, max, glowTexel.r);
7884

@@ -97,6 +103,7 @@ -(void)buildRenderPasses
97103
pass0.blendMode = [CCBlendMode premultipliedAlphaMode];
98104
pass0.beginBlocks = @[[^(CCEffectRenderPass *pass, CCTexture *previousPassTexture) {
99105

106+
pass.shaderUniforms[CCShaderUniformNormalMapTexture] = weakSelf.distanceField;
100107
pass.shaderUniforms[CCShaderUniformMainTexture] = previousPassTexture;
101108
pass.shaderUniforms[CCShaderUniformPreviousPassTexture] = previousPassTexture;
102109

@@ -125,3 +132,5 @@ -(void)setOutlineWidth:(int)outlineWidth
125132
}
126133

127134
@end
135+
136+
#endif

cocos2d/CCRenderTexture.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ -(void)create
180180

181181
-(void)createTextureAndFboWithPixelSize:(CGSize)pixelSize
182182
{
183-
glPushGroupMarkerEXT(0, "CCRenderTexture: Create");
183+
CCGL_DEBUG_PUSH_GROUP_MARKER("CCRenderTexture: Create");
184184

185185
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_oldFBO);
186186

cocos2d/cocos2d.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
#import "CCEffectReflection.h"
7676
#import "CCEffectRefraction.h"
7777
#import "CCEffectSaturation.h"
78-
#import "CCEffectDistanceField.h"
7978
#import "CCEffectStack.h"
8079
#import "CCLabelBMFont.h"
8180
#import "CCLabelTTF.h"
@@ -101,7 +100,11 @@
101100
#import "CCTiledMapLayer.h"
102101
#import "CCTiledMapObjectGroup.h"
103102
#import "CCTransition.h"
103+
104+
#if CC_EFFECTS_EXPERIMENTAL
104105
#import "CCEffectDFOutline.h"
106+
#import "CCEffectDistanceField.h"
107+
#endif
105108

106109
// Layouts
107110
#import "CCLayout.h"

0 commit comments

Comments
 (0)