@@ -411,11 +411,7 @@ var TextureTintPipeline = new Class({
411411
412412 var roundPixels = camera . roundPixels ;
413413 var emitters = emitterManager . emitters . list ;
414- var emitterCount = emitters . length ;
415- var vertexViewF32 = this . vertexViewF32 ;
416- var vertexViewU32 = this . vertexViewU32 ;
417414 var renderer = this . renderer ;
418- var maxQuads = this . maxQuads ;
419415 var cameraScrollX = camera . scrollX ;
420416 var cameraScrollY = camera . scrollY ;
421417 var cameraMatrix = camera . matrix . matrix ;
@@ -427,8 +423,6 @@ var TextureTintPipeline = new Class({
427423 var cmf = cameraMatrix [ 5 ] ;
428424 var sin = Math . sin ;
429425 var cos = Math . cos ;
430- var vertexComponentCount = this . vertexComponentCount ;
431- var vertexCapacity = this . vertexCapacity ;
432426 var texture = emitterManager . defaultFrame . source . glTexture ;
433427 var pca , pcb , pcc , pcd , pce , pcf ;
434428 var pma , pmb , pmc , pmd , pme , pmf ;
@@ -445,13 +439,11 @@ var TextureTintPipeline = new Class({
445439
446440 this . setTexture2D ( texture , 0 ) ;
447441
448- for ( var emitterIndex = 0 ; emitterIndex < emitterCount ; ++ emitterIndex )
442+ for ( var e = 0 ; e < emitters . length ; e ++ )
449443 {
450- var emitter = emitters [ emitterIndex ] ;
444+ var emitter = emitters [ e ] ;
451445 var particles = emitter . alive ;
452446 var aliveLength = particles . length ;
453- var batchCount = Math . ceil ( aliveLength / maxQuads ) ;
454- var particleOffset = 0 ;
455447 var scrollX = cameraScrollX * emitter . scrollFactorX ;
456448 var scrollY = cameraScrollY * emitter . scrollFactorY ;
457449
@@ -486,137 +478,67 @@ var TextureTintPipeline = new Class({
486478
487479 renderer . setBlendMode ( emitter . blendMode ) ;
488480
489- if ( this . vertexCount >= vertexCapacity )
490- {
491- this . flush ( ) ;
492- this . setTexture2D ( texture , 0 ) ;
493- }
494-
495481 var tintEffect = false ;
496482
497- for ( var batchIndex = 0 ; batchIndex < batchCount ; ++ batchIndex )
483+ for ( var i = 0 ; i < aliveLength ; i ++ )
498484 {
499- var batchSize = Math . min ( aliveLength , maxQuads ) ;
485+ var particle = particles [ i ] ;
500486
501- for ( var index = 0 ; index < batchSize ; ++ index )
487+ if ( particle . alpha < = 0 )
502488 {
503- var particle = particles [ particleOffset + index ] ;
504-
505- if ( particle . alpha <= 0 )
506- {
507- continue ;
508- }
509-
510- var frame = particle . frame ;
511- var uvs = frame . uvs ;
512- var x = - ( frame . halfWidth ) ;
513- var y = - ( frame . halfHeight ) ;
514- var color = particle . color ;
515- var xw = x + frame . width ;
516- var yh = y + frame . height ;
517- var sr = sin ( particle . rotation ) ;
518- var cr = cos ( particle . rotation ) ;
519-
520- var sra = cr * particle . scaleX ;
521- var srb = sr * particle . scaleX ;
522- var src = - sr * particle . scaleY ;
523- var srd = cr * particle . scaleY ;
524- var sre = particle . x - scrollX ;
525- var srf = particle . y - scrollY ;
526-
527- var mva = sra * cma + srb * cmc ;
528- var mvb = sra * cmb + srb * cmd ;
529- var mvc = src * cma + srd * cmc ;
530- var mvd = src * cmb + srd * cmd ;
531- var mve = sre * cma + srf * cmc + cme ;
532- var mvf = sre * cmb + srf * cmd + cmf ;
533-
534- var tx0 = x * mva + y * mvc + mve ;
535- var ty0 = x * mvb + y * mvd + mvf ;
536- var tx1 = x * mva + yh * mvc + mve ;
537- var ty1 = x * mvb + yh * mvd + mvf ;
538- var tx2 = xw * mva + yh * mvc + mve ;
539- var ty2 = xw * mvb + yh * mvd + mvf ;
540- var tx3 = xw * mva + y * mvc + mve ;
541- var ty3 = xw * mvb + y * mvd + mvf ;
542-
543- if ( roundPixels )
544- {
545- tx0 |= 0 ;
546- ty0 |= 0 ;
547- tx1 |= 0 ;
548- ty1 |= 0 ;
549- tx2 |= 0 ;
550- ty2 |= 0 ;
551- tx3 |= 0 ;
552- ty3 |= 0 ;
553- }
554-
555- var vertexOffset = ( this . vertexCount * vertexComponentCount ) - 1 ;
556-
557- vertexViewF32 [ ++ vertexOffset ] = tx0 ;
558- vertexViewF32 [ ++ vertexOffset ] = ty0 ;
559- vertexViewF32 [ ++ vertexOffset ] = uvs . x0 ;
560- vertexViewF32 [ ++ vertexOffset ] = uvs . y0 ;
561- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
562- vertexViewU32 [ ++ vertexOffset ] = color ;
563-
564- vertexViewF32 [ ++ vertexOffset ] = tx1 ;
565- vertexViewF32 [ ++ vertexOffset ] = ty1 ;
566- vertexViewF32 [ ++ vertexOffset ] = uvs . x1 ;
567- vertexViewF32 [ ++ vertexOffset ] = uvs . y1 ;
568- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
569- vertexViewU32 [ ++ vertexOffset ] = color ;
570-
571- vertexViewF32 [ ++ vertexOffset ] = tx2 ;
572- vertexViewF32 [ ++ vertexOffset ] = ty2 ;
573- vertexViewF32 [ ++ vertexOffset ] = uvs . x2 ;
574- vertexViewF32 [ ++ vertexOffset ] = uvs . y2 ;
575- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
576- vertexViewU32 [ ++ vertexOffset ] = color ;
577-
578- vertexViewF32 [ ++ vertexOffset ] = tx0 ;
579- vertexViewF32 [ ++ vertexOffset ] = ty0 ;
580- vertexViewF32 [ ++ vertexOffset ] = uvs . x0 ;
581- vertexViewF32 [ ++ vertexOffset ] = uvs . y0 ;
582- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
583- vertexViewU32 [ ++ vertexOffset ] = color ;
584-
585- vertexViewF32 [ ++ vertexOffset ] = tx2 ;
586- vertexViewF32 [ ++ vertexOffset ] = ty2 ;
587- vertexViewF32 [ ++ vertexOffset ] = uvs . x2 ;
588- vertexViewF32 [ ++ vertexOffset ] = uvs . y2 ;
589- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
590- vertexViewU32 [ ++ vertexOffset ] = color ;
591-
592- vertexViewF32 [ ++ vertexOffset ] = tx3 ;
593- vertexViewF32 [ ++ vertexOffset ] = ty3 ;
594- vertexViewF32 [ ++ vertexOffset ] = uvs . x3 ;
595- vertexViewF32 [ ++ vertexOffset ] = uvs . y3 ;
596- vertexViewF32 [ ++ vertexOffset ] = tintEffect ;
597- vertexViewU32 [ ++ vertexOffset ] = color ;
598-
599- this . vertexCount += 6 ;
600-
601- if ( this . vertexCount >= vertexCapacity )
602- {
603- this . flush ( ) ;
604- this . setTexture2D ( texture , 0 ) ;
605- }
489+ continue ;
606490 }
607491
608- particleOffset += batchSize ;
609- aliveLength -= batchSize ;
492+ var frame = particle . frame ;
493+ var x = - ( frame . halfWidth ) ;
494+ var y = - ( frame . halfHeight ) ;
495+ var color = particle . color ;
496+ var xw = x + frame . width ;
497+ var yh = y + frame . height ;
498+ var sr = sin ( particle . rotation ) ;
499+ var cr = cos ( particle . rotation ) ;
500+
501+ var sra = cr * particle . scaleX ;
502+ var srb = sr * particle . scaleX ;
503+ var src = - sr * particle . scaleY ;
504+ var srd = cr * particle . scaleY ;
505+ var sre = particle . x - scrollX ;
506+ var srf = particle . y - scrollY ;
507+
508+ var mva = sra * cma + srb * cmc ;
509+ var mvb = sra * cmb + srb * cmd ;
510+ var mvc = src * cma + srd * cmc ;
511+ var mvd = src * cmb + srd * cmd ;
512+ var mve = sre * cma + srf * cmc + cme ;
513+ var mvf = sre * cmb + srf * cmd + cmf ;
514+
515+ var tx0 = x * mva + y * mvc + mve ;
516+ var ty0 = x * mvb + y * mvd + mvf ;
517+ var tx1 = x * mva + yh * mvc + mve ;
518+ var ty1 = x * mvb + yh * mvd + mvf ;
519+ var tx2 = xw * mva + yh * mvc + mve ;
520+ var ty2 = xw * mvb + yh * mvd + mvf ;
521+ var tx3 = xw * mva + y * mvc + mve ;
522+ var ty3 = xw * mvb + y * mvd + mvf ;
523+
524+ if ( roundPixels )
525+ {
526+ tx0 |= 0 ;
527+ ty0 |= 0 ;
528+ tx1 |= 0 ;
529+ ty1 |= 0 ;
530+ tx2 |= 0 ;
531+ ty2 |= 0 ;
532+ tx3 |= 0 ;
533+ ty3 |= 0 ;
534+ }
610535
611- if ( this . vertexCount >= vertexCapacity )
536+ if ( this . batchVertices ( tx0 , ty0 , tx1 , ty1 , tx2 , ty2 , tx3 , ty3 , frame . u0 , frame . v0 , frame . u1 , frame . v1 , color , color , color , color , tintEffect ) )
612537 {
613- this . flush ( ) ;
614538 this . setTexture2D ( texture , 0 ) ;
615539 }
616540 }
617541 }
618-
619- this . setTexture2D ( texture , 0 ) ;
620542 } ,
621543
622544 /**
0 commit comments