@galacean/effects-threejs 2.4.8 → 2.5.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime threejs plugin for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.4.8
6
+ * Version: v2.5.0-alpha.0
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -343,11 +343,6 @@ function colorToArr$1(hex, normalized) {
343
343
  parseInt(m[2], 16),
344
344
  parseInt(m[3], 16),
345
345
  255
346
- ] || [
347
- 0,
348
- 0,
349
- 0,
350
- 255
351
346
  ];
352
347
  }
353
348
  } else if (_instanceof1(hex, Array)) {
@@ -10210,7 +10205,7 @@ var itemFrame_frag = "#version 100\nprecision highp float;vec4 blendColor(vec4 c
10210
10205
 
10211
10206
  var integrate = "float calculateMovement(float t,vec2 p1,vec2 p2,vec2 p3,vec2 p4){float movement=0.0;float h=(t-p1.x)*0.05;for(int i=0;i<=20;i++){float t=float(i)*h;float nt=binarySearchT(t,p1.x,p2.x,p3.x,p4.x);float y=cubicBezier(nt,p1.y,p2.y,p3.y,p4.y);float weight=(i==0||i==20)? 1.0 :(mod(float(i),2.)!=0.)? 4.0 : 2.0;movement+=weight*y;}movement*=h/3.;return movement;}float integrateFromBezierCurveFrames(float time,float frameStart,float frameCount){int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i+=2){vec4 k0=lookup_curve(i+start);vec4 k1=lookup_curve(i+1+start);if(i==0&&time<k0.x){return ret;}vec2 p1=vec2(k0.x,k0.y);vec2 p2=vec2(k0.z,k0.w);vec2 p3=vec2(k1.z,k1.w);vec2 p4=vec2(k1.x,k1.y);if(time>=k1.x){ret+=calculateMovement(k1.x,p1,p2,p3,p4);}if(time>=k0.x&&time<k1.x){return ret+calculateMovement(time,p1,p2,p3,p4);}}return ret;}float integrateByTimeLineSeg(float t,vec2 p0,vec2 p1){float t0=p0.x;float t1=p1.x;float y0=p0.y;float y1=p1.y;vec4 tSqr=vec4(t,t,t0,t0);tSqr=tSqr*tSqr;vec4 a=vec4(2.*t,3.,-t0,3.)*tSqr;float t1y0=t1*y0;vec4 b=vec4(y0-y1,t0*y1-t1y0,2.*y0+y1,t1y0);float r=dot(a,b);return r/(t0-t1)*0.16666667;}float integrateLineSeg(float time,vec2 p0,vec2 p1){float h=time-p0.x;float y0=p0.y;return(y0+y0+(p1.y-y0)*h/(p1.x-p0.x))*h/2.;}float integrateFromLineSeg(float time,float frameStart,float frameCount){if(time==0.){return 0.;}int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i++){if(i>count){return ret;}vec4 ks=lookup_curve(i+start);vec2 k0=ks.xy;vec2 k1=ks.zw;if(time>k0.x&&time<=k1.x){return ret+integrateLineSeg(time,k0,k1);}ret+=integrateLineSeg(k1.x,k0,k1);vec2 k2=lookup_curve(i+start+1).xy;if(time>k1.x&&time<=k2.x){return ret+integrateLineSeg(time,k1,k2);}ret+=integrateLineSeg(k2.x,k1,k2);}return ret;}float integrateByTimeFromLineSeg(float time,float frameStart,float frameCount){if(time==0.){return 0.;}int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i++){if(i>count){return ret;}vec4 ks=lookup_curve(i+start);vec2 k0=ks.xy;vec2 k1=ks.zw;if(time>k0.x&&time<=k1.x){return ret+integrateByTimeLineSeg(time,k0,k1);}ret+=integrateByTimeLineSeg(k1.x,k0,k1);vec2 k2=lookup_curve(i+start+1).xy;if(time>k1.x&&time<=k2.x){return ret+integrateByTimeLineSeg(time,k1,k2);}ret+=integrateByTimeLineSeg(k2.x,k1,k2);}return ret;}float getIntegrateFromTime0(float t1,vec4 value){float type=value.x;if(type==0.){return value.y*t1;}if(type==1.){vec2 p0=vec2(0.,value.y);vec2 p1=vec2(value.w,value.z);return integrateLineSeg(t1,p0,p1);}if(type==3.){return integrateFromLineSeg(t1,value.y,value.z);}if(type==4.){return mix(value.y,value.z,aSeed)*t1;}if(type==5.){return integrateFromBezierCurveFrames(t1,value.z,value.w);}return 0.;}float getIntegrateByTimeFromTime(float t0,float t1,vec4 value){float type=value.x;if(type==0.){return value.y*(t1*t1-t0*t0)/2.;}else if(type==1.){vec2 p0=vec2(0.,value.y);vec2 p1=vec2(value.w,value.z);return integrateByTimeLineSeg(t1,p0,p1)-integrateByTimeLineSeg(t0,p0,p1);}if(type==3.){return integrateByTimeFromLineSeg(t1,value.y,value.z)-integrateByTimeFromLineSeg(t0,value.y,value.z);}if(type==4.){return mix(value.y,value.z,aSeed)*(t1*t1-t0*t0)/2.;}if(type==5.){return integrateFromBezierCurveFrames(t1,value.z,value.w)-integrateFromBezierCurveFrames(t0,value.z,value.w);}return 0.;}";
10212
10207
 
10213
- var itemVert = "precision highp float;attribute vec2 atlasOffset;attribute vec3 aPos;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform mat4 effects_MatrixVP;uniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nvoid main(){vec4 texParams=_TexParams;vTexCoord=vec2(atlasOffset.xy*_TexOffset.zw+_TexOffset.xy);vColor=_Color;vParams=vec3(texParams.w,texParams.y,texParams.x);if(texParams.z==1.0){vec4 pos=vec4(aPos.xy*_Size,aPos.z,1.0);gl_Position=effects_MatrixVP*effects_ObjectToWorld*pos;}else{mat4 view=effects_MatrixV;vec3 camRight=vec3(view[0][0],view[1][0],view[2][0]);vec3 camUp=vec3(view[0][1],view[1][1],view[2][1]);vec3 worldPosition=vec3(effects_ObjectToWorld*vec4(0.0,0.0,0.0,1.0));vec3 vertexPosition=worldPosition+camRight*aPos.x*_Size.x*_Scale.x+camUp*aPos.y*_Size.y*_Scale.y;gl_Position=effects_MatrixVP*vec4(vertexPosition,1.0);}\n#ifdef ENV_EDITOR\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
10208
+ var itemVert = "precision highp float;attribute vec2 aUV;attribute vec3 aPos;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform mat4 effects_MatrixVP;uniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nvoid main(){vec4 texParams=_TexParams;vTexCoord=vec2(aUV.xy*_TexOffset.zw+_TexOffset.xy);vColor=_Color;vParams=vec3(texParams.w,texParams.y,texParams.x);if(texParams.z==1.0){vec4 pos=vec4(aPos.xy*_Size,aPos.z,1.0);gl_Position=effects_MatrixVP*effects_ObjectToWorld*pos;}else{mat4 view=effects_MatrixV;vec3 camRight=vec3(view[0][0],view[1][0],view[2][0]);vec3 camUp=vec3(view[0][1],view[1][1],view[2][1]);vec3 worldPosition=vec3(effects_ObjectToWorld*vec4(0.0,0.0,0.0,1.0));vec3 vertexPosition=worldPosition+camRight*aPos.x*_Size.x*_Scale.x+camUp*aPos.y*_Size.y*_Scale.y;gl_Position=effects_MatrixVP*vec4(vertexPosition,1.0);}\n#ifdef ENV_EDITOR\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
10214
10209
 
10215
10210
  var itemFrag = "precision highp float;varying vec4 vColor;varying vec2 vTexCoord;varying vec3 vParams;uniform sampler2D _MainTex;vec4 blendColor(vec4 color,vec4 vc,float mode){vec4 ret=color*vc;float alpha=ret.a;if(mode==1.){ret.rgb*=alpha;}else if(mode==2.){ret.rgb*=alpha;ret.a=dot(ret.rgb,vec3(0.33333333));}else if(mode==3.){alpha=color.r*alpha;ret=vec4(vc.rgb*alpha,alpha);}return ret;}void main(){vec4 color=vec4(0.);\n#ifdef TRANSPARENT_VIDEO\nfloat halfX=vTexCoord.x*0.5;vec2 uv_rgb=vec2(halfX,vTexCoord.y);vec2 uv_alpha=vec2(halfX+0.5,vTexCoord.y);vec3 rgb=texture2D(_MainTex,uv_rgb).rgb;float alpha=max(texture2D(_MainTex,uv_alpha).r,1e-5);vec4 texColor=vec4(rgb/alpha,alpha);\n#else\nvec4 texColor=texture2D(_MainTex,vTexCoord.xy);\n#endif\ncolor=blendColor(texColor,vColor,floor(0.5+vParams.y));\n#ifdef ALPHA_CLIP\nif(color.a<0.04){discard;}\n#endif\ncolor.a=clamp(color.a,0.0,1.0);gl_FragColor=color;}";
10216
10211
 
@@ -12446,6 +12441,15 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12446
12441
  return out;
12447
12442
  }
12448
12443
 
12444
+ var singleSplits = [
12445
+ [
12446
+ 0,
12447
+ 0,
12448
+ 1,
12449
+ 1,
12450
+ undefined
12451
+ ]
12452
+ ];
12449
12453
  /**
12450
12454
  * @since 2.1.0
12451
12455
  */ var BaseRenderComponent = /*#__PURE__*/ function(RendererComponent) {
@@ -12453,11 +12457,12 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12453
12457
  function BaseRenderComponent(engine) {
12454
12458
  var _this;
12455
12459
  _this = RendererComponent.call(this, engine) || this;
12456
- _this.color = new Color(1, 1, 1, 1);
12457
12460
  _this.visible = true;
12461
+ _this.splits = singleSplits;
12458
12462
  /**
12459
12463
  * 用于点击测试的碰撞器
12460
12464
  */ _this.meshCollider = new MeshCollider();
12465
+ _this._color = new Color(1, 1, 1, 1);
12461
12466
  // TODO 点击测试后续抽象一个 Collider 组件
12462
12467
  _this.getHitTestParams = function(force) {
12463
12468
  var sizeMatrix = Matrix4.fromScale(_this.transform.size.x, _this.transform.size.y, 1);
@@ -12488,6 +12493,58 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12488
12493
  mask: 0,
12489
12494
  alphaMask: false
12490
12495
  };
12496
+ _this.defaultGeometry = Geometry.create(_this.engine, {
12497
+ attributes: {
12498
+ aPos: {
12499
+ type: glContext.FLOAT,
12500
+ size: 3,
12501
+ data: new Float32Array([
12502
+ -0.5,
12503
+ 0.5,
12504
+ 0,
12505
+ -0.5,
12506
+ -0.5,
12507
+ 0,
12508
+ 0.5,
12509
+ 0.5,
12510
+ 0,
12511
+ 0.5,
12512
+ -0.5,
12513
+ 0
12514
+ ])
12515
+ },
12516
+ aUV: {
12517
+ size: 2,
12518
+ offset: 0,
12519
+ releasable: true,
12520
+ type: glContext.FLOAT,
12521
+ data: new Float32Array([
12522
+ 0,
12523
+ 1,
12524
+ 0,
12525
+ 0,
12526
+ 1,
12527
+ 1,
12528
+ 1,
12529
+ 0
12530
+ ])
12531
+ }
12532
+ },
12533
+ indices: {
12534
+ data: new Uint16Array([
12535
+ 0,
12536
+ 1,
12537
+ 2,
12538
+ 2,
12539
+ 1,
12540
+ 3
12541
+ ]),
12542
+ releasable: true
12543
+ },
12544
+ mode: glContext.TRIANGLES,
12545
+ drawCount: 6
12546
+ });
12547
+ _this.geometry = _this.defaultGeometry;
12491
12548
  var material = Material.create(_this.engine, {
12492
12549
  shader: {
12493
12550
  fragment: itemFrag,
@@ -12496,12 +12553,7 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12496
12553
  }
12497
12554
  });
12498
12555
  _this.material = material;
12499
- _this.material.setColor("_Color", new Color().setFromArray([
12500
- 1,
12501
- 1,
12502
- 1,
12503
- 1
12504
- ]));
12556
+ _this.material.setColor("_Color", new Color(1, 1, 1, 1));
12505
12557
  _this.maskManager = new MaskProcessor(engine);
12506
12558
  return _this;
12507
12559
  }
@@ -12521,11 +12573,11 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12521
12573
  };
12522
12574
  _proto.setColor = function setColor(color) {
12523
12575
  if (_instanceof1(color, Color)) {
12524
- this.color.copyFrom(color);
12576
+ this._color.copyFrom(color);
12525
12577
  } else {
12526
- this.color.setFromArray(color);
12578
+ this._color.setFromArray(color);
12527
12579
  }
12528
- this.material.setColor("_Color", this.color);
12580
+ this.material.setColor("_Color", this._color);
12529
12581
  };
12530
12582
  _proto.setTexture = function setTexture(input) {
12531
12583
  var _this = this;
@@ -12588,98 +12640,143 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12588
12640
  var boundingBox = this.meshCollider.getBoundingBox();
12589
12641
  return boundingBox;
12590
12642
  };
12591
- _proto.getItemGeometryData = function getItemGeometryData(geometry) {
12592
- var renderer = this.renderer;
12643
+ _proto.getItemGeometryData = function getItemGeometryData(renderer) {
12644
+ var _this = this, splits = _this.splits, textureSheetAnimation = _this.textureSheetAnimation;
12645
+ var sx = 1, sy = 1;
12646
+ var geometry = this.defaultGeometry;
12593
12647
  if (renderer.shape) {
12594
12648
  var _renderer_shape = renderer.shape, _renderer_shape_index = _renderer_shape.index, index = _renderer_shape_index === void 0 ? [] : _renderer_shape_index, _renderer_shape_aPoint = _renderer_shape.aPoint, aPoint = _renderer_shape_aPoint === void 0 ? [] : _renderer_shape_aPoint;
12595
12649
  var point = new Float32Array(aPoint);
12596
12650
  var position = [];
12597
- var atlasOffset = [];
12651
+ var aUV = [];
12598
12652
  for(var i = 0; i < point.length; i += 6){
12599
- atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);
12653
+ point[i] *= sx;
12654
+ point[i + 1] *= sy;
12655
+ aUV.push(aPoint[i + 2], aPoint[i + 3]);
12600
12656
  position.push(point[i], point[i + 1], 0.0);
12601
12657
  }
12602
12658
  geometry.setAttributeData("aPos", new Float32Array(position));
12603
12659
  return {
12604
12660
  index: index,
12605
- atlasOffset: atlasOffset
12661
+ aUV: aUV
12606
12662
  };
12607
- } else {
12608
- geometry.setAttributeData("aPos", new Float32Array([
12609
- -0.5,
12610
- 0.5,
12663
+ }
12664
+ var originData = [
12665
+ -.5,
12666
+ .5,
12667
+ -.5,
12668
+ -.5,
12669
+ .5,
12670
+ .5,
12671
+ .5,
12672
+ -.5
12673
+ ];
12674
+ var aUV1 = [];
12675
+ var index1 = [];
12676
+ var position1 = [];
12677
+ if (splits.length === 1) {
12678
+ var split = textureSheetAnimation ? [
12611
12679
  0,
12612
- -0.5,
12613
- -0.5,
12614
12680
  0,
12615
- 0.5,
12616
- 0.5,
12681
+ 1,
12682
+ 1,
12683
+ splits[0][4]
12684
+ ] : splits[0];
12685
+ var texOffset = split[4] ? [
12617
12686
  0,
12618
- 0.5,
12619
- -0.5,
12687
+ 0,
12688
+ 1,
12689
+ 0,
12690
+ 0,
12691
+ 1,
12692
+ 1,
12693
+ 1
12694
+ ] : [
12695
+ 0,
12696
+ 1,
12697
+ 0,
12698
+ 0,
12699
+ 1,
12700
+ 1,
12701
+ 1,
12620
12702
  0
12621
- ]));
12622
- return {
12623
- index: [
12624
- 0,
12625
- 1,
12626
- 2,
12627
- 2,
12628
- 1,
12629
- 3
12630
- ],
12631
- atlasOffset: [
12632
- 0,
12633
- 1,
12634
- 0,
12635
- 0,
12636
- 1,
12637
- 1,
12638
- 1,
12639
- 0
12640
- ]
12641
- };
12642
- }
12643
- };
12644
- _proto.createGeometry = function createGeometry() {
12645
- var geometry = Geometry.create(this.engine, {
12646
- attributes: {
12647
- aPos: {
12648
- type: glContext.FLOAT,
12649
- size: 3,
12650
- data: new Float32Array([
12651
- -0.5,
12652
- 0.5,
12703
+ ];
12704
+ var tox = split[0];
12705
+ var toy = split[1];
12706
+ var tsx = split[4] ? split[3] : split[2];
12707
+ var tsy = split[4] ? split[2] : split[3];
12708
+ aUV1.push(texOffset[0] * tsx + tox, texOffset[1] * tsy + toy, texOffset[2] * tsx + tox, texOffset[3] * tsy + toy, texOffset[4] * tsx + tox, texOffset[5] * tsy + toy, texOffset[6] * tsx + tox, texOffset[7] * tsy + toy);
12709
+ position1.push(originData[0], originData[1], 0.0, originData[2], originData[3], 0.0, originData[4], originData[5], 0.0, originData[6], originData[7], 0.0);
12710
+ index1.push(0, 1, 2, 2, 1, 3);
12711
+ } else {
12712
+ // TODO: 原有打包纹理拆分逻辑,待移除
12713
+ //-------------------------------------------------------------------------
12714
+ var col = 2;
12715
+ var row = 2;
12716
+ for(var x = 0; x < col; x++){
12717
+ for(var y = 0; y < row; y++){
12718
+ var base = (y * 2 + x) * 4;
12719
+ // @ts-expect-error
12720
+ var split1 = textureSheetAnimation ? [
12653
12721
  0,
12654
- -0.5,
12655
- -0.5,
12656
12722
  0,
12657
- 0.5,
12658
- 0.5,
12723
+ 1,
12724
+ 1,
12725
+ splits[0][4]
12726
+ ] : splits[y * 2 + x];
12727
+ var texOffset1 = split1[4] ? [
12659
12728
  0,
12660
- 0.5,
12661
- -0.5,
12729
+ 0,
12730
+ 1,
12731
+ 0,
12732
+ 0,
12733
+ 1,
12734
+ 1,
12735
+ 1
12736
+ ] : [
12737
+ 0,
12738
+ 1,
12739
+ 0,
12740
+ 0,
12741
+ 1,
12742
+ 1,
12743
+ 1,
12662
12744
  0
12663
- ])
12664
- },
12665
- atlasOffset: {
12666
- size: 2,
12667
- offset: 0,
12668
- releasable: true,
12669
- type: glContext.FLOAT,
12670
- data: new Float32Array(0)
12745
+ ];
12746
+ var dw = ((x + x + 1) / col - 1) / 2;
12747
+ var dh = ((y + y + 1) / row - 1) / 2;
12748
+ var tox1 = split1[0];
12749
+ var toy1 = split1[1];
12750
+ var tsx1 = split1[4] ? split1[3] : split1[2];
12751
+ var tsy1 = split1[4] ? split1[2] : split1[3];
12752
+ var origin = [
12753
+ originData[0] / col + dw,
12754
+ originData[1] / row + dh,
12755
+ originData[2] / col + dw,
12756
+ originData[3] / row + dh,
12757
+ originData[4] / col + dw,
12758
+ originData[5] / row + dh,
12759
+ originData[6] / col + dw,
12760
+ originData[7] / row + dh
12761
+ ];
12762
+ aUV1.push(texOffset1[0] * tsx1 + tox1, texOffset1[1] * tsy1 + toy1, texOffset1[2] * tsx1 + tox1, texOffset1[3] * tsy1 + toy1, texOffset1[4] * tsx1 + tox1, texOffset1[5] * tsy1 + toy1, texOffset1[6] * tsx1 + tox1, texOffset1[7] * tsy1 + toy1);
12763
+ position1.push(origin[0] * sx, origin[1] * sy, 0.0, origin[2] * sx, origin[3] * sy, 0.0, origin[4] * sx, origin[5] * sy, 0.0, origin[6] * sx, origin[7] * sy, 0.0);
12764
+ index1.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);
12671
12765
  }
12672
- },
12673
- indices: {
12674
- data: new Uint16Array(0),
12675
- releasable: true
12676
- },
12677
- mode: glContext.TRIANGLES
12678
- });
12679
- var geoData = this.getItemGeometryData(geometry);
12680
- var index = geoData.index, atlasOffset = geoData.atlasOffset;
12766
+ }
12767
+ }
12768
+ geometry.setAttributeData("aPos", new Float32Array(position1));
12769
+ return {
12770
+ index: index1,
12771
+ aUV: aUV1
12772
+ };
12773
+ };
12774
+ _proto.configureDefaultGeometry = function configureDefaultGeometry(renderer) {
12775
+ var geoData = this.getItemGeometryData(renderer);
12776
+ var index = geoData.index, aUV = geoData.aUV;
12777
+ var geometry = this.defaultGeometry;
12681
12778
  geometry.setIndexData(new Uint16Array(index));
12682
- geometry.setAttributeData("atlasOffset", new Float32Array(atlasOffset));
12779
+ geometry.setAttributeData("aUV", new Float32Array(aUV));
12683
12780
  geometry.setDrawCount(index.length);
12684
12781
  return geometry;
12685
12782
  };
@@ -12698,13 +12795,12 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12698
12795
  setMaskMode(material, maskMode);
12699
12796
  setSideMode(material, side);
12700
12797
  material.shader.shaderData.properties = '_MainTex("_MainTex",2D) = "white" {}';
12701
- material.setColor("_Color", new Color(0, 0, 0, 1));
12702
12798
  material.setVector4("_TexOffset", new Vector4(0, 0, 1, 1));
12703
12799
  material.setTexture("_MainTex", texture);
12704
- this.preMultiAlpha = getPreMultiAlpha(blendMode);
12800
+ var preMultiAlpha = getPreMultiAlpha(blendMode);
12705
12801
  var texParams = new Vector4();
12706
12802
  texParams.x = renderer.occlusion ? +renderer.transparentOcclusion : 1;
12707
- texParams.y = +this.preMultiAlpha;
12803
+ texParams.y = preMultiAlpha;
12708
12804
  texParams.z = renderer.renderMode;
12709
12805
  texParams.w = renderer.maskMode;
12710
12806
  material.setVector4("_TexParams", texParams);
@@ -12730,8 +12826,11 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12730
12826
  };
12731
12827
  _proto.fromData = function fromData(data) {
12732
12828
  RendererComponent.prototype.fromData.call(this, data);
12733
- var _data_renderer;
12734
- var renderer = (_data_renderer = data.renderer) != null ? _data_renderer : {};
12829
+ var baseRenderComponentData = data;
12830
+ var _baseRenderComponentData_renderer;
12831
+ var renderer = (_baseRenderComponentData_renderer = baseRenderComponentData.renderer) != null ? _baseRenderComponentData_renderer : {};
12832
+ var splits = baseRenderComponentData.splits;
12833
+ var textureSheetAnimation = baseRenderComponentData.textureSheetAnimation;
12735
12834
  var maskProps = data.mask;
12736
12835
  if (maskProps && maskProps.ref) {
12737
12836
  maskProps.ref = this.engine.findObject(maskProps.ref);
@@ -12740,14 +12839,15 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12740
12839
  // TODO 新蒙板上线后移除
12741
12840
  //-------------------------------------------------------------------------
12742
12841
  var shapeData = renderer.shape;
12743
- //@ts-expect-error
12744
- var split = data.splits && !data.textureSheetAnimation ? data.splits[0] : undefined;
12842
+ var split = splits && !textureSheetAnimation ? splits[0] : undefined;
12745
12843
  var shapeGeometry = undefined;
12746
12844
  if (shapeData !== undefined && shapeData !== null && !("aPoint" in shapeData && "index" in shapeData)) {
12747
12845
  shapeGeometry = getGeometryByShape(shapeData, split);
12748
12846
  }
12749
- var _renderer_renderMode, _renderer_blending, _renderer_side, _renderer_alphaMask;
12750
12847
  //-------------------------------------------------------------------------
12848
+ this.splits = splits || singleSplits;
12849
+ this.textureSheetAnimation = textureSheetAnimation;
12850
+ var _renderer_renderMode, _renderer_blending, _renderer_side, _renderer_alphaMask;
12751
12851
  this.renderer = {
12752
12852
  renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
12753
12853
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
@@ -12762,7 +12862,31 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12762
12862
  alphaMask: (_renderer_alphaMask = renderer.alphaMask) != null ? _renderer_alphaMask : false
12763
12863
  };
12764
12864
  this.configureMaterial(this.renderer);
12865
+ if (baseRenderComponentData.geometry) {
12866
+ this.geometry = this.engine.findObject(baseRenderComponentData.geometry);
12867
+ } else {
12868
+ this.geometry = this.defaultGeometry;
12869
+ this.configureDefaultGeometry(this.renderer);
12870
+ }
12765
12871
  };
12872
+ _create_class(BaseRenderComponent, [
12873
+ {
12874
+ key: "color",
12875
+ get: /**
12876
+ * 获取当前图层的颜色
12877
+ * @since 2.5.0
12878
+ */ function get() {
12879
+ return this._color;
12880
+ },
12881
+ set: /**
12882
+ * 设置当前图层的颜色
12883
+ * @since 2.5.0
12884
+ */ function set(value) {
12885
+ this._color = value;
12886
+ this.material.setColor("_Color", this._color);
12887
+ }
12888
+ }
12889
+ ]);
12766
12890
  return BaseRenderComponent;
12767
12891
  }(RendererComponent);
12768
12892
 
@@ -12777,37 +12901,8 @@ var ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
12777
12901
  _this.graphicsPath = new GraphicsPath();
12778
12902
  _this.vert = "\nprecision highp float;\n\nattribute vec3 aPos;//x y\n\nuniform mat4 effects_MatrixVP;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_ObjectToWorld;\n\nvoid main() {\n vec4 pos = vec4(aPos.xyz, 1.0);\n gl_Position = effects_MatrixVP * effects_ObjectToWorld * pos;\n}\n";
12779
12903
  _this.frag = "\nprecision highp float;\n\nuniform vec4 _Color;\n\nvoid main() {\n vec4 color = _Color;\n color.rgb *= color.a;\n gl_FragColor = color;\n}\n";
12780
- // Create Geometry
12904
+ // Add Geometry SubMesh
12781
12905
  //-------------------------------------------------------------------------
12782
- _this.geometry = Geometry.create(engine, {
12783
- attributes: {
12784
- aPos: {
12785
- type: glContext.FLOAT,
12786
- size: 3,
12787
- data: new Float32Array([
12788
- -0.5,
12789
- 0.5,
12790
- 0,
12791
- -0.5,
12792
- -0.5,
12793
- 0,
12794
- 0.5,
12795
- 0.5,
12796
- 0,
12797
- 0.5,
12798
- -0.5,
12799
- 0
12800
- ])
12801
- },
12802
- aUV: {
12803
- type: glContext.FLOAT,
12804
- size: 2,
12805
- data: new Float32Array()
12806
- }
12807
- },
12808
- mode: glContext.TRIANGLES,
12809
- drawCount: 4
12810
- });
12811
12906
  _this.geometry.subMeshes.push({
12812
12907
  offset: 0,
12813
12908
  indexCount: 0,
@@ -20137,7 +20232,7 @@ var RuntimeClip = /*#__PURE__*/ function() {
20137
20232
  this.playable.play();
20138
20233
  }
20139
20234
  this.parentMixer.setClipWeight(this.playable, weight);
20140
- var clipTime = clip.toLocalTime(localTime);
20235
+ var clipTime = parseFloat(clip.toLocalTime(localTime).toFixed(3));
20141
20236
  this.playable.setTime(clipTime);
20142
20237
  // 判断动画是否结束
20143
20238
  if (ended) {
@@ -21326,12 +21421,11 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21326
21421
  * 前进合成到指定时间
21327
21422
  * @param time - 相对0时刻的时间
21328
21423
  */ _proto.forwardTime = function forwardTime(time) {
21329
- var deltaTime = time * 1000 - this.time * 1000;
21424
+ var deltaTime = time * 1000 - this.rootComposition.time * 1000;
21330
21425
  var reverse = deltaTime < 0;
21331
21426
  var step = 15;
21332
21427
  var t = Math.abs(deltaTime);
21333
21428
  var ss = reverse ? -step : step;
21334
- // FIXME Update 中可能会修改合成时间,这边需要优化更新逻辑
21335
21429
  for(t; t > step; t -= step){
21336
21430
  this.update(ss);
21337
21431
  }
@@ -21371,14 +21465,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21371
21465
  this.callAwake(this.rootItem);
21372
21466
  this.rootItem.beginPlay();
21373
21467
  }
21374
- var previousCompositionTime = this.time;
21375
- this.updateCompositionTime(deltaTime * this.speed / 1000);
21376
- var deltaTimeInMs = (this.time - previousCompositionTime) * 1000;
21468
+ var dt = parseFloat(this.getUpdateTime(deltaTime * this.speed).toFixed(0));
21469
+ this.updateRootComposition(dt / 1000);
21377
21470
  this.updateVideo();
21378
21471
  // 更新 model-tree-plugin
21379
- this.updatePluginLoaders(deltaTimeInMs);
21380
- this.sceneTicking.update.tick(deltaTimeInMs);
21381
- this.sceneTicking.lateUpdate.tick(deltaTimeInMs);
21472
+ this.updatePluginLoaders(deltaTime);
21473
+ this.sceneTicking.update.tick(dt);
21474
+ this.sceneTicking.lateUpdate.tick(dt);
21382
21475
  this.updateCamera();
21383
21476
  this.prepareRender();
21384
21477
  if (this.isEnded && !this.isEndCalled) {
@@ -21394,6 +21487,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21394
21487
  _proto.shouldDispose = function shouldDispose() {
21395
21488
  return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
21396
21489
  };
21490
+ _proto.getUpdateTime = function getUpdateTime(t) {
21491
+ var startTimeInMs = this.startTime * 1000;
21492
+ var now = this.rootComposition.time * 1000;
21493
+ if (t < 0 && now + t < startTimeInMs) {
21494
+ return startTimeInMs - now;
21495
+ }
21496
+ return t;
21497
+ };
21397
21498
  _proto.callAwake = function callAwake(item) {
21398
21499
  for(var _iterator = _create_for_of_iterator_helper_loose(item.components), _step; !(_step = _iterator()).done;){
21399
21500
  var component = _step.value;
@@ -21438,18 +21539,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21438
21539
  };
21439
21540
  /**
21440
21541
  * 更新主合成组件
21441
- */ _proto.updateCompositionTime = function updateCompositionTime(deltaTime) {
21542
+ */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
21442
21543
  if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {
21443
21544
  return;
21444
21545
  }
21445
- // 相对于合成开始时间的时间
21446
- var localTime = this.time + deltaTime - this.startTime;
21447
- if (deltaTime < 0 && localTime < 0) {
21448
- localTime = 0;
21449
- }
21546
+ var localTime = parseFloat((this.time + deltaTime - this.rootItem.start).toFixed(3));
21547
+ var isEnded = false;
21450
21548
  var duration = this.rootItem.duration;
21451
21549
  var endBehavior = this.rootItem.endBehavior;
21452
- var isEnded = false;
21453
21550
  if (localTime - duration > 0.001) {
21454
21551
  isEnded = true;
21455
21552
  switch(endBehavior){
@@ -21474,7 +21571,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21474
21571
  }
21475
21572
  }
21476
21573
  }
21477
- this.rootComposition.time = localTime + this.startTime;
21574
+ this.rootComposition.time = localTime;
21478
21575
  // end state changed, handle onEnd flags
21479
21576
  if (this.isEnded !== isEnded) {
21480
21577
  if (isEnded) {
@@ -22630,15 +22727,6 @@ var ColorPlayable = /*#__PURE__*/ function(Playable) {
22630
22727
  return ColorPlayable;
22631
22728
  }(Playable);
22632
22729
 
22633
- var singleSplits = [
22634
- [
22635
- 0,
22636
- 0,
22637
- 1,
22638
- 1,
22639
- undefined
22640
- ]
22641
- ];
22642
22730
  var seed$3 = 0;
22643
22731
  var SpriteColorPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
22644
22732
  _inherits(SpriteColorPlayableAsset, PlayableAsset);
@@ -22664,10 +22752,8 @@ var SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22664
22752
  function SpriteComponent(engine, props) {
22665
22753
  var _this;
22666
22754
  _this = BaseRenderComponent.call(this, engine) || this;
22667
- _this.splits = singleSplits;
22668
22755
  _this.frameAnimationLoop = false;
22669
22756
  _this.name = "MSprite" + seed$3++;
22670
- _this.geometry = _this.createGeometry();
22671
22757
  if (props) {
22672
22758
  _this.fromData(props);
22673
22759
  }
@@ -22757,111 +22843,10 @@ var SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22757
22843
  source.video.load();
22758
22844
  }
22759
22845
  };
22760
- _proto.getItemGeometryData = function getItemGeometryData(geometry) {
22761
- var _this = this, splits = _this.splits, textureSheetAnimation = _this.textureSheetAnimation;
22762
- var sx = 1, sy = 1;
22763
- var renderer = this.renderer;
22764
- if (renderer.shape) {
22765
- var _renderer_shape = renderer.shape, _renderer_shape_index = _renderer_shape.index, index = _renderer_shape_index === void 0 ? [] : _renderer_shape_index, _renderer_shape_aPoint = _renderer_shape.aPoint, aPoint = _renderer_shape_aPoint === void 0 ? [] : _renderer_shape_aPoint;
22766
- var point = new Float32Array(aPoint);
22767
- var position = [];
22768
- var atlasOffset = [];
22769
- for(var i = 0; i < point.length; i += 6){
22770
- point[i] *= sx;
22771
- point[i + 1] *= sy;
22772
- atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);
22773
- position.push(point[i], point[i + 1], 0.0);
22774
- }
22775
- geometry.setAttributeData("aPos", new Float32Array(position));
22776
- return {
22777
- index: index,
22778
- atlasOffset: atlasOffset
22779
- };
22780
- }
22781
- var originData = [
22782
- -.5,
22783
- .5,
22784
- -.5,
22785
- -.5,
22786
- .5,
22787
- .5,
22788
- .5,
22789
- -.5
22790
- ];
22791
- var atlasOffset1 = [];
22792
- var index1 = [];
22793
- var col = 2;
22794
- var row = 2;
22795
- if (splits.length === 1) {
22796
- col = 1;
22797
- row = 1;
22798
- }
22799
- var position1 = [];
22800
- for(var x = 0; x < col; x++){
22801
- for(var y = 0; y < row; y++){
22802
- var base = (y * 2 + x) * 4;
22803
- // @ts-expect-error
22804
- var split = textureSheetAnimation ? [
22805
- 0,
22806
- 0,
22807
- 1,
22808
- 1,
22809
- splits[0][4]
22810
- ] : splits[y * 2 + x];
22811
- var texOffset = split[4] ? [
22812
- 0,
22813
- 0,
22814
- 1,
22815
- 0,
22816
- 0,
22817
- 1,
22818
- 1,
22819
- 1
22820
- ] : [
22821
- 0,
22822
- 1,
22823
- 0,
22824
- 0,
22825
- 1,
22826
- 1,
22827
- 1,
22828
- 0
22829
- ];
22830
- var dw = ((x + x + 1) / col - 1) / 2;
22831
- var dh = ((y + y + 1) / row - 1) / 2;
22832
- var tox = split[0];
22833
- var toy = split[1];
22834
- var tsx = split[4] ? split[3] : split[2];
22835
- var tsy = split[4] ? split[2] : split[3];
22836
- var origin = [
22837
- originData[0] / col + dw,
22838
- originData[1] / row + dh,
22839
- originData[2] / col + dw,
22840
- originData[3] / row + dh,
22841
- originData[4] / col + dw,
22842
- originData[5] / row + dh,
22843
- originData[6] / col + dw,
22844
- originData[7] / row + dh
22845
- ];
22846
- atlasOffset1.push(texOffset[0] * tsx + tox, texOffset[1] * tsy + toy, texOffset[2] * tsx + tox, texOffset[3] * tsy + toy, texOffset[4] * tsx + tox, texOffset[5] * tsy + toy, texOffset[6] * tsx + tox, texOffset[7] * tsy + toy);
22847
- position1.push(origin[0] * sx, origin[1] * sy, 0.0, origin[2] * sx, origin[3] * sy, 0.0, origin[4] * sx, origin[5] * sy, 0.0, origin[6] * sx, origin[7] * sy, 0.0);
22848
- index1.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);
22849
- }
22850
- }
22851
- geometry.setAttributeData("aPos", new Float32Array(position1));
22852
- return {
22853
- index: index1,
22854
- atlasOffset: atlasOffset1
22855
- };
22856
- };
22857
22846
  _proto.fromData = function fromData(data) {
22858
22847
  BaseRenderComponent.prototype.fromData.call(this, data);
22859
22848
  var interaction = data.interaction, options = data.options;
22860
22849
  this.interaction = interaction;
22861
- this.splits = data.splits || singleSplits;
22862
- this.textureSheetAnimation = data.textureSheetAnimation;
22863
- var geometry = this.createGeometry();
22864
- this.geometry = geometry;
22865
22850
  var startColor = options.startColor || [
22866
22851
  1,
22867
22852
  1,
@@ -26140,7 +26125,6 @@ var TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
26140
26125
  _this.SCALE_FACTOR = 0.1;
26141
26126
  _this.ALPHA_FIX_VALUE = 1 / 255;
26142
26127
  _this.name = "MText" + seed$2++;
26143
- _this.geometry = _this.createGeometry();
26144
26128
  if (props) {
26145
26129
  _this.fromData(props);
26146
26130
  }
@@ -27021,11 +27005,6 @@ function colorToArr(hex, normalized) {
27021
27005
  parseInt(m[2], 16),
27022
27006
  parseInt(m[3], 16),
27023
27007
  255
27024
- ] || [
27025
- 0,
27026
- 0,
27027
- 0,
27028
- 255
27029
27008
  ];
27030
27009
  }
27031
27010
  } else if (_instanceof1(hex, Array)) {
@@ -31624,7 +31603,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem);
31624
31603
  registerPlugin("particle", ParticleLoader, VFXItem);
31625
31604
  registerPlugin("cal", CalculateLoader, VFXItem);
31626
31605
  registerPlugin("interact", InteractLoader, VFXItem);
31627
- var version$1 = "2.4.8";
31606
+ var version$1 = "2.5.0-alpha.0";
31628
31607
  logger.info("Core version: " + version$1 + ".");
31629
31608
 
31630
31609
  var _obj;
@@ -33226,7 +33205,7 @@ setMaxSpriteMeshItemCount(8);
33226
33205
  */ Mesh.create = function(engine, props) {
33227
33206
  return new ThreeMesh(engine, props);
33228
33207
  };
33229
- var version = "2.4.8";
33208
+ var version = "2.5.0-alpha.0";
33230
33209
  logger.info("THREEJS plugin version: " + version + ".");
33231
33210
 
33232
33211
  export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, DEFAULT_FONTS, DEFAULT_FPS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Ellipse, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphicsPath, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, MaskMode, MaskProcessor, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PolyStar, Polygon, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StarType, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector2Curve, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, buildLine, calculateTranslation, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isOpenHarmony, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrame_frag as itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };