@galacean/engine-core 1.0.0-beta.7 → 1.0.0-beta.8

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/module.js CHANGED
@@ -9513,11 +9513,11 @@ var camera_declare = "#define GLSLIFY 1\nuniform vec3 camera_Position;"; // esli
9513
9513
 
9514
9514
  var common = "#define GLSLIFY 1\n#define PI 3.14159265359\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n#define LOG2 1.442695\n#define saturate( a ) clamp( a, 0.0, 1.0 )\nfloat pow2(float x){return x*x;}vec4 RGBMToLinear(vec4 value,float maxRange){return vec4(value.rgb*value.a*maxRange,1.0);}vec4 gammaToLinear(vec4 srgbIn){return vec4(pow(srgbIn.rgb,vec3(2.2)),srgbIn.a);}vec4 linearToGamma(vec4 linearIn){return vec4(pow(linearIn.rgb,vec3(1.0/2.2)),linearIn.a);}\n#ifdef GRAPHICS_API_WEBGL2\n#define INVERSE_MAT(mat) inverse(mat)\n#else\nmat2 inverseMat(mat2 m){return mat2(m[1][1],-m[0][1],-m[1][0],m[0][0])/(m[0][0]*m[1][1]-m[0][1]*m[1][0]);}mat3 inverseMat(mat3 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2];float a10=m[1][0],a11=m[1][1],a12=m[1][2];float a20=m[2][0],a21=m[2][1],a22=m[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}mat4 inverseMat(mat4 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;return mat4(a11*b11-a12*b10+a13*b09,a02*b10-a01*b11-a03*b09,a31*b05-a32*b04+a33*b03,a22*b04-a21*b05-a23*b03,a12*b08-a10*b11-a13*b07,a00*b11-a02*b08+a03*b07,a32*b02-a30*b05-a33*b01,a20*b05-a22*b02+a23*b01,a10*b10-a11*b08+a13*b06,a01*b08-a00*b10-a03*b06,a30*b04-a31*b02+a33*b00,a21*b02-a20*b04-a23*b00,a11*b07-a10*b09-a12*b06,a00*b09-a01*b07+a02*b06,a31*b01-a30*b03-a32*b00,a20*b03-a21*b01+a22*b00)/det;}\n#define INVERSE_MAT(mat) inverseMat(mat)\n#endif\n"; // eslint-disable-line
9515
9515
 
9516
- var common_vert = "#define GLSLIFY 1\nattribute vec3 POSITION;\n#ifdef RENDERER_HAS_UV\nattribute vec2 TEXCOORD_0;\n#endif\n#ifdef RENDERER_HAS_UV1\nattribute vec2 TEXCOORD_1;\n#endif\n#ifdef RENDERER_HAS_SKIN\nattribute vec4 JOINTS_0;attribute vec4 WEIGHTS_0;\n#ifdef RENDERER_USE_JOINT_TEXTURE\nuniform sampler2D renderer_JointSampler;uniform float renderer_JointCount;mat4 getJointMatrix(sampler2D smp,float index){float base=index/renderer_JointCount;float hf=0.5/renderer_JointCount;float v=base+hf;vec4 m0=texture2D(smp,vec2(0.125,v));vec4 m1=texture2D(smp,vec2(0.375,v));vec4 m2=texture2D(smp,vec2(0.625,v));vec4 m3=texture2D(smp,vec2(0.875,v));return mat4(m0,m1,m2,m3);}\n#else\nuniform mat4 renderer_JointMatrix[RENDERER_JOINTS_NUM];\n#endif\n#endif\n#ifdef RENDERER_HAS_VERTEXCOLOR\nattribute vec4 COLOR_0;\n#endif\n#include <transform_declare>\n#include <camera_declare>\nuniform vec4 material_TilingOffset;\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nattribute vec3 NORMAL;\n#endif\n#ifdef RENDERER_HAS_TANGENT\nattribute vec4 TANGENT;\n#endif\n#endif\n"; // eslint-disable-line
9516
+ var common_vert = "#define GLSLIFY 1\nattribute vec3 POSITION;\n#ifdef RENDERER_HAS_UV\nattribute vec2 TEXCOORD_0;\n#endif\n#ifdef RENDERER_HAS_UV1\nattribute vec2 TEXCOORD_1;\n#endif\n#ifdef RENDERER_HAS_SKIN\nattribute vec4 JOINTS_0;attribute vec4 WEIGHTS_0;\n#ifdef RENDERER_USE_JOINT_TEXTURE\nuniform sampler2D renderer_JointSampler;uniform float renderer_JointCount;mat4 getJointMatrix(sampler2D smp,float index){float base=index/renderer_JointCount;float hf=0.5/renderer_JointCount;float v=base+hf;vec4 m0=texture2D(smp,vec2(0.125,v));vec4 m1=texture2D(smp,vec2(0.375,v));vec4 m2=texture2D(smp,vec2(0.625,v));vec4 m3=texture2D(smp,vec2(0.875,v));return mat4(m0,m1,m2,m3);}\n#else\nuniform mat4 renderer_JointMatrix[RENDERER_JOINTS_NUM];\n#endif\n#endif\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nattribute vec4 COLOR_0;\n#endif\n#include <transform_declare>\n#include <camera_declare>\nuniform vec4 material_TilingOffset;\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nattribute vec3 NORMAL;\n#endif\n#ifdef RENDERER_HAS_TANGENT\nattribute vec4 TANGENT;\n#endif\n#endif\n"; // eslint-disable-line
9517
9517
 
9518
9518
  var transform_declare = "#define GLSLIFY 1\nuniform mat4 renderer_LocalMat;uniform mat4 renderer_ModelMat;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;uniform mat4 renderer_MVMat;uniform mat4 renderer_MVPMat;uniform mat4 renderer_NormalMat;"; // eslint-disable-line
9519
9519
 
9520
- var color_share = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_VERTEXCOLOR\nvarying vec4 v_color;\n#endif\n"; // eslint-disable-line
9520
+ var color_share = "#define GLSLIFY 1\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nvarying vec4 v_color;\n#endif\n"; // eslint-disable-line
9521
9521
 
9522
9522
  var FogFragmentDeclaration = "#define GLSLIFY 1\n#if SCENE_FOG_MODE != 0\nvarying vec3 v_positionVS;uniform vec4 scene_FogColor;uniform vec4 scene_FogParams;float ComputeFogIntensity(float fogDepth){\n#if SCENE_FOG_MODE == 1\nreturn clamp(fogDepth*scene_FogParams.x+scene_FogParams.y,0.0,1.0);\n#elif SCENE_FOG_MODE == 2\nreturn clamp(exp2(-fogDepth*scene_FogParams.z),0.0,1.0);\n#elif SCENE_FOG_MODE == 3\nfloat factor=fogDepth*scene_FogParams.w;return clamp(exp2(-factor*factor),0.0,1.0);\n#endif\n}\n#endif\n"; // eslint-disable-line
9523
9523
 
@@ -9537,7 +9537,7 @@ var blendShape_input = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifde
9537
9537
 
9538
9538
  var blendShape_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nint vertexOffset=gl_VertexID*renderer_BlendShapeTextureInfo.x;for(int i=0;i<RENDERER_BLENDSHAPE_COUNT;i++){int vertexElementOffset=vertexOffset;float weight=renderer_BlendShapeWeights[i];position.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#ifndef MATERIAL_OMIT_NORMAL\n#if defined( RENDERER_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_NORMAL )\nvertexElementOffset+=1;normal+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\nvertexElementOffset+=1;tangent.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#endif\n}\n#else\nposition.xyz+=POSITION_BS0*renderer_BlendShapeWeights[0];position.xyz+=POSITION_BS1*renderer_BlendShapeWeights[1];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];\n#endif\n#endif\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_HAS_NORMAL )\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];normal+=NORMAL_BS2*renderer_BlendShapeWeights[2];normal+=NORMAL_BS3*renderer_BlendShapeWeights[3];\n#endif\n#if defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];tangent.xyz+=TANGENT_BS2*renderer_BlendShapeWeights[2];tangent.xyz+=TANGENT_BS3*renderer_BlendShapeWeights[3];\n#endif\n#endif\n#else\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];position.xyz+=POSITION_BS4*renderer_BlendShapeWeights[4];position.xyz+=POSITION_BS5*renderer_BlendShapeWeights[5];position.xyz+=POSITION_BS6*renderer_BlendShapeWeights[6];position.xyz+=POSITION_BS7*renderer_BlendShapeWeights[7];\n#endif\n#endif\n#endif\n#endif\n"; // eslint-disable-line
9539
9539
 
9540
- var color_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_VERTEXCOLOR\nv_color=COLOR_0;\n#endif\n"; // eslint-disable-line
9540
+ var color_vert = "#define GLSLIFY 1\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nv_color=COLOR_0;\n#endif\n"; // eslint-disable-line
9541
9541
 
9542
9542
  var FogVertex = "#define GLSLIFY 1\n#if SCENE_FOG_MODE != 0\nvec4 positionVS=renderer_MVMat*position;v_positionVS=positionVS.xyz/positionVS.w;\n#endif\n"; // eslint-disable-line
9543
9543
 
@@ -9557,7 +9557,7 @@ var light_frag_define = "#define GLSLIFY 1\n#ifdef SCENE_DIRECT_LIGHT_COUNT\nstr
9557
9557
 
9558
9558
  var mobile_material_frag = "#define GLSLIFY 1\nuniform vec4 material_EmissiveColor;uniform vec4 material_BaseColor;uniform vec4 material_SpecularColor;uniform float material_Shininess;uniform float material_NormalIntensity;uniform float material_AlphaCutoff;\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nuniform sampler2D material_EmissiveTexture;\n#endif\n#ifdef MATERIAL_HAS_BASETEXTURE\nuniform sampler2D material_BaseTexture;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_TEXTURE\nuniform sampler2D material_SpecularTexture;\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\nuniform sampler2D material_NormalTexture;\n#endif\n"; // eslint-disable-line
9559
9559
 
9560
- var begin_mobile_frag = "#define GLSLIFY 1\nvec4 ambient=vec4(0.0);vec4 emission=material_EmissiveColor;vec4 diffuse=material_BaseColor;vec4 specular=material_SpecularColor;\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nvec4 emissiveTextureColor=texture2D(material_EmissiveTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nemissiveTextureColor=gammaToLinear(emissiveTextureColor);\n#endif\nemission*=emissiveTextureColor;\n#endif\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 diffuseTextureColor=texture2D(material_BaseTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ndiffuseTextureColor=gammaToLinear(diffuseTextureColor);\n#endif\ndiffuse*=diffuseTextureColor;\n#endif\n#ifdef RENDERER_HAS_VERTEXCOLOR\ndiffuse*=v_color;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_TEXTURE\nvec4 specularTextureColor=texture2D(material_SpecularTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nspecularTextureColor=gammaToLinear(specularTextureColor);\n#endif\nspecular*=specularTextureColor;\n#endif\nambient=vec4(scene_EnvMapLight.diffuse*scene_EnvMapLight.diffuseIntensity,1.0)*diffuse;"; // eslint-disable-line
9560
+ var begin_mobile_frag = "#define GLSLIFY 1\nvec4 ambient=vec4(0.0);vec4 emission=material_EmissiveColor;vec4 diffuse=material_BaseColor;vec4 specular=material_SpecularColor;\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nvec4 emissiveTextureColor=texture2D(material_EmissiveTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nemissiveTextureColor=gammaToLinear(emissiveTextureColor);\n#endif\nemission*=emissiveTextureColor;\n#endif\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 diffuseTextureColor=texture2D(material_BaseTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ndiffuseTextureColor=gammaToLinear(diffuseTextureColor);\n#endif\ndiffuse*=diffuseTextureColor;\n#endif\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\ndiffuse*=v_color;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_TEXTURE\nvec4 specularTextureColor=texture2D(material_SpecularTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nspecularTextureColor=gammaToLinear(specularTextureColor);\n#endif\nspecular*=specularTextureColor;\n#endif\nambient=vec4(scene_EnvMapLight.diffuse*scene_EnvMapLight.diffuseIntensity,1.0)*diffuse;"; // eslint-disable-line
9561
9561
 
9562
9562
  var begin_viewdir_frag = "#define GLSLIFY 1\n#ifdef MATERIAL_NEED_WORLD_POS\nvec3 V=normalize(camera_Position-v_pos);\n#endif\n"; // eslint-disable-line
9563
9563
 
@@ -9597,7 +9597,7 @@ var noise_simplex_4D = "#define GLSLIFY 1\nvec4 grad4(float j,vec4 ip){const vec
9597
9597
 
9598
9598
  var pbr_frag_define = "#define GLSLIFY 1\nuniform float material_AlphaCutoff;uniform vec4 material_BaseColor;uniform float material_Metal;uniform float material_Roughness;uniform float material_IOR;uniform vec3 material_PBRSpecularColor;uniform float material_Glossiness;uniform vec3 material_EmissiveColor;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nuniform float material_ClearCoat;uniform float material_ClearCoatRoughness;\n#endif\nuniform float material_NormalIntensity;uniform float material_OcclusionIntensity;uniform float material_OcclusionTextureCoord;\n#ifdef MATERIAL_HAS_BASETEXTURE\nuniform sampler2D material_BaseTexture;\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\nuniform sampler2D material_NormalTexture;\n#endif\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nuniform sampler2D material_EmissiveTexture;\n#endif\n#ifdef MATERIAL_HAS_ROUGHNESS_METALLIC_TEXTURE\nuniform sampler2D material_RoughnessMetallicTexture;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_GLOSSINESS_TEXTURE\nuniform sampler2D material_SpecularGlossinessTexture;\n#endif\n#ifdef MATERIAL_HAS_OCCLUSION_TEXTURE\nuniform sampler2D material_OcclusionTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_TEXTURE\nuniform sampler2D material_ClearCoatTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_ROUGHNESS_TEXTURE\nuniform sampler2D material_ClearCoatRoughnessTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE\nuniform sampler2D material_ClearCoatNormalTexture;\n#endif\nstruct ReflectedLight{vec3 directDiffuse;vec3 directSpecular;vec3 indirectDiffuse;vec3 indirectSpecular;};struct Geometry{vec3 position;vec3 normal;vec3 viewDir;float dotNV;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nvec3 clearCoatNormal;float clearCoatDotNV;\n#endif\n};struct Material{vec3 diffuseColor;float roughness;vec3 specularColor;float opacity;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nfloat clearCoat;float clearCoatRoughness;\n#endif\n};"; // eslint-disable-line
9599
9599
 
9600
- var pbr_helper = "#define GLSLIFY 1\n#include <normal_get>\nfloat computeSpecularOcclusion(float ambientOcclusion,float roughness,float dotNV){return saturate(pow(dotNV+ambientOcclusion,exp2(-16.0*roughness-1.0))-1.0+ambientOcclusion);}float getAARoughnessFactor(vec3 normal){\n#ifdef HAS_DERIVATIVES\nvec3 dxy=max(abs(dFdx(normal)),abs(dFdy(normal)));return 0.04+max(max(dxy.x,dxy.y),dxy.z);\n#else\nreturn 0.04;\n#endif\n}void initGeometry(out Geometry geometry){geometry.position=v_pos;geometry.viewDir=normalize(camera_Position-v_pos);\n#if defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE)\nmat3 tbn=getTBN();\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\ngeometry.normal=getNormalByNormalTexture(tbn,material_NormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.normal=getNormal();\n#endif\ngeometry.dotNV=saturate(dot(geometry.normal,geometry.viewDir));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\n#ifdef MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE\ngeometry.clearCoatNormal=getNormalByNormalTexture(tbn,material_ClearCoatNormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.clearCoatNormal=getNormal();\n#endif\ngeometry.clearCoatDotNV=saturate(dot(geometry.clearCoatNormal,geometry.viewDir));\n#endif\n}void initMaterial(out Material material,const in Geometry geometry){vec4 baseColor=material_BaseColor;float metal=material_Metal;float roughness=material_Roughness;vec3 specularColor=material_PBRSpecularColor;float glossiness=material_Glossiness;float alphaCutoff=material_AlphaCutoff;float F0=pow2((material_IOR-1.0)/(material_IOR+1.0));\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 baseTextureColor=texture2D(material_BaseTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nbaseTextureColor=gammaToLinear(baseTextureColor);\n#endif\nbaseColor*=baseTextureColor;\n#endif\n#ifdef RENDERER_HAS_VERTEXCOLOR\nbaseColor*=v_color;\n#endif\n#ifdef MATERIAL_IS_ALPHA_CUTOFF\nif(baseColor.a<alphaCutoff){discard;}\n#endif\n#ifdef MATERIAL_HAS_ROUGHNESS_METALLIC_TEXTURE\nvec4 metalRoughMapColor=texture2D(material_RoughnessMetallicTexture,v_uv);roughness*=metalRoughMapColor.g;metal*=metalRoughMapColor.b;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_GLOSSINESS_TEXTURE\nvec4 specularGlossinessColor=texture2D(material_SpecularGlossinessTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nspecularGlossinessColor=gammaToLinear(specularGlossinessColor);\n#endif\nspecularColor*=specularGlossinessColor.rgb;glossiness*=specularGlossinessColor.a;\n#endif\n#ifdef IS_METALLIC_WORKFLOW\nmaterial.diffuseColor=baseColor.rgb*(1.0-metal);material.specularColor=mix(vec3(F0),baseColor.rgb,metal);material.roughness=roughness;\n#else\nfloat specularStrength=max(max(specularColor.r,specularColor.g),specularColor.b);material.diffuseColor=baseColor.rgb*(1.0-specularStrength);material.specularColor=specularColor;material.roughness=1.0-glossiness;\n#endif\nmaterial.roughness=max(material.roughness,getAARoughnessFactor(geometry.normal));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nmaterial.clearCoat=material_ClearCoat;material.clearCoatRoughness=material_ClearCoatRoughness;\n#ifdef MATERIAL_HAS_CLEAR_COAT_TEXTURE\nmaterial.clearCoat*=texture2D(material_ClearCoatTexture,v_uv).r;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_ROUGHNESS_TEXTURE\nmaterial.clearCoatRoughness*=texture2D(material_ClearCoatRoughnessTexture,v_uv).g;\n#endif\nmaterial.clearCoat=saturate(material.clearCoat);material.clearCoatRoughness=max(material.clearCoatRoughness,getAARoughnessFactor(geometry.clearCoatNormal));\n#endif\n#ifdef MATERIAL_IS_TRANSPARENT\nmaterial.opacity=baseColor.a;\n#else\nmaterial.opacity=1.0;\n#endif\n}\n#include <brdf>\n#include <direct_irradiance_frag_define>\n#include <ibl_frag_define>\n"; // eslint-disable-line
9600
+ var pbr_helper = "#define GLSLIFY 1\n#include <normal_get>\nfloat computeSpecularOcclusion(float ambientOcclusion,float roughness,float dotNV){return saturate(pow(dotNV+ambientOcclusion,exp2(-16.0*roughness-1.0))-1.0+ambientOcclusion);}float getAARoughnessFactor(vec3 normal){\n#ifdef HAS_DERIVATIVES\nvec3 dxy=max(abs(dFdx(normal)),abs(dFdy(normal)));return 0.04+max(max(dxy.x,dxy.y),dxy.z);\n#else\nreturn 0.04;\n#endif\n}void initGeometry(out Geometry geometry){geometry.position=v_pos;geometry.viewDir=normalize(camera_Position-v_pos);\n#if defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE)\nmat3 tbn=getTBN();\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\ngeometry.normal=getNormalByNormalTexture(tbn,material_NormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.normal=getNormal();\n#endif\ngeometry.dotNV=saturate(dot(geometry.normal,geometry.viewDir));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\n#ifdef MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE\ngeometry.clearCoatNormal=getNormalByNormalTexture(tbn,material_ClearCoatNormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.clearCoatNormal=getNormal();\n#endif\ngeometry.clearCoatDotNV=saturate(dot(geometry.clearCoatNormal,geometry.viewDir));\n#endif\n}void initMaterial(out Material material,const in Geometry geometry){vec4 baseColor=material_BaseColor;float metal=material_Metal;float roughness=material_Roughness;vec3 specularColor=material_PBRSpecularColor;float glossiness=material_Glossiness;float alphaCutoff=material_AlphaCutoff;float F0=pow2((material_IOR-1.0)/(material_IOR+1.0));\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 baseTextureColor=texture2D(material_BaseTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nbaseTextureColor=gammaToLinear(baseTextureColor);\n#endif\nbaseColor*=baseTextureColor;\n#endif\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nbaseColor*=v_color;\n#endif\n#ifdef MATERIAL_IS_ALPHA_CUTOFF\nif(baseColor.a<alphaCutoff){discard;}\n#endif\n#ifdef MATERIAL_HAS_ROUGHNESS_METALLIC_TEXTURE\nvec4 metalRoughMapColor=texture2D(material_RoughnessMetallicTexture,v_uv);roughness*=metalRoughMapColor.g;metal*=metalRoughMapColor.b;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_GLOSSINESS_TEXTURE\nvec4 specularGlossinessColor=texture2D(material_SpecularGlossinessTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nspecularGlossinessColor=gammaToLinear(specularGlossinessColor);\n#endif\nspecularColor*=specularGlossinessColor.rgb;glossiness*=specularGlossinessColor.a;\n#endif\n#ifdef IS_METALLIC_WORKFLOW\nmaterial.diffuseColor=baseColor.rgb*(1.0-metal);material.specularColor=mix(vec3(F0),baseColor.rgb,metal);material.roughness=roughness;\n#else\nfloat specularStrength=max(max(specularColor.r,specularColor.g),specularColor.b);material.diffuseColor=baseColor.rgb*(1.0-specularStrength);material.specularColor=specularColor;material.roughness=1.0-glossiness;\n#endif\nmaterial.roughness=max(material.roughness,getAARoughnessFactor(geometry.normal));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nmaterial.clearCoat=material_ClearCoat;material.clearCoatRoughness=material_ClearCoatRoughness;\n#ifdef MATERIAL_HAS_CLEAR_COAT_TEXTURE\nmaterial.clearCoat*=texture2D(material_ClearCoatTexture,v_uv).r;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_ROUGHNESS_TEXTURE\nmaterial.clearCoatRoughness*=texture2D(material_ClearCoatRoughnessTexture,v_uv).g;\n#endif\nmaterial.clearCoat=saturate(material.clearCoat);material.clearCoatRoughness=max(material.clearCoatRoughness,getAARoughnessFactor(geometry.clearCoatNormal));\n#endif\n#ifdef MATERIAL_IS_TRANSPARENT\nmaterial.opacity=baseColor.a;\n#else\nmaterial.opacity=1.0;\n#endif\n}\n#include <brdf>\n#include <direct_irradiance_frag_define>\n#include <ibl_frag_define>\n"; // eslint-disable-line
9601
9601
 
9602
9602
  var brdf = "#define GLSLIFY 1\nfloat F_Schlick(float dotLH){return 0.04+0.96*(pow(1.0-dotLH,5.0));}vec3 F_Schlick(vec3 specularColor,float dotLH){float fresnel=exp2((-5.55473*dotLH-6.98316)*dotLH);return(1.0-specularColor)*fresnel+specularColor;}float G_GGX_SmithCorrelated(float alpha,float dotNL,float dotNV){float a2=pow2(alpha);float gv=dotNL*sqrt(a2+(1.0-a2)*pow2(dotNV));float gl=dotNV*sqrt(a2+(1.0-a2)*pow2(dotNL));return 0.5/max(gv+gl,EPSILON);}float D_GGX(float alpha,float dotNH){float a2=pow2(alpha);float denom=pow2(dotNH)*(a2-1.0)+1.0;return RECIPROCAL_PI*a2/pow2(denom);}vec3 BRDF_Specular_GGX(vec3 incidentDirection,vec3 viewDir,vec3 normal,vec3 specularColor,float roughness){float alpha=pow2(roughness);vec3 halfDir=normalize(incidentDirection+viewDir);float dotNL=saturate(dot(normal,incidentDirection));float dotNV=saturate(dot(normal,viewDir));float dotNH=saturate(dot(normal,halfDir));float dotLH=saturate(dot(incidentDirection,halfDir));vec3 F=F_Schlick(specularColor,dotLH);float G=G_GGX_SmithCorrelated(alpha,dotNL,dotNV);float D=D_GGX(alpha,dotNH);return F*(G*D);}vec3 BRDF_Diffuse_Lambert(vec3 diffuseColor){return RECIPROCAL_PI*diffuseColor;}"; // eslint-disable-line
9603
9603
 
@@ -11172,8 +11172,10 @@ SimpleSpriteAssembler = __decorate([
11172
11172
  _this = Renderer.call(this, entity) || this;
11173
11173
  /** The mask layers the sprite mask influence to. */ _this.influenceLayers = SpriteMaskLayer.Everything;
11174
11174
  _this._sprite = null;
11175
- _this._width = undefined;
11176
- _this._height = undefined;
11175
+ _this._automaticWidth = 0;
11176
+ _this._automaticHeight = 0;
11177
+ _this._customWidth = undefined;
11178
+ _this._customHeight = undefined;
11177
11179
  _this._flipX = false;
11178
11180
  _this._flipY = false;
11179
11181
  _this._alphaCutoff = 0.5;
@@ -11193,12 +11195,11 @@ SimpleSpriteAssembler = __decorate([
11193
11195
  /**
11194
11196
  * @internal
11195
11197
  */ _proto._updateBounds = function _updateBounds(worldBounds) {
11196
- var _this_sprite;
11197
- if (!((_this_sprite = this.sprite) == null ? void 0 : _this_sprite.texture) || !this.width || !this.height) {
11198
+ if (this.sprite) {
11199
+ SimpleSpriteAssembler.updatePositions(this);
11200
+ } else {
11198
11201
  worldBounds.min.set(0, 0, 0);
11199
11202
  worldBounds.max.set(0, 0, 0);
11200
- } else {
11201
- SimpleSpriteAssembler.updatePositions(this);
11202
11203
  }
11203
11204
  };
11204
11205
  /**
@@ -11209,12 +11210,12 @@ SimpleSpriteAssembler = __decorate([
11209
11210
  if (!((_this_sprite = this.sprite) == null ? void 0 : _this_sprite.texture) || !this.width || !this.height) {
11210
11211
  return;
11211
11212
  }
11212
- // Update position.
11213
+ // Update position
11213
11214
  if (this._dirtyUpdateFlag & RendererUpdateFlags.WorldVolume) {
11214
11215
  SimpleSpriteAssembler.updatePositions(this);
11215
11216
  this._dirtyUpdateFlag &= ~RendererUpdateFlags.WorldVolume;
11216
11217
  }
11217
- // Update uv.
11218
+ // Update uv
11218
11219
  if (this._dirtyUpdateFlag & 0x2) {
11219
11220
  SimpleSpriteAssembler.updateUVs(this);
11220
11221
  this._dirtyUpdateFlag &= ~0x2;
@@ -11237,11 +11238,27 @@ SimpleSpriteAssembler = __decorate([
11237
11238
  this._sprite = null;
11238
11239
  this._verticesData = null;
11239
11240
  };
11241
+ _proto._calDefaultSize = function _calDefaultSize() {
11242
+ var sprite = this._sprite;
11243
+ if (sprite) {
11244
+ this._automaticWidth = sprite.width;
11245
+ this._automaticHeight = sprite.height;
11246
+ } else {
11247
+ this._automaticWidth = this._automaticHeight = 0;
11248
+ }
11249
+ this._dirtyUpdateFlag &= ~0x4;
11250
+ };
11240
11251
  _proto._onSpriteChange = function _onSpriteChange(type) {
11241
11252
  switch(type){
11242
11253
  case SpriteModifyFlags.texture:
11243
11254
  this.shaderData.setTexture(SpriteMask._textureProperty, this.sprite.texture);
11244
11255
  break;
11256
+ case SpriteModifyFlags.size:
11257
+ this._dirtyUpdateFlag |= 0x4;
11258
+ if (this._customWidth === undefined || this._customHeight === undefined) {
11259
+ this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
11260
+ }
11261
+ break;
11245
11262
  case SpriteModifyFlags.region:
11246
11263
  case SpriteModifyFlags.atlasRegionOffset:
11247
11264
  this._dirtyUpdateFlag |= 0x3;
@@ -11249,22 +11266,31 @@ SimpleSpriteAssembler = __decorate([
11249
11266
  case SpriteModifyFlags.atlasRegion:
11250
11267
  this._dirtyUpdateFlag |= 0x2;
11251
11268
  break;
11269
+ case SpriteModifyFlags.pivot:
11270
+ this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
11271
+ break;
11252
11272
  }
11253
11273
  };
11254
11274
  _create_class(SpriteMask, [
11255
11275
  {
11256
11276
  key: "width",
11257
11277
  get: /**
11258
- * Render width.
11278
+ * Render width (in world coordinates).
11279
+ *
11280
+ * @remarks
11281
+ * If width is set, return the set value,
11282
+ * otherwise return `SpriteMask.sprite.width`.
11259
11283
  */ function get() {
11260
- if (this._width === undefined && this._sprite) {
11261
- this.width = this._sprite.width;
11284
+ if (this._customWidth !== undefined) {
11285
+ return this._customWidth;
11286
+ } else {
11287
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
11288
+ return this._automaticWidth;
11262
11289
  }
11263
- return this._width;
11264
11290
  },
11265
11291
  set: function set(value) {
11266
- if (this._width !== value) {
11267
- this._width = value;
11292
+ if (this._customWidth !== value) {
11293
+ this._customWidth = value;
11268
11294
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
11269
11295
  }
11270
11296
  }
@@ -11272,16 +11298,22 @@ SimpleSpriteAssembler = __decorate([
11272
11298
  {
11273
11299
  key: "height",
11274
11300
  get: /**
11275
- * Render height.
11301
+ * Render height (in world coordinates).
11302
+ *
11303
+ * @remarks
11304
+ * If height is set, return the set value,
11305
+ * otherwise return `SpriteMask.sprite.height`.
11276
11306
  */ function get() {
11277
- if (this._height === undefined && this._sprite) {
11278
- this.height = this._sprite.height;
11307
+ if (this._customHeight !== undefined) {
11308
+ return this._customHeight;
11309
+ } else {
11310
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
11311
+ return this._automaticHeight;
11279
11312
  }
11280
- return this._height;
11281
11313
  },
11282
11314
  set: function set(value) {
11283
- if (this._height !== value) {
11284
- this._height = value;
11315
+ if (this._customHeight !== value) {
11316
+ this._customHeight = value;
11285
11317
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
11286
11318
  }
11287
11319
  }
@@ -11325,9 +11357,9 @@ SimpleSpriteAssembler = __decorate([
11325
11357
  var lastSprite = this._sprite;
11326
11358
  if (lastSprite !== value) {
11327
11359
  lastSprite && lastSprite._updateFlagManager.removeListener(this._onSpriteChange);
11360
+ this._dirtyUpdateFlag |= 0x7;
11328
11361
  if (value) {
11329
11362
  value._updateFlagManager.addListener(this._onSpriteChange);
11330
- this._dirtyUpdateFlag |= 0x3;
11331
11363
  this.shaderData.setTexture(SpriteMask._textureProperty, value.texture);
11332
11364
  } else {
11333
11365
  this.shaderData.setTexture(SpriteMask._textureProperty, null);
@@ -11367,10 +11399,16 @@ __decorate([
11367
11399
  ], SpriteMask.prototype, "_sprite", void 0);
11368
11400
  __decorate([
11369
11401
  ignoreClone
11370
- ], SpriteMask.prototype, "_width", void 0);
11402
+ ], SpriteMask.prototype, "_automaticWidth", void 0);
11371
11403
  __decorate([
11372
11404
  ignoreClone
11373
- ], SpriteMask.prototype, "_height", void 0);
11405
+ ], SpriteMask.prototype, "_automaticHeight", void 0);
11406
+ __decorate([
11407
+ assignmentClone
11408
+ ], SpriteMask.prototype, "_customWidth", void 0);
11409
+ __decorate([
11410
+ assignmentClone
11411
+ ], SpriteMask.prototype, "_customHeight", void 0);
11374
11412
  __decorate([
11375
11413
  assignmentClone
11376
11414
  ], SpriteMask.prototype, "_flipX", void 0);
@@ -11388,7 +11426,9 @@ var /**
11388
11426
  */ SpriteMaskUpdateFlags;
11389
11427
  (function(SpriteMaskUpdateFlags) {
11390
11428
  SpriteMaskUpdateFlags[SpriteMaskUpdateFlags[/** UV. */ "UV"] = 0x2] = "UV";
11391
- SpriteMaskUpdateFlags[SpriteMaskUpdateFlags[/** All. */ "All"] = 0x3] = "All";
11429
+ SpriteMaskUpdateFlags[SpriteMaskUpdateFlags[/** WorldVolume and UV . */ "RenderData"] = 0x3] = "RenderData";
11430
+ SpriteMaskUpdateFlags[SpriteMaskUpdateFlags[/** Automatic Size. */ "AutomaticSize"] = 0x4] = "AutomaticSize";
11431
+ SpriteMaskUpdateFlags[SpriteMaskUpdateFlags[/** All. */ "All"] = 0x7] = "All";
11392
11432
  })(SpriteMaskUpdateFlags || (SpriteMaskUpdateFlags = {}));
11393
11433
 
11394
11434
  /**
@@ -12195,6 +12235,7 @@ var MeshModifyFlags;
12195
12235
  var subDataDirtyFlags = this._subDataDirtyFlags;
12196
12236
  var blendShapeFloatStride = this._vertexElementCount * 3;
12197
12237
  var blendShapeByteStride = blendShapeFloatStride * 4;
12238
+ var bufferOffset = this._bufferBindingOffset;
12198
12239
  // @todo: should fix bug when dataChangedFlag is true
12199
12240
  for(var i = 0, n = blendShapes.length; i < n; i++){
12200
12241
  var dataChangedFlag = subDataDirtyFlags[i];
@@ -12212,7 +12253,7 @@ var MeshModifyFlags;
12212
12253
  var offset = indexInBuffer * blendShapeFloatStride;
12213
12254
  var storeInfo = storeInfos[i];
12214
12255
  storeInfo || (storeInfos[i] = storeInfo = new Vector2());
12215
- storeInfo.set(bufferIndex + 1, indexInBuffer * blendShapeByteStride); // BlendShape buffer is start from 1
12256
+ storeInfo.set(bufferOffset + bufferIndex, indexInBuffer * blendShapeByteStride); // BufferOffset is mesh vertexBuffer offset
12216
12257
  var deltaPositions = endFrame.deltaPositions;
12217
12258
  for(var j = 0; j < vertexCount; j++){
12218
12259
  var start = offset + bufferFloatStride * j;
@@ -13489,6 +13530,7 @@ var VertexChangedFlags;
13489
13530
  function MeshRenderer(entity) {
13490
13531
  var _this;
13491
13532
  _this = Renderer.call(this, entity) || this;
13533
+ _this._enableVertexColor = false;
13492
13534
  _this._onMeshChanged = _this._onMeshChanged.bind(_assert_this_initialized(_this));
13493
13535
  return _this;
13494
13536
  }
@@ -13533,7 +13575,7 @@ var VertexChangedFlags;
13533
13575
  shaderData.disableMacro(MeshRenderer._uv1Macro);
13534
13576
  shaderData.disableMacro(MeshRenderer._normalMacro);
13535
13577
  shaderData.disableMacro(MeshRenderer._tangentMacro);
13536
- shaderData.disableMacro(MeshRenderer._vertexColorMacro);
13578
+ shaderData.disableMacro(MeshRenderer._enableVertexColorMacro);
13537
13579
  for(var i = 0, n = vertexElements.length; i < n; i++){
13538
13580
  switch(vertexElements[i].semantic){
13539
13581
  case "TEXCOORD_0":
@@ -13549,7 +13591,7 @@ var VertexChangedFlags;
13549
13591
  shaderData.enableMacro(MeshRenderer._tangentMacro);
13550
13592
  break;
13551
13593
  case "COLOR_0":
13552
- shaderData.enableMacro(MeshRenderer._vertexColorMacro);
13594
+ this._enableVertexColor && shaderData.enableMacro(MeshRenderer._enableVertexColorMacro);
13553
13595
  break;
13554
13596
  }
13555
13597
  }
@@ -13600,6 +13642,20 @@ var VertexChangedFlags;
13600
13642
  this._setMesh(value);
13601
13643
  }
13602
13644
  }
13645
+ },
13646
+ {
13647
+ key: "enableVertexColor",
13648
+ get: /**
13649
+ * Whether enable vertex color.
13650
+ */ function get() {
13651
+ return this._enableVertexColor;
13652
+ },
13653
+ set: function set(value) {
13654
+ if (value !== this._enableVertexColor) {
13655
+ this._dirtyUpdateFlag |= 0x2;
13656
+ this._enableVertexColor = value;
13657
+ }
13658
+ }
13603
13659
  }
13604
13660
  ]);
13605
13661
  return MeshRenderer;
@@ -13617,7 +13673,7 @@ var VertexChangedFlags;
13617
13673
  MeshRenderer._tangentMacro = ShaderMacro.getByName("RENDERER_HAS_TANGENT");
13618
13674
  })();
13619
13675
  (function() {
13620
- MeshRenderer._vertexColorMacro = ShaderMacro.getByName("RENDERER_HAS_VERTEXCOLOR");
13676
+ MeshRenderer._enableVertexColorMacro = ShaderMacro.getByName("RENDERER_ENABLE_VERTEXCOLOR");
13621
13677
  })();
13622
13678
  __decorate([
13623
13679
  ignoreClone
@@ -20393,8 +20449,10 @@ var TextVerticalAlignment;
20393
20449
  if (name === void 0) name = null;
20394
20450
  var _this;
20395
20451
  _this = ReferResource.call(this, engine) || this;
20396
- _this._width = undefined;
20397
- _this._height = undefined;
20452
+ _this._automaticWidth = 0;
20453
+ _this._automaticHeight = 0;
20454
+ _this._customWidth = undefined;
20455
+ _this._customHeight = undefined;
20398
20456
  _this._positions = [
20399
20457
  new Vector2(),
20400
20458
  new Vector2(),
@@ -20415,7 +20473,7 @@ var TextVerticalAlignment;
20415
20473
  _this._region = new Rect(0, 0, 1, 1);
20416
20474
  _this._pivot = new Vector2(0.5, 0.5);
20417
20475
  _this._border = new Vector4(0, 0, 0, 0);
20418
- _this._dirtyUpdateFlag = 0x3;
20476
+ _this._dirtyUpdateFlag = 0x7;
20419
20477
  /** @internal */ _this._updateFlagManager = new UpdateFlagManager();
20420
20478
  _this._texture = texture;
20421
20479
  region && _this._region.copyFrom(region);
@@ -20463,9 +20521,12 @@ var TextVerticalAlignment;
20463
20521
  if (this._texture) {
20464
20522
  var _this = this, _texture = _this._texture, _atlasRegion = _this._atlasRegion, _atlasRegionOffset = _this._atlasRegionOffset, _region = _this._region;
20465
20523
  var pixelsPerUnitReciprocal = 1.0 / Engine._pixelsPerUnit;
20466
- this._width = _texture.width * _atlasRegion.width / (1 - _atlasRegionOffset.x - _atlasRegionOffset.z) * _region.width * pixelsPerUnitReciprocal;
20467
- this._height = _texture.height * _atlasRegion.height / (1 - _atlasRegionOffset.y - _atlasRegionOffset.w) * _region.height * pixelsPerUnitReciprocal;
20524
+ this._automaticWidth = _texture.width * _atlasRegion.width / (1 - _atlasRegionOffset.x - _atlasRegionOffset.z) * _region.width * pixelsPerUnitReciprocal;
20525
+ this._automaticHeight = _texture.height * _atlasRegion.height / (1 - _atlasRegionOffset.y - _atlasRegionOffset.w) * _region.height * pixelsPerUnitReciprocal;
20526
+ } else {
20527
+ this._automaticWidth = this._automaticHeight = 0;
20468
20528
  }
20529
+ this._dirtyUpdateFlag &= ~0x4;
20469
20530
  };
20470
20531
  _proto._updatePositions = function _updatePositions() {
20471
20532
  var blank = this._atlasRegionOffset;
@@ -20519,11 +20580,16 @@ var TextVerticalAlignment;
20519
20580
  };
20520
20581
  _proto._dispatchSpriteChange = function _dispatchSpriteChange(type) {
20521
20582
  switch(type){
20583
+ case SpriteModifyFlags.texture:
20584
+ this._dirtyUpdateFlag |= 0x4;
20585
+ break;
20522
20586
  case SpriteModifyFlags.atlasRegionOffset:
20523
20587
  case SpriteModifyFlags.region:
20524
- this._dirtyUpdateFlag |= 0x3;
20588
+ this._dirtyUpdateFlag |= 0x7;
20525
20589
  break;
20526
20590
  case SpriteModifyFlags.atlasRegion:
20591
+ this._dirtyUpdateFlag |= 0x4 | 0x2;
20592
+ break;
20527
20593
  case SpriteModifyFlags.border:
20528
20594
  this._dirtyUpdateFlag |= 0x2;
20529
20595
  break;
@@ -20542,7 +20608,9 @@ var TextVerticalAlignment;
20542
20608
  if (this._texture !== value) {
20543
20609
  this._texture = value;
20544
20610
  this._dispatchSpriteChange(SpriteModifyFlags.texture);
20545
- (this._width === undefined || this._height === undefined) && this._dispatchSpriteChange(SpriteModifyFlags.size);
20611
+ if (this._customWidth === undefined || this._customHeight === undefined) {
20612
+ this._dispatchSpriteChange(SpriteModifyFlags.size);
20613
+ }
20546
20614
  }
20547
20615
  }
20548
20616
  },
@@ -20550,13 +20618,21 @@ var TextVerticalAlignment;
20550
20618
  key: "width",
20551
20619
  get: /**
20552
20620
  * The width of the sprite (in world coordinates).
20621
+ *
20622
+ * @remarks
20623
+ * If width is set, return the set value,
20624
+ * otherwise return the width calculated according to `Texture.width`, `Sprite.region`, `Sprite.atlasRegion`, `Sprite.atlasRegionOffset` and `Engine._pixelsPerUnit`.
20553
20625
  */ function get() {
20554
- this._width === undefined && this._calDefaultSize();
20555
- return this._width;
20626
+ if (this._customWidth !== undefined) {
20627
+ return this._customWidth;
20628
+ } else {
20629
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
20630
+ return this._automaticWidth;
20631
+ }
20556
20632
  },
20557
20633
  set: function set(value) {
20558
- if (this._width !== value) {
20559
- this._width = value;
20634
+ if (this._customWidth !== value) {
20635
+ this._customWidth = value;
20560
20636
  this._dispatchSpriteChange(SpriteModifyFlags.size);
20561
20637
  }
20562
20638
  }
@@ -20565,13 +20641,21 @@ var TextVerticalAlignment;
20565
20641
  key: "height",
20566
20642
  get: /**
20567
20643
  * The height of the sprite (in world coordinates).
20644
+ *
20645
+ * @remarks
20646
+ * If height is set, return the set value,
20647
+ * otherwise return the height calculated according to `Texture.height`, `Sprite.region`, `Sprite.atlasRegion`, `Sprite.atlasRegionOffset` and `Engine._pixelsPerUnit`.
20568
20648
  */ function get() {
20569
- this._height === undefined && this._calDefaultSize();
20570
- return this._height;
20649
+ if (this._customHeight !== undefined) {
20650
+ return this._customHeight;
20651
+ } else {
20652
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
20653
+ return this._automaticHeight;
20654
+ }
20571
20655
  },
20572
20656
  set: function set(value) {
20573
- if (this._height !== value) {
20574
- this._height = value;
20657
+ if (this._customHeight !== value) {
20658
+ this._customHeight = value;
20575
20659
  this._dispatchSpriteChange(SpriteModifyFlags.size);
20576
20660
  }
20577
20661
  }
@@ -20601,7 +20685,9 @@ var TextVerticalAlignment;
20601
20685
  var y = MathUtil$1.clamp(value.y, 0, 1);
20602
20686
  this._atlasRegion.set(x, y, MathUtil$1.clamp(value.width, 0, 1 - x), MathUtil$1.clamp(value.height, 0, 1 - y));
20603
20687
  this._dispatchSpriteChange(SpriteModifyFlags.atlasRegion);
20604
- (this._width === undefined || this._height === undefined) && this._dispatchSpriteChange(SpriteModifyFlags.size);
20688
+ if (this._customWidth === undefined || this._customHeight === undefined) {
20689
+ this._dispatchSpriteChange(SpriteModifyFlags.size);
20690
+ }
20605
20691
  }
20606
20692
  },
20607
20693
  {
@@ -20616,7 +20702,9 @@ var TextVerticalAlignment;
20616
20702
  var y = MathUtil$1.clamp(value.y, 0, 1);
20617
20703
  this._atlasRegionOffset.set(x, y, MathUtil$1.clamp(value.z, 0, 1 - x), MathUtil$1.clamp(value.w, 0, 1 - y));
20618
20704
  this._dispatchSpriteChange(SpriteModifyFlags.atlasRegionOffset);
20619
- (this._width === undefined || this._height === undefined) && this._dispatchSpriteChange(SpriteModifyFlags.size);
20705
+ if (this._customWidth === undefined || this._customHeight === undefined) {
20706
+ this._dispatchSpriteChange(SpriteModifyFlags.size);
20707
+ }
20620
20708
  }
20621
20709
  },
20622
20710
  {
@@ -20632,7 +20720,9 @@ var TextVerticalAlignment;
20632
20720
  var y = MathUtil$1.clamp(value.y, 0, 1);
20633
20721
  region.set(x, y, MathUtil$1.clamp(value.width, 0, 1 - x), MathUtil$1.clamp(value.height, 0, 1 - y));
20634
20722
  this._dispatchSpriteChange(SpriteModifyFlags.region);
20635
- (this._width === undefined || this._height === undefined) && this._dispatchSpriteChange(SpriteModifyFlags.size);
20723
+ if (this._customWidth === undefined || this._customHeight === undefined) {
20724
+ this._dispatchSpriteChange(SpriteModifyFlags.size);
20725
+ }
20636
20726
  }
20637
20727
  },
20638
20728
  {
@@ -20682,7 +20772,8 @@ var SpriteUpdateFlags;
20682
20772
  (function(SpriteUpdateFlags) {
20683
20773
  SpriteUpdateFlags[SpriteUpdateFlags["positions"] = 0x1] = "positions";
20684
20774
  SpriteUpdateFlags[SpriteUpdateFlags["uvs"] = 0x2] = "uvs";
20685
- SpriteUpdateFlags[SpriteUpdateFlags["all"] = 0x3] = "all";
20775
+ SpriteUpdateFlags[SpriteUpdateFlags["automaticSize"] = 0x4] = "automaticSize";
20776
+ SpriteUpdateFlags[SpriteUpdateFlags["all"] = 0x7] = "all";
20686
20777
  })(SpriteUpdateFlags || (SpriteUpdateFlags = {}));
20687
20778
 
20688
20779
  var _SlicedSpriteAssembler;
@@ -21174,8 +21265,10 @@ var TiledType;
21174
21265
  _this._tiledAdaptiveThreshold = 0.5;
21175
21266
  _this._color = new Color$1(1, 1, 1, 1);
21176
21267
  _this._sprite = null;
21177
- _this._width = undefined;
21178
- _this._height = undefined;
21268
+ _this._automaticWidth = 0;
21269
+ _this._automaticHeight = 0;
21270
+ _this._customWidth = undefined;
21271
+ _this._customHeight = undefined;
21179
21272
  _this._flipX = false;
21180
21273
  _this._flipY = false;
21181
21274
  _this._maskLayer = SpriteMaskLayer.Layer0;
@@ -21192,6 +21285,7 @@ var TiledType;
21192
21285
  */ _proto._cloneTo = function _cloneTo(target) {
21193
21286
  target._assembler.resetData(target);
21194
21287
  target.sprite = this._sprite;
21288
+ target.drawMode = this._drawMode;
21195
21289
  };
21196
21290
  /**
21197
21291
  * @internal
@@ -21202,12 +21296,11 @@ var TiledType;
21202
21296
  /**
21203
21297
  * @internal
21204
21298
  */ _proto._updateBounds = function _updateBounds(worldBounds) {
21205
- var _this_sprite;
21206
- if (!((_this_sprite = this.sprite) == null ? void 0 : _this_sprite.texture) || !this.width || !this.height) {
21299
+ if (this.sprite) {
21300
+ this._assembler.updatePositions(this);
21301
+ } else {
21207
21302
  worldBounds.min.set(0, 0, 0);
21208
21303
  worldBounds.max.set(0, 0, 0);
21209
- } else {
21210
- this._assembler.updatePositions(this);
21211
21304
  }
21212
21305
  };
21213
21306
  /**
@@ -21217,17 +21310,17 @@ var TiledType;
21217
21310
  if (!((_this_sprite = this.sprite) == null ? void 0 : _this_sprite.texture) || !this.width || !this.height) {
21218
21311
  return;
21219
21312
  }
21220
- // Update position.
21313
+ // Update position
21221
21314
  if (this._dirtyUpdateFlag & RendererUpdateFlags.WorldVolume) {
21222
21315
  this._assembler.updatePositions(this);
21223
21316
  this._dirtyUpdateFlag &= ~RendererUpdateFlags.WorldVolume;
21224
21317
  }
21225
- // Update uv.
21318
+ // Update uv
21226
21319
  if (this._dirtyUpdateFlag & 0x2) {
21227
21320
  this._assembler.updateUVs(this);
21228
21321
  this._dirtyUpdateFlag &= ~0x2;
21229
21322
  }
21230
- // Push render data
21323
+ // Push primitive
21231
21324
  var material = this.getMaterial();
21232
21325
  var texture = this.sprite.texture;
21233
21326
  var renderData = this._engine._spriteRenderDataPool.getFromPool();
@@ -21245,6 +21338,16 @@ var TiledType;
21245
21338
  this._assembler = null;
21246
21339
  this._verticesData = null;
21247
21340
  };
21341
+ _proto._calDefaultSize = function _calDefaultSize() {
21342
+ var sprite = this._sprite;
21343
+ if (sprite) {
21344
+ this._automaticWidth = sprite.width;
21345
+ this._automaticHeight = sprite.height;
21346
+ } else {
21347
+ this._automaticWidth = this._automaticHeight = 0;
21348
+ }
21349
+ this._dirtyUpdateFlag &= ~0x4;
21350
+ };
21248
21351
  _proto._updateStencilState = function _updateStencilState() {
21249
21352
  // Update stencil.
21250
21353
  var material = this.getInstanceMaterial();
@@ -21271,22 +21374,21 @@ var TiledType;
21271
21374
  break;
21272
21375
  case SpriteModifyFlags.size:
21273
21376
  var _this = this, drawMode = _this._drawMode;
21274
- if (drawMode === SpriteDrawMode.Sliced) {
21377
+ this._dirtyUpdateFlag |= 0x4;
21378
+ if (this._drawMode === SpriteDrawMode.Sliced) {
21275
21379
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
21276
21380
  } else if (drawMode === SpriteDrawMode.Tiled) {
21277
21381
  this._dirtyUpdateFlag |= 0x3;
21278
21382
  } else {
21279
21383
  // When the width and height of `SpriteRenderer` are `undefined`,
21280
21384
  // the `size` of `Sprite` will affect the position of `SpriteRenderer`.
21281
- if (this._width === undefined || this._height === undefined) {
21385
+ if (this._customWidth === undefined || this._customHeight === undefined) {
21282
21386
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
21283
21387
  }
21284
21388
  }
21285
21389
  break;
21286
21390
  case SpriteModifyFlags.border:
21287
- if (this._drawMode === SpriteDrawMode.Sliced || this._drawMode === SpriteDrawMode.Tiled) {
21288
- this._dirtyUpdateFlag |= 0x3;
21289
- }
21391
+ this._drawMode === SpriteDrawMode.Sliced && (this._dirtyUpdateFlag |= 0x3);
21290
21392
  break;
21291
21393
  case SpriteModifyFlags.region:
21292
21394
  case SpriteModifyFlags.atlasRegionOffset:
@@ -21371,9 +21473,9 @@ var TiledType;
21371
21473
  var lastSprite = this._sprite;
21372
21474
  if (lastSprite !== value) {
21373
21475
  lastSprite && lastSprite._updateFlagManager.removeListener(this._onSpriteChange);
21476
+ this._dirtyUpdateFlag |= 0x7;
21374
21477
  if (value) {
21375
21478
  value._updateFlagManager.addListener(this._onSpriteChange);
21376
- this._dirtyUpdateFlag |= 0x3;
21377
21479
  this.shaderData.setTexture(SpriteRenderer._textureProperty, value.texture);
21378
21480
  } else {
21379
21481
  this.shaderData.setTexture(SpriteRenderer._textureProperty, null);
@@ -21398,16 +21500,22 @@ var TiledType;
21398
21500
  {
21399
21501
  key: "width",
21400
21502
  get: /**
21401
- * Render width.
21503
+ * Render width (in world coordinates).
21504
+ *
21505
+ * @remarks
21506
+ * If width is set, return the set value,
21507
+ * otherwise return `SpriteRenderer.sprite.width`.
21402
21508
  */ function get() {
21403
- this._width === undefined && this._sprite && (this.width = this._sprite.width);
21404
- return this._width;
21509
+ if (this._customWidth !== undefined) {
21510
+ return this._customWidth;
21511
+ } else {
21512
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
21513
+ return this._automaticWidth;
21514
+ }
21405
21515
  },
21406
21516
  set: function set(value) {
21407
- // Update width if undefined
21408
- this._width === undefined && this._sprite && (this._width = this._sprite.width);
21409
- if (this._width !== value) {
21410
- this._width = value;
21517
+ if (this._customWidth !== value) {
21518
+ this._customWidth = value;
21411
21519
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
21412
21520
  }
21413
21521
  }
@@ -21415,16 +21523,22 @@ var TiledType;
21415
21523
  {
21416
21524
  key: "height",
21417
21525
  get: /**
21418
- * Render height.
21526
+ * Render height (in world coordinates).
21527
+ *
21528
+ * @remarks
21529
+ * If height is set, return the set value,
21530
+ * otherwise return `SpriteRenderer.sprite.height`.
21419
21531
  */ function get() {
21420
- this._height === undefined && this._sprite && (this.height = this._sprite.height);
21421
- return this._height;
21532
+ if (this._customHeight !== undefined) {
21533
+ return this._customHeight;
21534
+ } else {
21535
+ this._dirtyUpdateFlag & 0x4 && this._calDefaultSize();
21536
+ return this._automaticHeight;
21537
+ }
21422
21538
  },
21423
21539
  set: function set(value) {
21424
- // Update height if undefined
21425
- this._height === undefined && this._sprite && (this._height = this._sprite.height);
21426
- if (this._height !== value) {
21427
- this._height = value;
21540
+ if (this._customHeight !== value) {
21541
+ this._customHeight = value;
21428
21542
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
21429
21543
  }
21430
21544
  }
@@ -21511,10 +21625,16 @@ __decorate([
21511
21625
  ], SpriteRenderer.prototype, "_sprite", void 0);
21512
21626
  __decorate([
21513
21627
  ignoreClone
21514
- ], SpriteRenderer.prototype, "_width", void 0);
21628
+ ], SpriteRenderer.prototype, "_automaticWidth", void 0);
21515
21629
  __decorate([
21516
21630
  ignoreClone
21517
- ], SpriteRenderer.prototype, "_height", void 0);
21631
+ ], SpriteRenderer.prototype, "_automaticHeight", void 0);
21632
+ __decorate([
21633
+ assignmentClone
21634
+ ], SpriteRenderer.prototype, "_customWidth", void 0);
21635
+ __decorate([
21636
+ assignmentClone
21637
+ ], SpriteRenderer.prototype, "_customHeight", void 0);
21518
21638
  __decorate([
21519
21639
  assignmentClone
21520
21640
  ], SpriteRenderer.prototype, "_flipX", void 0);
@@ -21535,7 +21655,9 @@ var /**
21535
21655
  */ SpriteRendererUpdateFlags;
21536
21656
  (function(SpriteRendererUpdateFlags) {
21537
21657
  SpriteRendererUpdateFlags[SpriteRendererUpdateFlags[/** UV. */ "UV"] = 0x2] = "UV";
21538
- SpriteRendererUpdateFlags[SpriteRendererUpdateFlags[/** All. */ "All"] = 0x3] = "All";
21658
+ SpriteRendererUpdateFlags[SpriteRendererUpdateFlags[/** WorldVolume and UV . */ "RenderData"] = 0x3] = "RenderData";
21659
+ SpriteRendererUpdateFlags[SpriteRendererUpdateFlags[/** Automatic Size. */ "AutomaticSize"] = 0x4] = "AutomaticSize";
21660
+ SpriteRendererUpdateFlags[SpriteRendererUpdateFlags[/** All. */ "All"] = 0x7] = "All";
21539
21661
  })(SpriteRendererUpdateFlags || (SpriteRendererUpdateFlags = {}));
21540
21662
 
21541
21663
  /**