@galacean/engine-core 1.1.0-beta.5 → 1.1.0-beta.6

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.
@@ -15747,8 +15747,8 @@ exports.Joint = __decorate([
15747
15747
  continue;
15748
15748
  }
15749
15749
  var cameras = scene._activeCameras;
15750
- for(var j = 0; j < cameras.length; j++){
15751
- var camera = cameras[i];
15750
+ for(var j = cameras.length - 1; j >= 0; j--){
15751
+ var camera = cameras[j];
15752
15752
  if (!camera.enabled || camera.renderTarget) {
15753
15753
  continue;
15754
15754
  }
@@ -17063,11 +17063,11 @@ ShaderPool.init();
17063
17063
  /**
17064
17064
  * @internal
17065
17065
  */ _proto.destroy = function destroy() {
17066
+ this.texture = null;
17066
17067
  this._mesh._addReferCount(-1);
17067
17068
  this._mesh = null;
17068
17069
  this._material._addReferCount(-1);
17069
17070
  this._material = null;
17070
- this.texture = null;
17071
17071
  this.solidColor = null;
17072
17072
  this.sky.destroy();
17073
17073
  };
@@ -17312,7 +17312,7 @@ ShaderPool.init();
17312
17312
  var _this = this, pendingDestroyScripts = _this._disposeDestroyScripts, disposeDestroyScripts = _this._pendingDestroyScripts;
17313
17313
  this._disposeDestroyScripts = disposeDestroyScripts;
17314
17314
  this._pendingDestroyScripts = pendingDestroyScripts;
17315
- length = disposeDestroyScripts.length;
17315
+ var length = disposeDestroyScripts.length;
17316
17316
  if (length > 0) {
17317
17317
  for(var i = length - 1; i >= 0; i--){
17318
17318
  disposeDestroyScripts[i].onDestroy();
@@ -27032,64 +27032,203 @@ exports.SunMode = void 0;
27032
27032
  SkyProceduralMaterial._sunSimpleMacro = ShaderMacro.getByName("MATERIAL_SUN_SIMPLE");
27033
27033
  })();
27034
27034
 
27035
+ var SubPrimitive = function SubPrimitive() {
27036
+ };
27037
+
27035
27038
  /**
27036
- * Particle Material.
27037
- */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
27038
- _inherits(ParticleMaterial, BaseMaterial1);
27039
- function ParticleMaterial(engine) {
27039
+ * The rendering mode for particle renderer.
27040
+ */ exports.ParticleRenderMode = void 0;
27041
+ (function(ParticleRenderMode) {
27042
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards facing the active camera. */ "Billboard"] = 0] = "Billboard";
27043
+ ParticleRenderMode[ParticleRenderMode[/** Stretch particles in the direction of motion. */ "StretchBillboard"] = 1] = "StretchBillboard";
27044
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing up along the y-Axis. */ "HorizontalBillboard"] = 2] = "HorizontalBillboard";
27045
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing the player, but not pitching along the x-Axis. */ "VerticalBillboard"] = 3] = "VerticalBillboard";
27046
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as meshes. */ "Mesh"] = 4] = "Mesh";
27047
+ ParticleRenderMode[ParticleRenderMode[/** Do not render particles. */ "None"] = 5] = "None";
27048
+ })(exports.ParticleRenderMode || (exports.ParticleRenderMode = {}));
27049
+
27050
+ exports.ParticleStopMode = void 0;
27051
+ (function(ParticleStopMode) {
27052
+ ParticleStopMode[ParticleStopMode[/** Stop emitting new particles and clear existing particles immediately. */ "StopEmittingAndClear"] = 0] = "StopEmittingAndClear";
27053
+ ParticleStopMode[ParticleStopMode[/** Stop emitting new particles, but keep existing particles until they expire. */ "StopEmitting"] = 1] = "StopEmitting";
27054
+ })(exports.ParticleStopMode || (exports.ParticleStopMode = {}));
27055
+
27056
+ /**
27057
+ * Particle Renderer Component.
27058
+ */ var ParticleRenderer = /*#__PURE__*/ function(Renderer1) {
27059
+ _inherits(ParticleRenderer, Renderer1);
27060
+ function ParticleRenderer(entity) {
27040
27061
  var _this;
27041
- _this = BaseMaterial1.call(this, engine, Shader.find("particle-shader")) || this;
27042
- var shaderData = _this.shaderData;
27043
- shaderData.enableMacro("MATERIAL_OMIT_NORMAL");
27044
- shaderData.setColor(BaseMaterial._baseColorProp, new miniprogram.Color(1, 1, 1, 1));
27045
- _this.isTransparent = true;
27062
+ _this = Renderer1.call(this, entity) || this;
27063
+ /** Particle generator. */ _this.generator = new ParticleGenerator(_assert_this_initialized(_this));
27064
+ /** Specifies how much particles stretch depending on their velocity. */ _this.velocityScale = 0;
27065
+ /** How much are the particles stretched in their direction of motion, defined as the length of the particle compared to its width. */ _this.lengthScale = 2;
27066
+ /** The pivot of particle. */ _this.pivot = new miniprogram.Vector3();
27067
+ _this._currentRenderModeMacro = ParticleRenderer._billboardModeMacro;
27068
+ _this.shaderData.enableMacro(ParticleRenderer._billboardModeMacro);
27069
+ _this._supportInstancedArrays = _this.engine._hardwareRenderer.canIUse(exports.GLCapabilityType.instancedArrays);
27046
27070
  return _this;
27047
27071
  }
27048
- var _proto = ParticleMaterial.prototype;
27072
+ var _proto = ParticleRenderer.prototype;
27049
27073
  /**
27050
- * @inheritdoc
27051
- */ _proto.clone = function clone() {
27052
- var dest = new ParticleMaterial(this._engine);
27053
- this.cloneTo(dest);
27054
- return dest;
27074
+ * @internal
27075
+ */ _proto._onEnable = function _onEnable() {
27076
+ if (this.generator.main.playOnEnabled) {
27077
+ this.generator.play(false);
27078
+ }
27055
27079
  };
27056
- _create_class(ParticleMaterial, [
27080
+ /**
27081
+ * @internal
27082
+ */ _proto._onDisable = function _onDisable() {
27083
+ this.generator.stop(false, exports.ParticleStopMode.StopEmittingAndClear);
27084
+ };
27085
+ /**
27086
+ * @internal
27087
+ */ _proto._prepareRender = function _prepareRender(context) {
27088
+ if (!this._supportInstancedArrays) {
27089
+ return;
27090
+ }
27091
+ var generator = this.generator;
27092
+ generator._update(this.engine.time.deltaTime);
27093
+ // No particles to render
27094
+ if (generator._firstActiveElement === generator._firstFreeElement) {
27095
+ return;
27096
+ }
27097
+ Renderer1.prototype._prepareRender.call(this, context);
27098
+ };
27099
+ /**
27100
+ * @internal
27101
+ */ _proto._updateBounds = function _updateBounds(worldBounds) {
27102
+ worldBounds.min.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
27103
+ worldBounds.max.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
27104
+ };
27105
+ /**
27106
+ * @internal
27107
+ */ _proto._updateShaderData = function _updateShaderData(context) {
27108
+ var shaderData = this.shaderData;
27109
+ shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
27110
+ shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
27111
+ shaderData.setFloat(ParticleRenderer._currentTime, this.generator._playTime);
27112
+ shaderData.setVector3(ParticleRenderer._pivotOffsetProperty, this.pivot);
27113
+ this.generator._updateShaderData(shaderData);
27114
+ };
27115
+ _proto._render = function _render(context) {
27116
+ var generator = this.generator;
27117
+ var primitive = generator._primitive;
27118
+ if (generator._firstActiveElement < generator._firstFreeElement) {
27119
+ primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
27120
+ } else {
27121
+ var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
27122
+ if (generator._firstFreeElement > 0) {
27123
+ instanceCount += generator._firstFreeElement;
27124
+ }
27125
+ primitive.instanceCount = instanceCount;
27126
+ }
27127
+ var material = this.getMaterial();
27128
+ var renderData = this._engine._renderDataPool.getFromPool();
27129
+ renderData.setX(this, material, generator._primitive, generator._subPrimitive);
27130
+ context.camera._renderPipeline.pushRenderData(context, renderData);
27131
+ };
27132
+ _proto._onDestroy = function _onDestroy() {
27133
+ this.generator._destroy();
27134
+ };
27135
+ _create_class(ParticleRenderer, [
27057
27136
  {
27058
- key: "baseColor",
27137
+ key: "renderMode",
27059
27138
  get: /**
27060
- * Base color.
27139
+ * Specifies how particles are rendered.
27061
27140
  */ function get() {
27062
- return this.shaderData.getColor(BaseMaterial._baseColorProp);
27141
+ return this._renderMode;
27063
27142
  },
27064
27143
  set: function set(value) {
27065
- var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
27066
- if (value !== baseColor) {
27067
- baseColor.copyFrom(value);
27144
+ if (this._renderMode !== value) {
27145
+ var lastRenderMode = this._renderMode;
27146
+ this._renderMode = value;
27147
+ var renderModeMacro = null;
27148
+ var shaderData = this.shaderData;
27149
+ switch(value){
27150
+ case exports.ParticleRenderMode.Billboard:
27151
+ renderModeMacro = ParticleRenderer._billboardModeMacro;
27152
+ break;
27153
+ case exports.ParticleRenderMode.StretchBillboard:
27154
+ renderModeMacro = ParticleRenderer._stretchedBillboardModeMacro;
27155
+ break;
27156
+ case exports.ParticleRenderMode.HorizontalBillboard:
27157
+ throw "Not implemented";
27158
+ case exports.ParticleRenderMode.VerticalBillboard:
27159
+ throw "Not implemented";
27160
+ case exports.ParticleRenderMode.Mesh:
27161
+ throw "Not implemented";
27162
+ }
27163
+ if (this._currentRenderModeMacro !== renderModeMacro) {
27164
+ this._currentRenderModeMacro && shaderData.disableMacro(this._currentRenderModeMacro);
27165
+ renderModeMacro && shaderData.enableMacro(renderModeMacro);
27166
+ this._currentRenderModeMacro = renderModeMacro;
27167
+ }
27168
+ // @ts-ignore
27169
+ if (lastRenderMode !== exports.ParticleRenderMode.Mesh !== (value === exports.ParticleRenderMode.Mesh)) {
27170
+ this.generator._reorganizeGeometryBuffers();
27171
+ }
27068
27172
  }
27069
27173
  }
27070
27174
  },
27071
27175
  {
27072
- key: "baseTexture",
27176
+ key: "mesh",
27073
27177
  get: /**
27074
- * Base texture.
27178
+ * The mesh of particle.
27179
+ * @remarks Valid when `renderMode` is `Mesh`.
27075
27180
  */ function get() {
27076
- return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
27181
+ return this._mesh;
27077
27182
  },
27078
27183
  set: function set(value) {
27079
- this.shaderData.setTexture(BaseMaterial._baseTextureProp, value);
27080
- if (value) {
27081
- this.shaderData.enableMacro(BaseMaterial._baseTextureMacro);
27082
- } else {
27083
- this.shaderData.disableMacro(BaseMaterial._baseTextureMacro);
27184
+ var lastMesh = this._mesh;
27185
+ if (lastMesh !== value) {
27186
+ var _lastMesh, _value;
27187
+ this._mesh = value;
27188
+ (_lastMesh = lastMesh) == null ? void 0 : _lastMesh._addReferCount(-1);
27189
+ (_value = value) == null ? void 0 : _value._addReferCount(1);
27190
+ if (this.renderMode === exports.ParticleRenderMode.Mesh) {
27191
+ this.generator._reorganizeGeometryBuffers();
27192
+ }
27084
27193
  }
27085
27194
  }
27086
27195
  }
27087
27196
  ]);
27088
- return ParticleMaterial;
27089
- }(BaseMaterial);
27090
-
27091
- var SubPrimitive = function SubPrimitive() {
27092
- };
27197
+ return ParticleRenderer;
27198
+ }(exports.Renderer);
27199
+ (function() {
27200
+ ParticleRenderer._billboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_SPHERE_BILLBOARD");
27201
+ })();
27202
+ (function() {
27203
+ ParticleRenderer._stretchedBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_STRETCHED_BILLBOARD");
27204
+ })();
27205
+ (function() {
27206
+ ParticleRenderer._horizontalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_HORIZONTAL_BILLBOARD");
27207
+ })();
27208
+ (function() {
27209
+ ParticleRenderer._verticalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_VERTICAL_BILLBOARD");
27210
+ })();
27211
+ (function() {
27212
+ ParticleRenderer._renderModeMeshMacro = ShaderMacro.getByName("RENDERER_MODE_MESH");
27213
+ })();
27214
+ (function() {
27215
+ ParticleRenderer._pivotOffsetProperty = ShaderProperty.getByName("renderer_PivotOffset");
27216
+ })();
27217
+ (function() {
27218
+ ParticleRenderer._lengthScale = ShaderProperty.getByName("renderer_StretchedBillboardLengthScale");
27219
+ })();
27220
+ (function() {
27221
+ ParticleRenderer._speedScale = ShaderProperty.getByName("renderer_StretchedBillboardSpeedScale");
27222
+ })();
27223
+ (function() {
27224
+ ParticleRenderer._currentTime = ShaderProperty.getByName("renderer_CurrentTime");
27225
+ })();
27226
+ __decorate([
27227
+ deepClone
27228
+ ], ParticleRenderer.prototype, "generator", void 0);
27229
+ __decorate([
27230
+ shallowClone
27231
+ ], ParticleRenderer.prototype, "pivot", void 0);
27093
27232
 
27094
27233
  /**
27095
27234
  * Particle curve mode.
@@ -27111,18 +27250,6 @@ var SubPrimitive = function SubPrimitive() {
27111
27250
  ParticleGradientMode[ParticleGradientMode[/* Random value between two color gradients. */ "TwoGradients"] = 3] = "TwoGradients";
27112
27251
  })(exports.ParticleGradientMode || (exports.ParticleGradientMode = {}));
27113
27252
 
27114
- /**
27115
- * The rendering mode for particle renderer.
27116
- */ exports.ParticleRenderMode = void 0;
27117
- (function(ParticleRenderMode) {
27118
- ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards facing the active camera. */ "Billboard"] = 0] = "Billboard";
27119
- ParticleRenderMode[ParticleRenderMode[/** Stretch particles in the direction of motion. */ "StretchBillboard"] = 1] = "StretchBillboard";
27120
- ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing up along the y-Axis. */ "HorizontalBillboard"] = 2] = "HorizontalBillboard";
27121
- ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing the player, but not pitching along the x-Axis. */ "VerticalBillboard"] = 3] = "VerticalBillboard";
27122
- ParticleRenderMode[ParticleRenderMode[/** Render particles as meshes. */ "Mesh"] = 4] = "Mesh";
27123
- ParticleRenderMode[ParticleRenderMode[/** Do not render particles. */ "None"] = 5] = "None";
27124
- })(exports.ParticleRenderMode || (exports.ParticleRenderMode = {}));
27125
-
27126
27253
  /**
27127
27254
  * The space to simulate particles in.
27128
27255
  */ exports.ParticleSimulationSpace = void 0;
@@ -27131,12 +27258,6 @@ var SubPrimitive = function SubPrimitive() {
27131
27258
  ParticleSimulationSpace[ParticleSimulationSpace[/** Simulate particles in world space. */ "World"] = 1] = "World";
27132
27259
  })(exports.ParticleSimulationSpace || (exports.ParticleSimulationSpace = {}));
27133
27260
 
27134
- exports.ParticleStopMode = void 0;
27135
- (function(ParticleStopMode) {
27136
- ParticleStopMode[ParticleStopMode[/** Stop emitting new particles and clear existing particles immediately. */ "StopEmittingAndClear"] = 0] = "StopEmittingAndClear";
27137
- ParticleStopMode[ParticleStopMode[/** Stop emitting new particles, but keep existing particles until they expire. */ "StopEmitting"] = 1] = "StopEmitting";
27138
- })(exports.ParticleStopMode || (exports.ParticleStopMode = {}));
27139
-
27140
27261
  /**
27141
27262
  * @internal
27142
27263
  */ var ParticleRandomSubSeeds;
@@ -29087,181 +29208,60 @@ __decorate([
29087
29208
  ], ParticleGenerator.prototype, "_instanceVertices", void 0);
29088
29209
 
29089
29210
  /**
29090
- * Particle Renderer Component.
29091
- */ var ParticleRenderer = /*#__PURE__*/ function(Renderer1) {
29092
- _inherits(ParticleRenderer, Renderer1);
29093
- function ParticleRenderer(entity) {
29211
+ * Particle Material.
29212
+ */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
29213
+ _inherits(ParticleMaterial, BaseMaterial1);
29214
+ function ParticleMaterial(engine) {
29094
29215
  var _this;
29095
- _this = Renderer1.call(this, entity) || this;
29096
- /** Particle generator. */ _this.generator = new ParticleGenerator(_assert_this_initialized(_this));
29097
- /** Specifies how much particles stretch depending on their velocity. */ _this.velocityScale = 0;
29098
- /** How much are the particles stretched in their direction of motion, defined as the length of the particle compared to its width. */ _this.lengthScale = 2;
29099
- /** The pivot of particle. */ _this.pivot = new miniprogram.Vector3();
29100
- _this._currentRenderModeMacro = ParticleRenderer._billboardModeMacro;
29101
- _this.shaderData.enableMacro(ParticleRenderer._billboardModeMacro);
29102
- _this._supportInstancedArrays = _this.engine._hardwareRenderer.canIUse(exports.GLCapabilityType.instancedArrays);
29216
+ _this = BaseMaterial1.call(this, engine, Shader.find("particle-shader")) || this;
29217
+ var shaderData = _this.shaderData;
29218
+ shaderData.enableMacro("MATERIAL_OMIT_NORMAL");
29219
+ shaderData.setColor(BaseMaterial._baseColorProp, new miniprogram.Color(1, 1, 1, 1));
29220
+ _this.isTransparent = true;
29103
29221
  return _this;
29104
29222
  }
29105
- var _proto = ParticleRenderer.prototype;
29106
- /**
29107
- * @internal
29108
- */ _proto._onEnable = function _onEnable() {
29109
- if (this.generator.main.playOnEnabled) {
29110
- this.generator.play(false);
29111
- }
29112
- };
29113
- /**
29114
- * @internal
29115
- */ _proto._onDisable = function _onDisable() {
29116
- this.generator.stop(false, exports.ParticleStopMode.StopEmittingAndClear);
29117
- };
29118
- /**
29119
- * @internal
29120
- */ _proto._prepareRender = function _prepareRender(context) {
29121
- if (!this._supportInstancedArrays) {
29122
- return;
29123
- }
29124
- var generator = this.generator;
29125
- generator._update(this.engine.time.deltaTime);
29126
- // No particles to render
29127
- if (generator._firstActiveElement === generator._firstFreeElement) {
29128
- return;
29129
- }
29130
- Renderer1.prototype._prepareRender.call(this, context);
29131
- };
29132
- /**
29133
- * @internal
29134
- */ _proto._updateBounds = function _updateBounds(worldBounds) {
29135
- worldBounds.min.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
29136
- worldBounds.max.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
29137
- };
29223
+ var _proto = ParticleMaterial.prototype;
29138
29224
  /**
29139
- * @internal
29140
- */ _proto._updateShaderData = function _updateShaderData(context) {
29141
- var shaderData = this.shaderData;
29142
- shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
29143
- shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
29144
- shaderData.setFloat(ParticleRenderer._currentTime, this.generator._playTime);
29145
- shaderData.setVector3(ParticleRenderer._pivotOffsetProperty, this.pivot);
29146
- this.generator._updateShaderData(shaderData);
29147
- };
29148
- _proto._render = function _render(context) {
29149
- var generator = this.generator;
29150
- var primitive = generator._primitive;
29151
- if (generator._firstActiveElement < generator._firstFreeElement) {
29152
- primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
29153
- } else {
29154
- var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
29155
- if (generator._firstFreeElement > 0) {
29156
- instanceCount += generator._firstFreeElement;
29157
- }
29158
- primitive.instanceCount = instanceCount;
29159
- }
29160
- var material = this.getMaterial();
29161
- var renderData = this._engine._renderDataPool.getFromPool();
29162
- renderData.setX(this, material, generator._primitive, generator._subPrimitive);
29163
- context.camera._renderPipeline.pushRenderData(context, renderData);
29164
- };
29165
- _proto._onDestroy = function _onDestroy() {
29166
- this.generator._destroy();
29225
+ * @inheritdoc
29226
+ */ _proto.clone = function clone() {
29227
+ var dest = new ParticleMaterial(this._engine);
29228
+ this.cloneTo(dest);
29229
+ return dest;
29167
29230
  };
29168
- _create_class(ParticleRenderer, [
29231
+ _create_class(ParticleMaterial, [
29169
29232
  {
29170
- key: "renderMode",
29233
+ key: "baseColor",
29171
29234
  get: /**
29172
- * Specifies how particles are rendered.
29235
+ * Base color.
29173
29236
  */ function get() {
29174
- return this._renderMode;
29237
+ return this.shaderData.getColor(BaseMaterial._baseColorProp);
29175
29238
  },
29176
29239
  set: function set(value) {
29177
- if (this._renderMode !== value) {
29178
- var lastRenderMode = this._renderMode;
29179
- this._renderMode = value;
29180
- var renderModeMacro = null;
29181
- var shaderData = this.shaderData;
29182
- switch(value){
29183
- case exports.ParticleRenderMode.Billboard:
29184
- renderModeMacro = ParticleRenderer._billboardModeMacro;
29185
- break;
29186
- case exports.ParticleRenderMode.StretchBillboard:
29187
- renderModeMacro = ParticleRenderer._stretchedBillboardModeMacro;
29188
- break;
29189
- case exports.ParticleRenderMode.HorizontalBillboard:
29190
- throw "Not implemented";
29191
- case exports.ParticleRenderMode.VerticalBillboard:
29192
- throw "Not implemented";
29193
- case exports.ParticleRenderMode.Mesh:
29194
- throw "Not implemented";
29195
- }
29196
- if (this._currentRenderModeMacro !== renderModeMacro) {
29197
- this._currentRenderModeMacro && shaderData.disableMacro(this._currentRenderModeMacro);
29198
- renderModeMacro && shaderData.enableMacro(renderModeMacro);
29199
- this._currentRenderModeMacro = renderModeMacro;
29200
- }
29201
- // @ts-ignore
29202
- if (lastRenderMode !== exports.ParticleRenderMode.Mesh !== (value === exports.ParticleRenderMode.Mesh)) {
29203
- this.generator._reorganizeGeometryBuffers();
29204
- }
29240
+ var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
29241
+ if (value !== baseColor) {
29242
+ baseColor.copyFrom(value);
29205
29243
  }
29206
29244
  }
29207
29245
  },
29208
29246
  {
29209
- key: "mesh",
29247
+ key: "baseTexture",
29210
29248
  get: /**
29211
- * The mesh of particle.
29212
- * @remarks Valid when `renderMode` is `Mesh`.
29249
+ * Base texture.
29213
29250
  */ function get() {
29214
- return this._mesh;
29251
+ return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
29215
29252
  },
29216
29253
  set: function set(value) {
29217
- var lastMesh = this._mesh;
29218
- if (lastMesh !== value) {
29219
- var _lastMesh, _value;
29220
- this._mesh = value;
29221
- (_lastMesh = lastMesh) == null ? void 0 : _lastMesh._addReferCount(-1);
29222
- (_value = value) == null ? void 0 : _value._addReferCount(1);
29223
- if (this.renderMode === exports.ParticleRenderMode.Mesh) {
29224
- this.generator._reorganizeGeometryBuffers();
29225
- }
29254
+ this.shaderData.setTexture(BaseMaterial._baseTextureProp, value);
29255
+ if (value) {
29256
+ this.shaderData.enableMacro(BaseMaterial._baseTextureMacro);
29257
+ } else {
29258
+ this.shaderData.disableMacro(BaseMaterial._baseTextureMacro);
29226
29259
  }
29227
29260
  }
29228
29261
  }
29229
29262
  ]);
29230
- return ParticleRenderer;
29231
- }(exports.Renderer);
29232
- (function() {
29233
- ParticleRenderer._billboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_SPHERE_BILLBOARD");
29234
- })();
29235
- (function() {
29236
- ParticleRenderer._stretchedBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_STRETCHED_BILLBOARD");
29237
- })();
29238
- (function() {
29239
- ParticleRenderer._horizontalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_HORIZONTAL_BILLBOARD");
29240
- })();
29241
- (function() {
29242
- ParticleRenderer._verticalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_VERTICAL_BILLBOARD");
29243
- })();
29244
- (function() {
29245
- ParticleRenderer._renderModeMeshMacro = ShaderMacro.getByName("RENDERER_MODE_MESH");
29246
- })();
29247
- (function() {
29248
- ParticleRenderer._pivotOffsetProperty = ShaderProperty.getByName("renderer_PivotOffset");
29249
- })();
29250
- (function() {
29251
- ParticleRenderer._lengthScale = ShaderProperty.getByName("renderer_StretchedBillboardLengthScale");
29252
- })();
29253
- (function() {
29254
- ParticleRenderer._speedScale = ShaderProperty.getByName("renderer_StretchedBillboardSpeedScale");
29255
- })();
29256
- (function() {
29257
- ParticleRenderer._currentTime = ShaderProperty.getByName("renderer_CurrentTime");
29258
- })();
29259
- __decorate([
29260
- deepClone
29261
- ], ParticleRenderer.prototype, "generator", void 0);
29262
- __decorate([
29263
- shallowClone
29264
- ], ParticleRenderer.prototype, "pivot", void 0);
29263
+ return ParticleMaterial;
29264
+ }(BaseMaterial);
29265
29265
 
29266
29266
  /**
29267
29267
  * A burst is a particle emission event, where a number of particles are all emitted at the same time
@@ -29967,6 +29967,7 @@ exports.PBRMaterial = PBRMaterial;
29967
29967
  exports.PBRSpecularMaterial = PBRSpecularMaterial;
29968
29968
  exports.ParticleCompositeCurve = ParticleCompositeCurve;
29969
29969
  exports.ParticleCurve = ParticleCurve;
29970
+ exports.ParticleGenerator = ParticleGenerator;
29970
29971
  exports.ParticleMaterial = ParticleMaterial;
29971
29972
  exports.ParticleRenderer = ParticleRenderer;
29972
29973
  exports.PhysicsMaterial = PhysicsMaterial;