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

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,24 +17063,23 @@ 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
  };
17074
17074
  /**
17075
17075
  * @internal
17076
17076
  */ _proto._resizeBackgroundTexture = function _resizeBackgroundTexture() {
17077
+ var _this = this, texture = _this._texture, mesh = _this._mesh;
17077
17078
  if (!this._texture) {
17078
17079
  return;
17079
17080
  }
17080
- var canvas = this._engine.canvas;
17081
- var width = canvas.width, height = canvas.height;
17082
- var _this = this, _backgroundTextureMesh = _this._mesh;
17083
- var positions = _backgroundTextureMesh.getPositions();
17081
+ var _this__engine_canvas = this._engine.canvas, width = _this__engine_canvas.width, height = _this__engine_canvas.height;
17082
+ var positions = mesh.getPositions();
17084
17083
  switch(this._textureFillMode){
17085
17084
  case exports.BackgroundTextureFillMode.Fill:
17086
17085
  positions[0].set(-1, -1, 1);
@@ -17089,22 +17088,22 @@ ShaderPool.init();
17089
17088
  positions[3].set(1, 1, 1);
17090
17089
  break;
17091
17090
  case exports.BackgroundTextureFillMode.AspectFitWidth:
17092
- var fitWidthScale = this._texture.height * width / this.texture.width / height;
17091
+ var fitWidthScale = texture.height * width / texture.width / height;
17093
17092
  positions[0].set(-1, -fitWidthScale, 1);
17094
17093
  positions[1].set(1, -fitWidthScale, 1);
17095
17094
  positions[2].set(-1, fitWidthScale, 1);
17096
17095
  positions[3].set(1, fitWidthScale, 1);
17097
17096
  break;
17098
17097
  case exports.BackgroundTextureFillMode.AspectFitHeight:
17099
- var fitHeightScale = this._texture.width * height / this.texture.height / width;
17098
+ var fitHeightScale = texture.width * height / texture.height / width;
17100
17099
  positions[0].set(-fitHeightScale, -1, 1);
17101
17100
  positions[1].set(fitHeightScale, -1, 1);
17102
17101
  positions[2].set(-fitHeightScale, 1, 1);
17103
17102
  positions[3].set(fitHeightScale, 1, 1);
17104
17103
  break;
17105
17104
  }
17106
- _backgroundTextureMesh.setPositions(positions);
17107
- _backgroundTextureMesh.uploadData(false);
17105
+ mesh.setPositions(positions);
17106
+ mesh.uploadData(false);
17108
17107
  };
17109
17108
  _proto._initMesh = function _initMesh(engine) {
17110
17109
  this._mesh = this._createPlane(engine);
@@ -17155,13 +17154,13 @@ ShaderPool.init();
17155
17154
  (_this__texture = this._texture) == null ? void 0 : _this__texture._addReferCount(-1);
17156
17155
  this._texture = value;
17157
17156
  this._material.shaderData.setTexture("material_BaseTexture", value);
17157
+ this._resizeBackgroundTexture();
17158
17158
  }
17159
17159
  }
17160
17160
  },
17161
17161
  {
17162
17162
  key: "textureFillMode",
17163
17163
  get: /**
17164
- * @internal
17165
17164
  * Background texture fill mode.
17166
17165
  * @remarks When `mode` is `BackgroundMode.Texture`, the property will take effects.
17167
17166
  * @defaultValue `BackgroundTextureFillMode.FitHeight`
@@ -17312,7 +17311,7 @@ ShaderPool.init();
17312
17311
  var _this = this, pendingDestroyScripts = _this._disposeDestroyScripts, disposeDestroyScripts = _this._pendingDestroyScripts;
17313
17312
  this._disposeDestroyScripts = disposeDestroyScripts;
17314
17313
  this._pendingDestroyScripts = pendingDestroyScripts;
17315
- length = disposeDestroyScripts.length;
17314
+ var length = disposeDestroyScripts.length;
17316
17315
  if (length > 0) {
17317
17316
  for(var i = length - 1; i >= 0; i--){
17318
17317
  disposeDestroyScripts[i].onDestroy();
@@ -27032,64 +27031,203 @@ exports.SunMode = void 0;
27032
27031
  SkyProceduralMaterial._sunSimpleMacro = ShaderMacro.getByName("MATERIAL_SUN_SIMPLE");
27033
27032
  })();
27034
27033
 
27034
+ var SubPrimitive = function SubPrimitive() {
27035
+ };
27036
+
27035
27037
  /**
27036
- * Particle Material.
27037
- */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
27038
- _inherits(ParticleMaterial, BaseMaterial1);
27039
- 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) {
27040
27060
  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;
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 miniprogram.Vector3();
27066
+ _this._currentRenderModeMacro = ParticleRenderer._billboardModeMacro;
27067
+ _this.shaderData.enableMacro(ParticleRenderer._billboardModeMacro);
27068
+ _this._supportInstancedArrays = _this.engine._hardwareRenderer.canIUse(exports.GLCapabilityType.instancedArrays);
27046
27069
  return _this;
27047
27070
  }
27048
- var _proto = ParticleMaterial.prototype;
27071
+ var _proto = ParticleRenderer.prototype;
27049
27072
  /**
27050
- * @inheritdoc
27051
- */ _proto.clone = function clone() {
27052
- var dest = new ParticleMaterial(this._engine);
27053
- this.cloneTo(dest);
27054
- return dest;
27073
+ * @internal
27074
+ */ _proto._onEnable = function _onEnable() {
27075
+ if (this.generator.main.playOnEnabled) {
27076
+ this.generator.play(false);
27077
+ }
27055
27078
  };
27056
- _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, [
27057
27135
  {
27058
- key: "baseColor",
27136
+ key: "renderMode",
27059
27137
  get: /**
27060
- * Base color.
27138
+ * Specifies how particles are rendered.
27061
27139
  */ function get() {
27062
- return this.shaderData.getColor(BaseMaterial._baseColorProp);
27140
+ return this._renderMode;
27063
27141
  },
27064
27142
  set: function set(value) {
27065
- var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
27066
- if (value !== baseColor) {
27067
- 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
+ }
27068
27171
  }
27069
27172
  }
27070
27173
  },
27071
27174
  {
27072
- key: "baseTexture",
27175
+ key: "mesh",
27073
27176
  get: /**
27074
- * Base texture.
27177
+ * The mesh of particle.
27178
+ * @remarks Valid when `renderMode` is `Mesh`.
27075
27179
  */ function get() {
27076
- return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
27180
+ return this._mesh;
27077
27181
  },
27078
27182
  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);
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
+ }
27084
27192
  }
27085
27193
  }
27086
27194
  }
27087
27195
  ]);
27088
- return ParticleMaterial;
27089
- }(BaseMaterial);
27090
-
27091
- var SubPrimitive = function SubPrimitive() {
27092
- };
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);
27093
27231
 
27094
27232
  /**
27095
27233
  * Particle curve mode.
@@ -27111,18 +27249,6 @@ var SubPrimitive = function SubPrimitive() {
27111
27249
  ParticleGradientMode[ParticleGradientMode[/* Random value between two color gradients. */ "TwoGradients"] = 3] = "TwoGradients";
27112
27250
  })(exports.ParticleGradientMode || (exports.ParticleGradientMode = {}));
27113
27251
 
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
27252
  /**
27127
27253
  * The space to simulate particles in.
27128
27254
  */ exports.ParticleSimulationSpace = void 0;
@@ -27131,12 +27257,6 @@ var SubPrimitive = function SubPrimitive() {
27131
27257
  ParticleSimulationSpace[ParticleSimulationSpace[/** Simulate particles in world space. */ "World"] = 1] = "World";
27132
27258
  })(exports.ParticleSimulationSpace || (exports.ParticleSimulationSpace = {}));
27133
27259
 
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
27260
  /**
27141
27261
  * @internal
27142
27262
  */ var ParticleRandomSubSeeds;
@@ -29087,181 +29207,60 @@ __decorate([
29087
29207
  ], ParticleGenerator.prototype, "_instanceVertices", void 0);
29088
29208
 
29089
29209
  /**
29090
- * Particle Renderer Component.
29091
- */ var ParticleRenderer = /*#__PURE__*/ function(Renderer1) {
29092
- _inherits(ParticleRenderer, Renderer1);
29093
- function ParticleRenderer(entity) {
29210
+ * Particle Material.
29211
+ */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
29212
+ _inherits(ParticleMaterial, BaseMaterial1);
29213
+ function ParticleMaterial(engine) {
29094
29214
  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);
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 miniprogram.Color(1, 1, 1, 1));
29219
+ _this.isTransparent = true;
29103
29220
  return _this;
29104
29221
  }
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
- };
29222
+ var _proto = ParticleMaterial.prototype;
29138
29223
  /**
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();
29224
+ * @inheritdoc
29225
+ */ _proto.clone = function clone() {
29226
+ var dest = new ParticleMaterial(this._engine);
29227
+ this.cloneTo(dest);
29228
+ return dest;
29167
29229
  };
29168
- _create_class(ParticleRenderer, [
29230
+ _create_class(ParticleMaterial, [
29169
29231
  {
29170
- key: "renderMode",
29232
+ key: "baseColor",
29171
29233
  get: /**
29172
- * Specifies how particles are rendered.
29234
+ * Base color.
29173
29235
  */ function get() {
29174
- return this._renderMode;
29236
+ return this.shaderData.getColor(BaseMaterial._baseColorProp);
29175
29237
  },
29176
29238
  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
- }
29239
+ var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
29240
+ if (value !== baseColor) {
29241
+ baseColor.copyFrom(value);
29205
29242
  }
29206
29243
  }
29207
29244
  },
29208
29245
  {
29209
- key: "mesh",
29246
+ key: "baseTexture",
29210
29247
  get: /**
29211
- * The mesh of particle.
29212
- * @remarks Valid when `renderMode` is `Mesh`.
29248
+ * Base texture.
29213
29249
  */ function get() {
29214
- return this._mesh;
29250
+ return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
29215
29251
  },
29216
29252
  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
- }
29253
+ this.shaderData.setTexture(BaseMaterial._baseTextureProp, value);
29254
+ if (value) {
29255
+ this.shaderData.enableMacro(BaseMaterial._baseTextureMacro);
29256
+ } else {
29257
+ this.shaderData.disableMacro(BaseMaterial._baseTextureMacro);
29226
29258
  }
29227
29259
  }
29228
29260
  }
29229
29261
  ]);
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);
29262
+ return ParticleMaterial;
29263
+ }(BaseMaterial);
29265
29264
 
29266
29265
  /**
29267
29266
  * A burst is a particle emission event, where a number of particles are all emitted at the same time
@@ -29933,6 +29932,7 @@ exports.CharacterController = CharacterController;
29933
29932
  exports.CircleShape = CircleShape;
29934
29933
  exports.CloneManager = CloneManager;
29935
29934
  exports.ColliderShape = ColliderShape;
29935
+ exports.ColorOverLifetimeModule = ColorOverLifetimeModule;
29936
29936
  exports.Component = Component;
29937
29937
  exports.ConeShape = ConeShape;
29938
29938
  exports.ContentRestorer = ContentRestorer;
@@ -29941,12 +29941,15 @@ exports.CurveKey = CurveKey;
29941
29941
  exports.DepthState = DepthState;
29942
29942
  exports.DirectLight = DirectLight;
29943
29943
  exports.DynamicCollider = DynamicCollider;
29944
+ exports.EmissionModule = EmissionModule;
29944
29945
  exports.Engine = Engine;
29945
29946
  exports.EngineObject = EngineObject;
29946
29947
  exports.Entity = Entity;
29947
29948
  exports.EventDispatcher = EventDispatcher;
29948
29949
  exports.FixedJoint = FixedJoint;
29949
29950
  exports.Font = Font;
29951
+ exports.GradientAlphaKey = GradientAlphaKey;
29952
+ exports.GradientColorKey = GradientColorKey;
29950
29953
  exports.HemisphereShape = HemisphereShape;
29951
29954
  exports.HingeJoint = HingeJoint;
29952
29955
  exports.HitResult = HitResult;
@@ -29958,6 +29961,7 @@ exports.Keyframe = Keyframe;
29958
29961
  exports.Light = Light;
29959
29962
  exports.Loader = Loader;
29960
29963
  exports.Logger = Logger;
29964
+ exports.MainModule = MainModule;
29961
29965
  exports.Material = Material;
29962
29966
  exports.Mesh = Mesh;
29963
29967
  exports.MeshRenderer = MeshRenderer;
@@ -29966,7 +29970,10 @@ exports.PBRBaseMaterial = PBRBaseMaterial;
29966
29970
  exports.PBRMaterial = PBRMaterial;
29967
29971
  exports.PBRSpecularMaterial = PBRSpecularMaterial;
29968
29972
  exports.ParticleCompositeCurve = ParticleCompositeCurve;
29973
+ exports.ParticleCompositeGradient = ParticleCompositeGradient;
29969
29974
  exports.ParticleCurve = ParticleCurve;
29975
+ exports.ParticleGenerator = ParticleGenerator;
29976
+ exports.ParticleGradient = ParticleGradient;
29970
29977
  exports.ParticleMaterial = ParticleMaterial;
29971
29978
  exports.ParticleRenderer = ParticleRenderer;
29972
29979
  exports.PhysicsMaterial = PhysicsMaterial;
@@ -29985,6 +29992,7 @@ exports.RenderState = RenderState;
29985
29992
  exports.RenderTarget = RenderTarget;
29986
29993
  exports.RenderTargetBlendState = RenderTargetBlendState;
29987
29994
  exports.ResourceManager = ResourceManager;
29995
+ exports.RotationOverLifetimeModule = RotationOverLifetimeModule;
29988
29996
  exports.Scene = Scene;
29989
29997
  exports.SceneManager = SceneManager;
29990
29998
  exports.Script = Script;
@@ -29996,6 +30004,7 @@ exports.ShaderMacroCollection = ShaderMacroCollection;
29996
30004
  exports.ShaderPass = ShaderPass;
29997
30005
  exports.ShaderProperty = ShaderProperty;
29998
30006
  exports.ShaderTagKey = ShaderTagKey;
30007
+ exports.SizeOverLifetimeModule = SizeOverLifetimeModule;
29999
30008
  exports.Skin = Skin;
30000
30009
  exports.SkinnedMeshRenderer = SkinnedMeshRenderer;
30001
30010
  exports.Sky = Sky;
@@ -30021,12 +30030,14 @@ exports.Texture = Texture;
30021
30030
  exports.Texture2D = Texture2D;
30022
30031
  exports.Texture2DArray = Texture2DArray;
30023
30032
  exports.TextureCube = TextureCube;
30033
+ exports.TextureSheetAnimationModule = TextureSheetAnimationModule;
30024
30034
  exports.Time = Time;
30025
30035
  exports.TrailMaterial = TrailMaterial;
30026
30036
  exports.TrailRenderer = TrailRenderer;
30027
30037
  exports.Transform = Transform;
30028
30038
  exports.UnlitMaterial = UnlitMaterial;
30029
30039
  exports.Utils = Utils;
30040
+ exports.VelocityOverLifetimeModule = VelocityOverLifetimeModule;
30030
30041
  exports.VertexBufferBinding = VertexBufferBinding;
30031
30042
  exports.VertexElement = VertexElement;
30032
30043
  exports.assignmentClone = assignmentClone;