@galacean/effects-plugin-ffd 2.7.3 → 2.7.5
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/alipay.js +1 -1
- package/dist/alipay.mjs +1 -1
- package/dist/douyin.js +1 -1
- package/dist/douyin.mjs +1 -1
- package/dist/index.js +2 -2
- package/dist/index.min.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/weapp.js +1 -1
- package/dist/weapp.mjs +1 -1
- package/package.json +2 -2
package/dist/alipay.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/alipay");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/alipay");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.5";e.registerPlugin("ffd",i,e.VFXItem),e.logger.info("Plugin ffd version: 2.7.5."),c!==t.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!"),exports.version=c;
|
|
2
2
|
//# sourceMappingURL=alipay.js.map
|
package/dist/alipay.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as o from"@galacean/effects/alipay";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/alipay";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.
|
|
1
|
+
import*as o from"@galacean/effects/alipay";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/alipay";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.5";s("ffd",m,f),u.info("Plugin ffd version: 2.7.5."),p!==o.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");export{h as FFDComponent,p as version};
|
|
2
2
|
//# sourceMappingURL=alipay.mjs.map
|
package/dist/douyin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/douyin");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/douyin");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.5";e.registerPlugin("ffd",i,e.VFXItem),e.logger.info("Plugin ffd version: 2.7.5."),c!==t.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!"),exports.version=c;
|
|
2
2
|
//# sourceMappingURL=douyin.js.map
|
package/dist/douyin.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as o from"@galacean/effects/douyin";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/douyin";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.
|
|
1
|
+
import*as o from"@galacean/effects/douyin";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/douyin";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.5";s("ffd",m,f),u.info("Plugin ffd version: 2.7.5."),p!==o.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");export{h as FFDComponent,p as version};
|
|
2
2
|
//# sourceMappingURL=douyin.mjs.map
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player Free-form deformation plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 澄弈
|
|
6
|
-
* Version: v2.7.
|
|
6
|
+
* Version: v2.7.5
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -191,7 +191,7 @@ exports.FFDComponent = __decorate([
|
|
|
191
191
|
|
|
192
192
|
/**
|
|
193
193
|
* 插件版本号
|
|
194
|
-
*/ var version = "2.7.
|
|
194
|
+
*/ var version = "2.7.5";
|
|
195
195
|
EFFECTS.registerPlugin("ffd", FFDLoader, EFFECTS.VFXItem);
|
|
196
196
|
EFFECTS.logger.info("Plugin ffd version: " + version + ".");
|
|
197
197
|
if (version !== EFFECTS__namespace.version) {
|
package/dist/index.min.js
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* Description: Galacean Effects player Free-form deformation plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 澄弈
|
|
6
|
-
* Version: v2.7.
|
|
7
|
-
*/function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@galacean/effects")):"function"==typeof define&&define.amd?define(["exports","@galacean/effects"],o):o(((e="undefined"!=typeof globalThis?globalThis:e||self).ge=e.ge||{},e.ge.ffdPlugin={}),e.ge)}(this,function(e,o){"use strict";var t=function(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}}),o.default=e,Object.freeze(o)}(o);function n(e,o){return(n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e})(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return o=e.apply(this,arguments)||this,o.name="ffd",o}return r(o,e),o}(o.AbstractPlugin);"function"==typeof SuppressedError&&SuppressedError,e.FFDComponent=function(e){function t(t){var n;return(n=e.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new o.math.Vector3(-.5,-.5,0),n.boundMax=new o.math.Vector3(.5,.5,0),n}r(t,e);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(o){e.prototype.fromData.call(this,o),this.data=o,this.initData()},n.collectSpriteComponents=function(){if(this.item){var e=this.item.getComponent(o.SpriteComponent);if(e){var t=new o.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:o.generateGUID(),dataType:o.spec.DataType.Shader}),e.material.shader=t,this.currentSpriteComponent=e}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var e=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,e);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,a,l=this.data.controlPoints[n];this.controlPoints.push(!function e(o,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](o):e(o,t)}(l,o.math.Vector3)?new o.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(a=null==l?void 0:l.z)?a:0):l)}for(var c=t;c<e;c++)this.controlPoints.push(new o.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(o.Component),e.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var l=e.length-1;l>=0;l--)(r=e[l])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([o.effectsClass("FFDComponent")],e.FFDComponent);var a="2.7.
|
|
6
|
+
* Version: v2.7.5
|
|
7
|
+
*/function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@galacean/effects")):"function"==typeof define&&define.amd?define(["exports","@galacean/effects"],o):o(((e="undefined"!=typeof globalThis?globalThis:e||self).ge=e.ge||{},e.ge.ffdPlugin={}),e.ge)}(this,function(e,o){"use strict";var t=function(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}}),o.default=e,Object.freeze(o)}(o);function n(e,o){return(n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e})(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return o=e.apply(this,arguments)||this,o.name="ffd",o}return r(o,e),o}(o.AbstractPlugin);"function"==typeof SuppressedError&&SuppressedError,e.FFDComponent=function(e){function t(t){var n;return(n=e.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new o.math.Vector3(-.5,-.5,0),n.boundMax=new o.math.Vector3(.5,.5,0),n}r(t,e);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(o){e.prototype.fromData.call(this,o),this.data=o,this.initData()},n.collectSpriteComponents=function(){if(this.item){var e=this.item.getComponent(o.SpriteComponent);if(e){var t=new o.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:o.generateGUID(),dataType:o.spec.DataType.Shader}),e.material.shader=t,this.currentSpriteComponent=e}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var e=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,e);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,a,l=this.data.controlPoints[n];this.controlPoints.push(!function e(o,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](o):e(o,t)}(l,o.math.Vector3)?new o.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(a=null==l?void 0:l.z)?a:0):l)}for(var c=t;c<e;c++)this.controlPoints.push(new o.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(o.Component),e.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var l=e.length-1;l>=0;l--)(r=e[l])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([o.effectsClass("FFDComponent")],e.FFDComponent);var a="2.7.5";o.registerPlugin("ffd",i,o.VFXItem),o.logger.info("Plugin ffd version: "+a+"."),a!==t.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!"),e.version=a,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
8
8
|
//# sourceMappingURL=index.min.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player Free-form deformation plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 澄弈
|
|
6
|
-
* Version: v2.7.
|
|
6
|
+
* Version: v2.7.5
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import * as EFFECTS from '@galacean/effects';
|
|
@@ -168,7 +168,7 @@ FFDComponent = __decorate([
|
|
|
168
168
|
|
|
169
169
|
/**
|
|
170
170
|
* 插件版本号
|
|
171
|
-
*/ var version = "2.7.
|
|
171
|
+
*/ var version = "2.7.5";
|
|
172
172
|
registerPlugin("ffd", FFDLoader, VFXItem);
|
|
173
173
|
logger.info("Plugin ffd version: " + version + ".");
|
|
174
174
|
if (version !== EFFECTS.version) {
|
package/dist/weapp.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/weapp");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@galacean/effects/weapp");function o(e){if(e&&e.__esModule)return e;var o=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),o.default=e,Object.freeze(o)}var t=o(e);function n(e,o){return n=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e},n(e,o)}function r(e,o){if("function"!=typeof o&&null!==o)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(o&&o.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),o&&n(e,o)}var i=function(e){function o(){var o;return(o=e.apply(this,arguments)||this).name="ffd",o}return r(o,e),o}(e.AbstractPlugin);function a(e,o){return null!=o&&"undefined"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](e):a(e,o)}"function"==typeof SuppressedError&&SuppressedError;exports.FFDComponent=function(o){function t(t){var n;return(n=o.call(this,t)||this).rowNum=5,n.colNum=5,n.controlPoints=[],n.boundMin=new e.math.Vector3(-.5,-.5,0),n.boundMax=new e.math.Vector3(.5,.5,0),n}r(t,o);var n=t.prototype;return n.onStart=function(){this.collectSpriteComponents()},n.onUpdate=function(e){this.updateShaderUniform()},n.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},n.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(e.SpriteComponent);if(o){var t=new e.Shader(this.engine);t.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:e.generateGUID(),dataType:e.spec.DataType.Shader}),o.material.shader=t,this.currentSpriteComponent=o}}},n.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,t=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var n=0;n<t;n++){var r,i,c,l=this.data.controlPoints[n];this.controlPoints.push(a(l,e.math.Vector3)?l:new e.math.Vector3(null!=(r=null==l?void 0:l.x)?r:0,null!=(i=null==l?void 0:l.y)?i:0,null!=(c=null==l?void 0:l.z)?c:0))}for(var s=t;s<o;s++)this.controlPoints.push(new e.math.Vector3(0,0,0));this.updateShaderUniform()}},n.updateShaderUniform=function(){if(this.currentSpriteComponent){var e=this.currentSpriteComponent.material;if(e){e.setVector3("_BoundMin",this.boundMin),e.setVector3("_BoundMax",this.boundMax),e.setInt("_RowNum",this.rowNum),e.setInt("_ColNum",this.colNum);for(var o=0;o<this.colNum;o++)for(var t=0;t<this.rowNum;t++){var n=o*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];e.setVector3("_ControlPoints["+n+"]",r)}}}}},t}(e.Component),exports.FFDComponent=function(e,o,t,n){var r,i=arguments.length,a=i<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,t,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(o,t,a):r(o,t))||a);return i>3&&a&&Object.defineProperty(o,t,a),a}([e.effectsClass("FFDComponent")],exports.FFDComponent);var c="2.7.5";e.registerPlugin("ffd",i,e.VFXItem),e.logger.info("Plugin ffd version: 2.7.5."),c!==t.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!"),exports.version=c;
|
|
2
2
|
//# sourceMappingURL=weapp.js.map
|
package/dist/weapp.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as o from"@galacean/effects/weapp";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/weapp";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.
|
|
1
|
+
import*as o from"@galacean/effects/weapp";import{AbstractPlugin as e,effectsClass as t,SpriteComponent as n,Shader as r,generateGUID as i,spec as a,math as l,Component as c,registerPlugin as s,VFXItem as f,logger as u}from"@galacean/effects/weapp";function v(o,e){return v=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o},v(o,e)}function d(o,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&v(o,e)}var m=function(o){function e(){var e;return(e=o.apply(this,arguments)||this).name="ffd",e}return d(e,o),e}(e);function _(o,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](o):_(o,e)}"function"==typeof SuppressedError&&SuppressedError;var h=function(o){function e(e){var t;return(t=o.call(this,e)||this).rowNum=5,t.colNum=5,t.controlPoints=[],t.boundMin=new l.Vector3(-.5,-.5,0),t.boundMax=new l.Vector3(.5,.5,0),t}d(e,o);var t=e.prototype;return t.onStart=function(){this.collectSpriteComponents()},t.onUpdate=function(o){this.updateShaderUniform()},t.fromData=function(e){o.prototype.fromData.call(this,e),this.data=e,this.initData()},t.collectSpriteComponents=function(){if(this.item){var o=this.item.getComponent(n);if(o){var e=new r(this.engine);e.fromData({vertex:"precision highp float;attribute vec3 aPos;attribute vec2 aUV;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;\n#define MAX_BLOCK_NUM 20\n#define EPSILON 1e-6\n#define MAX_K 9\nuniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;uniform mat4 effects_MatrixVP;uniform vec3 _ControlPoints[MAX_BLOCK_NUM*MAX_BLOCK_NUM];uniform vec3 _BoundMin;uniform vec3 _BoundMax;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform int _ColNum;uniform int _RowNum;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nfloat binomialCoefficient(int n,int k){if(k>n-k)k=n-k;float result=1.0;for(int i=1;i<=MAX_K;++i){if(i>k)break;result*=float(n-i+1)/float(i);}return result;}float bernstein(int n,int k,float t){if(t<0.0||t>1.0)return 0.0;if(abs(t)<EPSILON&&k==0)return 1.0;else if(abs(t-1.0)<EPSILON&&k==n)return 1.0;float coeff=binomialCoefficient(n,k);float tk=(k==0)? 1.0 : pow(t,float(k));float tnk=((n-k)==0)? 1.0 : pow(1.0-t,float(n-k));return coeff*tk*tnk;}vec3 bezierSurface(vec3 originalPos){bool isInBoundingBox=originalPos.x>=_BoundMin.x-EPSILON&&originalPos.x<=_BoundMax.x+EPSILON&&originalPos.y>=_BoundMin.y-EPSILON&&originalPos.y<=_BoundMax.y+EPSILON&&originalPos.z>=_BoundMin.z-EPSILON&&originalPos.z<=_BoundMax.z+EPSILON;if(!isInBoundingBox){return originalPos;}float u=(originalPos.x-_BoundMin.x)/(_BoundMax.x-_BoundMin.x);float v=(originalPos.y-_BoundMin.y)/(_BoundMax.y-_BoundMin.y);vec3 newPos=vec3(0.0);for(int row=0;row<MAX_BLOCK_NUM;++row){if(row>=_RowNum)break;float bv=bernstein(_RowNum-1,row,v);for(int col=0;col<MAX_BLOCK_NUM;++col){if(col>=_ColNum)break;float bu=bernstein(_ColNum-1,col,u);int idx=row*_ColNum+col;newPos+=_ControlPoints[idx]*bu*bv;}}return newPos;}void 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){vec3 pos=vec3(aPos.xy*_Size,aPos.z);vec3 newPos=bezierSurface(pos);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,1.0);}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;vec3 newPos=bezierSurface(vertexPosition);gl_Position=effects_MatrixVP*effects_ObjectToWorld*vec4(newPos,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}",fragment:"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;}",id:i(),dataType:a.DataType.Shader}),o.material.shader=e,this.currentSpriteComponent=o}}},t.initData=function(){if(this.data&&this.data.controlPoints){this.boundMax=this.data.boundMax,this.boundMin=this.data.boundMin,this.rowNum=this.data.rowNum,this.colNum=this.data.colNum;var o=this.rowNum*this.colNum,e=Math.min(this.data.controlPoints.length,o);this.controlPoints.length=0;for(var t=0;t<e;t++){var n,r,i,a=this.data.controlPoints[t];this.controlPoints.push(_(a,l.Vector3)?a:new l.Vector3(null!=(n=null==a?void 0:a.x)?n:0,null!=(r=null==a?void 0:a.y)?r:0,null!=(i=null==a?void 0:a.z)?i:0))}for(var c=e;c<o;c++)this.controlPoints.push(new l.Vector3(0,0,0));this.updateShaderUniform()}},t.updateShaderUniform=function(){if(this.currentSpriteComponent){var o=this.currentSpriteComponent.material;if(o){o.setVector3("_BoundMin",this.boundMin),o.setVector3("_BoundMax",this.boundMax),o.setInt("_RowNum",this.rowNum),o.setInt("_ColNum",this.colNum);for(var e=0;e<this.colNum;e++)for(var t=0;t<this.rowNum;t++){var n=e*this.rowNum+t;if(n<this.controlPoints.length){var r=this.controlPoints[n];o.setVector3("_ControlPoints["+n+"]",r)}}}}},e}(c);h=function(o,e,t,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(r=o[l])&&(a=(i<3?r(a):i>3?r(e,t,a):r(e,t))||a);return i>3&&a&&Object.defineProperty(e,t,a),a}([t("FFDComponent")],h);var p="2.7.5";s("ffd",m,f),u.info("Plugin ffd version: 2.7.5."),p!==o.version&&console.error("注意:请统一 FFD 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the FFD plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");export{h as FFDComponent,p as version};
|
|
2
2
|
//# sourceMappingURL=weapp.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/effects-plugin-ffd",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.5",
|
|
4
4
|
"description": "Galacean Effects player Free-form deformation plugin",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"registry": "https://registry.npmjs.org"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@galacean/effects": "2.7.
|
|
46
|
+
"@galacean/effects": "2.7.5"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"dev": "vite",
|