@galacean/effects-threejs 2.1.2 → 2.1.3-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.js 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.1.2
6
+ * Version: v2.1.3-alpha.0
7
7
  */
8
8
 
9
9
  'use strict';
@@ -10165,7 +10165,7 @@ var itemFrameFrag = "#version 100\nprecision highp float;vec4 blendColor(vec4 co
10165
10165
 
10166
10166
  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.;}";
10167
10167
 
10168
- var itemVert = "precision highp float;attribute vec2 atlasOffset;attribute vec3 aPos;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;uniform vec2 _Size;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform mat4 effects_MatrixVP;uniform mat4 effects_MatrixInvV;uniform mat4 effects_ObjectToWorld;\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(0.0,texParams.y,texParams.x);vec4 pos=vec4(aPos.xy*_Size,aPos.z,1.0);gl_Position=effects_MatrixVP*effects_ObjectToWorld*pos;\n#ifdef ENV_EDITOR\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
10168
+ 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(0.0,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}";
10169
10169
 
10170
10170
  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.);vec4 texColor=texture2D(_MainTex,vTexCoord.xy);color=blendColor(texColor,vColor,floor(0.5+vParams.y));if(vParams.z==0.&&color.a<0.04){discard;}color.a=clamp(color.a,0.0,1.0);gl_FragColor=color;}";
10171
10171
 
@@ -13240,7 +13240,7 @@ var ColorCurve = /*#__PURE__*/ function(ValueGetter) {
13240
13240
  }
13241
13241
  };
13242
13242
  _this.renderer = {
13243
- renderMode: RenderMode.BILLBOARD,
13243
+ renderMode: RenderMode.MESH,
13244
13244
  blending: BlendingMode.ALPHA,
13245
13245
  texture: _this.engine.emptyTexture,
13246
13246
  occlusion: false,
@@ -13314,6 +13314,9 @@ var ColorCurve = /*#__PURE__*/ function(ValueGetter) {
13314
13314
  renderer.setGlobalMatrix("effects_ObjectToWorld", this.transform.getWorldMatrix());
13315
13315
  }
13316
13316
  this.material.setVector2("_Size", this.transform.size);
13317
+ if (this.renderer.renderMode === RenderMode.BILLBOARD || this.renderer.renderMode === RenderMode.VERTICAL_BILLBOARD || this.renderer.renderMode === RenderMode.HORIZONTAL_BILLBOARD) {
13318
+ this.material.setVector3("_Scale", this.transform.scale);
13319
+ }
13317
13320
  renderer.drawGeometry(geo, material);
13318
13321
  };
13319
13322
  _proto.onStart = function onStart() {
@@ -18830,7 +18833,7 @@ exports.SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
18830
18833
  this.interaction = interaction;
18831
18834
  var _renderer_renderMode, _renderer_blending, _renderer_texture, _renderer_side, _renderer_mask, _renderer_maskMode;
18832
18835
  this.renderer = {
18833
- renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.BILLBOARD,
18836
+ renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
18834
18837
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
18835
18838
  texture: (_renderer_texture = renderer.texture) != null ? _renderer_texture : this.engine.emptyTexture,
18836
18839
  occlusion: !!renderer.occlusion,
@@ -23924,6 +23927,9 @@ var SerializationHelper = /*#__PURE__*/ function() {
23924
23927
  _proto.onUpdate = function onUpdate(dt) {
23925
23928
  var time = this.time;
23926
23929
  this.timelinePlayable.setTime(time);
23930
+ // The properties of the object may change dynamically,
23931
+ // so reset the track binding to avoid invalidation of the previously obtained binding object.
23932
+ this.resolveBindings();
23927
23933
  this.graph.evaluate(dt);
23928
23934
  };
23929
23935
  _proto.createContent = function createContent() {
@@ -24565,8 +24571,6 @@ var TimelinePlayable = /*#__PURE__*/ function(Playable) {
24565
24571
  };
24566
24572
  _proto.evaluate = function evaluate() {
24567
24573
  var time = this.getTime();
24568
- // update all tracks binding
24569
- this.updateTrackAnimatedObject(this.masterTrackInstances);
24570
24574
  // TODO search active clips
24571
24575
  for(var _iterator = _create_for_of_iterator_helper_loose(this.clips), _step; !(_step = _iterator()).done;){
24572
24576
  var clip = _step.value;
@@ -24604,17 +24608,6 @@ var TimelinePlayable = /*#__PURE__*/ function(Playable) {
24604
24608
  }
24605
24609
  }
24606
24610
  };
24607
- _proto.updateTrackAnimatedObject = function updateTrackAnimatedObject(trackInstances) {
24608
- for(var _iterator = _create_for_of_iterator_helper_loose(trackInstances), _step; !(_step = _iterator()).done;){
24609
- var trackInstance = _step.value;
24610
- var trackAsset = trackInstance.trackAsset;
24611
- // update track binding use custom method
24612
- trackAsset.updateAnimatedObject();
24613
- trackInstance.output.setUserData(trackAsset.boundObject);
24614
- // update children tracks
24615
- this.updateTrackAnimatedObject(trackInstance.children);
24616
- }
24617
- };
24618
24611
  return TimelinePlayable;
24619
24612
  }(Playable);
24620
24613
  var TrackSortWrapper = function TrackSortWrapper(track, originalIndex) {
@@ -24930,7 +24923,7 @@ exports.TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
24930
24923
  this.interaction = interaction;
24931
24924
  var _renderer_renderMode, _renderer_blending, _renderer_texture, _renderer_side, _renderer_mask, _renderer_maskMode;
24932
24925
  this.renderer = {
24933
- renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.BILLBOARD,
24926
+ renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
24934
24927
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
24935
24928
  texture: (_renderer_texture = renderer.texture) != null ? _renderer_texture : this.engine.emptyTexture,
24936
24929
  occlusion: !!renderer.occlusion,
@@ -27698,7 +27691,7 @@ var seed$1 = 1;
27698
27691
  _this_options = _this.options, useCompressedTexture = _this_options.useCompressedTexture, variables = _this_options.variables;
27699
27692
  baseUrl = _this.baseUrl;
27700
27693
  jobs = images.map(/*#__PURE__*/ _async_to_generator(function(img, idx) {
27701
- var png, webp, avif, imageURL, webpURL, avifURL, template, background, url, isVideo, loadFn, resultImage, e, compressed, src, bufferURL, _ref, url1, image, _tmp;
27694
+ var png, webp, avif, imageURL, webpURL, avifURL, id, template, background, url, isVideo, loadFn, resultImage, e, compressed, src, bufferURL, _ref, url1, image, _tmp;
27702
27695
  return __generator(this, function(_state) {
27703
27696
  switch(_state.label){
27704
27697
  case 0:
@@ -27709,6 +27702,7 @@ var seed$1 = 1;
27709
27702
  webpURL = webp && new URL(webp, baseUrl).href;
27710
27703
  // eslint-disable-next-line compat/compat
27711
27704
  avifURL = avif && new URL(avif, baseUrl).href;
27705
+ id = img.id;
27712
27706
  if (!("template" in img)) return [
27713
27707
  3,
27714
27708
  8
@@ -27743,7 +27737,7 @@ var seed$1 = 1;
27743
27737
  3,
27744
27738
  3
27745
27739
  ];
27746
- _this.sourceFrom[idx] = {
27740
+ _this.sourceFrom[id] = {
27747
27741
  url: resultImage.src,
27748
27742
  type: exports.TextureSourceType.video
27749
27743
  };
@@ -27756,7 +27750,7 @@ var seed$1 = 1;
27756
27750
  if (background && Array.isArray(url) && variables) {
27757
27751
  variables[background.name] = resultImage.src;
27758
27752
  }
27759
- _this.sourceFrom[idx] = {
27753
+ _this.sourceFrom[id] = {
27760
27754
  url: resultImage.src,
27761
27755
  type: exports.TextureSourceType.image
27762
27756
  };
@@ -27793,7 +27787,7 @@ var seed$1 = 1;
27793
27787
  }
27794
27788
  if (src) {
27795
27789
  bufferURL = new URL(src, baseUrl).href;
27796
- _this.sourceFrom[idx] = {
27790
+ _this.sourceFrom[id] = {
27797
27791
  url: bufferURL,
27798
27792
  type: exports.TextureSourceType.compressed
27799
27793
  };
@@ -27834,7 +27828,7 @@ var seed$1 = 1;
27834
27828
  _state.label = 13;
27835
27829
  case 13:
27836
27830
  _ref = _tmp, url1 = _ref.url, image = _ref.image;
27837
- _this.sourceFrom[idx] = {
27831
+ _this.sourceFrom[id] = {
27838
27832
  url: url1,
27839
27833
  type: exports.TextureSourceType.image
27840
27834
  };
@@ -27926,7 +27920,7 @@ var seed$1 = 1;
27926
27920
  };
27927
27921
  });
27928
27922
  jobs = textures.map(/*#__PURE__*/ _async_to_generator(function(textureOptions, idx) {
27929
- var e, source, id, image, texture;
27923
+ var e, source, id, image, imageId, texture;
27930
27924
  return __generator(this, function(_state) {
27931
27925
  switch(_state.label){
27932
27926
  case 0:
@@ -27962,11 +27956,13 @@ var seed$1 = 1;
27962
27956
  throw new Error("Load texture " + idx + " fails, error message: " + e + ".");
27963
27957
  case 4:
27964
27958
  source = textureOptions.source, id = textureOptions.id;
27959
+ imageId = "";
27965
27960
  if (!isObject(source)) return [
27966
27961
  3,
27967
27962
  5
27968
27963
  ];
27969
27964
  image = _this.assets[source.id];
27965
+ imageId = source.id;
27970
27966
  return [
27971
27967
  3,
27972
27968
  7
@@ -27985,7 +27981,7 @@ var seed$1 = 1;
27985
27981
  _state.label = 7;
27986
27982
  case 7:
27987
27983
  if (image) {
27988
- texture = createTextureOptionsBySource(image, _this.sourceFrom[idx], id);
27984
+ texture = createTextureOptionsBySource(image, _this.sourceFrom[imageId], id);
27989
27985
  return [
27990
27986
  2,
27991
27987
  texture.sourceType === exports.TextureSourceType.compressed ? texture : _extends({}, texture, textureOptions)
@@ -31400,7 +31396,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
31400
31396
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
31401
31397
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
31402
31398
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
31403
- var version$1 = "2.1.2";
31399
+ var version$1 = "2.1.3-alpha.0";
31404
31400
  logger.info("Core version: " + version$1 + ".");
31405
31401
 
31406
31402
  var _obj;
@@ -33027,7 +33023,7 @@ setMaxSpriteMeshItemCount(8);
33027
33023
  */ Mesh.create = function(engine, props) {
33028
33024
  return new ThreeMesh(engine, props);
33029
33025
  };
33030
- var version = "2.1.2";
33026
+ var version = "2.1.3-alpha.0";
33031
33027
  logger.info("THREEJS plugin version: " + version + ".");
33032
33028
 
33033
33029
  exports.AbstractPlugin = AbstractPlugin;