@@ -297,93 +297,84 @@ + (NSSet *)defaultEffectVertexUniformNames
297
297
298
298
299
299
-(id )init
300
+ {
301
+ return [self initWithFragmentFunction: nil vertexFunctions: nil fragmentUniforms: nil vertexUniforms: nil varying: nil ];
302
+ }
303
+
304
+ -(id )initWithFragmentUniforms : (NSArray *)fragmentUniforms vertexUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
305
+ {
306
+ return [self initWithFragmentFunction: nil vertexFunctions: nil fragmentUniforms: fragmentUniforms vertexUniforms: vertexUniforms varying: varying];
307
+ }
308
+
309
+ -(id )initWithFragmentFunction : (NSMutableArray *) fragmentFunctions fragmentUniforms : (NSArray *)fragmentUniforms vertexUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
310
+ {
311
+ return [self initWithFragmentFunction: fragmentFunctions vertexFunctions: nil fragmentUniforms: fragmentUniforms vertexUniforms: vertexUniforms varying: varying];
312
+ }
313
+
314
+ -(id )initWithFragmentFunction : (NSMutableArray *) fragmentFunctions vertexFunctions : (NSMutableArray *)vertexFunctions fragmentUniforms : (NSArray *)fragmentUniforms vertexUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
300
315
{
301
316
if ((self = [super init ]))
302
317
{
303
- _fragmentUniforms = [[CCEffect defaultEffectFragmentUniforms ] copy ];
304
- _vertexUniforms = [[CCEffect defaultEffectVertexUniforms ] copy ];
305
- _fragmentFunctions = [[NSMutableArray alloc ] init ];
306
- _vertexFunctions = [[NSMutableArray alloc ] init ];
307
- _stitchFlags = CCEffectFunctionStitchBoth;
308
-
309
- [self buildUniformTranslationTable ];
310
- [self buildFragmentFunctions ];
311
- [self buildVertexFunctions ];
312
- [self buildEffectShader ];
313
- [self buildRenderPasses ];
314
-
315
- return self;
318
+ [self buildEffectWithFragmentFunction: fragmentFunctions vertexFunctions: vertexFunctions fragmentUniforms: fragmentUniforms vertexUniforms: vertexUniforms varying: varying];
316
319
}
317
-
318
320
return self;
319
321
}
320
322
321
- -( id ) initWithFragmentUniforms : ( NSArray *)fragmentUniforms vertextUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
323
+ - ( void ) buildEffectWithFragmentFunction : ( NSMutableArray *) fragmentFunctions vertexFunctions : ( NSMutableArray *) vertexFunctions fragmentUniforms : ( NSArray *)fragmentUniforms vertexUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
322
324
{
323
- if ((self = [super init ]))
325
+ if (fragmentFunctions)
326
+ {
327
+ _fragmentFunctions = fragmentFunctions;
328
+ }
329
+ else
324
330
{
325
- _fragmentUniforms = [[CCEffect defaultEffectFragmentUniforms ] arrayByAddingObjectsFromArray: fragmentUniforms];
326
- _vertexUniforms = [[CCEffect defaultEffectVertexUniforms ] arrayByAddingObjectsFromArray: vertexUniforms];
327
- _varyingVars = [varying copy ];
328
- _fragmentFunctions = [[NSMutableArray alloc ] init ];
329
- _vertexFunctions = [[NSMutableArray alloc ] init ];
330
- _stitchFlags = CCEffectFunctionStitchBoth;
331
-
332
- [self buildShaderUniforms: _fragmentUniforms vertexUniforms: _vertexUniforms];
333
- [self buildUniformTranslationTable ];
334
331
[self buildFragmentFunctions ];
332
+ }
333
+
334
+ if (vertexFunctions)
335
+ {
336
+ _vertexFunctions = vertexFunctions;
337
+ }
338
+ else
339
+ {
335
340
[self buildVertexFunctions ];
336
- [self buildEffectShader ];
337
- [self buildRenderPasses ];
338
-
339
- return self;
340
341
}
341
342
342
- return self;
343
- }
344
-
345
- -(id )initWithFragmentFunction : (NSMutableArray *) fragmentFunctions fragmentUniforms : (NSArray *)fragmentUniforms vertextUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
346
- {
347
- if ((self = [super init ]))
343
+ if (fragmentUniforms)
348
344
{
349
345
_fragmentUniforms = [[CCEffect defaultEffectFragmentUniforms ] arrayByAddingObjectsFromArray: fragmentUniforms];
346
+ }
347
+ else
348
+ {
349
+ _fragmentUniforms = [[CCEffect defaultEffectFragmentUniforms ] copy ];
350
+ }
351
+
352
+ if (vertexUniforms)
353
+ {
350
354
_vertexUniforms = [[CCEffect defaultEffectVertexUniforms ] arrayByAddingObjectsFromArray: vertexUniforms];
351
- _fragmentFunctions = fragmentFunctions;
352
- _varyingVars = [varying copy ];
353
- _stitchFlags = CCEffectFunctionStitchBoth;
354
-
355
- [self buildShaderUniforms: _fragmentUniforms vertexUniforms: _vertexUniforms];
356
- [self buildUniformTranslationTable ];
357
- [self buildVertexFunctions ];
358
- [self buildEffectShader ];
359
- [self buildRenderPasses ];
360
355
361
- return self;
356
+ }
357
+ else
358
+ {
359
+ _vertexUniforms = [[CCEffect defaultEffectVertexUniforms ] copy ];
362
360
}
363
361
364
- return self;
365
- }
366
-
367
- -(id )initWithFragmentFunction : (NSMutableArray *) fragmentFunctions vertexFunctions : (NSMutableArray *)vertextFunctions fragmentUniforms : (NSArray *)fragmentUniforms vertextUniforms : (NSArray *)vertexUniforms varying : (NSArray *)varying
368
- {
369
- if ((self = [super init ]))
362
+ if (varying)
370
363
{
371
- _fragmentUniforms = [[CCEffect defaultEffectFragmentUniforms ] arrayByAddingObjectsFromArray: fragmentUniforms];
372
- _vertexUniforms = [[CCEffect defaultEffectVertexUniforms ] arrayByAddingObjectsFromArray: vertexUniforms];
373
- _fragmentFunctions = fragmentFunctions;
374
- _vertexFunctions = vertextFunctions;
375
364
_varyingVars = [varying copy ];
376
- _stitchFlags = CCEffectFunctionStitchBoth;
377
-
378
- [self buildShaderUniforms: _fragmentUniforms vertexUniforms: _vertexUniforms];
379
- [self buildUniformTranslationTable ];
380
- [self buildEffectShader ];
381
- [self buildRenderPasses ];
382
-
383
- return self;
365
+ }
366
+ else
367
+ {
368
+ _varyingVars = nil ;
384
369
}
385
370
386
- return self;
371
+ _stitchFlags = CCEffectFunctionStitchBoth;
372
+
373
+ [self buildShaderUniforms: _fragmentUniforms vertexUniforms: _vertexUniforms];
374
+ [self buildUniformTranslationTable ];
375
+
376
+ [self buildEffectShader ];
377
+ [self buildRenderPasses ];
387
378
}
388
379
389
380
-(void )buildShaderUniforms : (NSArray *)fragmentUniforms vertexUniforms : (NSArray *)vertexUniforms
@@ -418,9 +409,6 @@ -(void)buildUniformTranslationTable
418
409
419
410
-(void )buildEffectShader
420
411
{
421
- if (_shader != nil )
422
- return ;
423
-
424
412
// Build varying vars
425
413
NSMutableString * varyingVarsToInsert = [[NSMutableString alloc ] init ];
426
414
for (CCEffectVarying* varying in _varyingVars)
@@ -459,11 +447,6 @@ -(void)buildEffectShader
459
447
}
460
448
461
449
[effectFunctionBody appendFormat: @" tmp = %@ ;\n " , [curFunction callStringWithInputs: inputs]];
462
- //
463
- // if([_fragmentFunctions lastObject] != curFunction)
464
- // [effectFunctionBody appendString:@" + "];
465
- // else
466
- // [effectFunctionBody appendString:@";"];
467
450
}
468
451
[effectFunctionBody appendString: @" return tmp;\n " ];
469
452
@@ -510,14 +493,14 @@ -(void)buildEffectShader
510
493
511
494
-(void )buildFragmentFunctions
512
495
{
513
- CCEffectFunction* fragmentFunction = [[CCEffectFunction alloc ] initWithName: @" defaultEffect " body: @" return cc_FragColor; " inputs: nil returnType: @" vec4 " ];
514
- [_fragmentFunctions addObject: fragmentFunction ];
496
+ _fragmentFunctions = [[NSMutableArray alloc ] init ];
497
+ [_fragmentFunctions addObject: [[CCEffectFunction alloc ] initWithName: @" defaultEffect " body: @" return cc_FragColor; " inputs: nil returnType: @" vec4 " ] ];
515
498
}
516
499
517
500
-(void )buildVertexFunctions
518
501
{
519
- CCEffectFunction* vertexFunction = [[CCEffectFunction alloc ] initWithName: @" defaultEffect " body: @" return cc_Position; " inputs: nil returnType: @" vec4 " ];
520
- [_vertexFunctions addObject: vertexFunction ];
502
+ _vertexFunctions = [[NSMutableArray alloc ] init ];
503
+ [_vertexFunctions addObject: [[CCEffectFunction alloc ] initWithName: @" defaultEffect " body: @" return cc_Position; " inputs: nil returnType: @" vec4 " ] ];
521
504
}
522
505
523
506
-(void )buildRenderPasses
0 commit comments