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