@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.
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,24 +17062,23 @@ 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
  };
17073
17073
  /**
17074
17074
  * @internal
17075
17075
  */ _proto._resizeBackgroundTexture = function _resizeBackgroundTexture() {
17076
+ var _this = this, texture = _this._texture, mesh = _this._mesh;
17076
17077
  if (!this._texture) {
17077
17078
  return;
17078
17079
  }
17079
- var canvas = this._engine.canvas;
17080
- var width = canvas.width, height = canvas.height;
17081
- var _this = this, _backgroundTextureMesh = _this._mesh;
17082
- var positions = _backgroundTextureMesh.getPositions();
17080
+ var _this__engine_canvas = this._engine.canvas, width = _this__engine_canvas.width, height = _this__engine_canvas.height;
17081
+ var positions = mesh.getPositions();
17083
17082
  switch(this._textureFillMode){
17084
17083
  case exports.BackgroundTextureFillMode.Fill:
17085
17084
  positions[0].set(-1, -1, 1);
@@ -17088,22 +17087,22 @@ ShaderPool.init();
17088
17087
  positions[3].set(1, 1, 1);
17089
17088
  break;
17090
17089
  case exports.BackgroundTextureFillMode.AspectFitWidth:
17091
- var fitWidthScale = this._texture.height * width / this.texture.width / height;
17090
+ var fitWidthScale = texture.height * width / texture.width / height;
17092
17091
  positions[0].set(-1, -fitWidthScale, 1);
17093
17092
  positions[1].set(1, -fitWidthScale, 1);
17094
17093
  positions[2].set(-1, fitWidthScale, 1);
17095
17094
  positions[3].set(1, fitWidthScale, 1);
17096
17095
  break;
17097
17096
  case exports.BackgroundTextureFillMode.AspectFitHeight:
17098
- var fitHeightScale = this._texture.width * height / this.texture.height / width;
17097
+ var fitHeightScale = texture.width * height / texture.height / width;
17099
17098
  positions[0].set(-fitHeightScale, -1, 1);
17100
17099
  positions[1].set(fitHeightScale, -1, 1);
17101
17100
  positions[2].set(-fitHeightScale, 1, 1);
17102
17101
  positions[3].set(fitHeightScale, 1, 1);
17103
17102
  break;
17104
17103
  }
17105
- _backgroundTextureMesh.setPositions(positions);
17106
- _backgroundTextureMesh.uploadData(false);
17104
+ mesh.setPositions(positions);
17105
+ mesh.uploadData(false);
17107
17106
  };
17108
17107
  _proto._initMesh = function _initMesh(engine) {
17109
17108
  this._mesh = this._createPlane(engine);
@@ -17154,13 +17153,13 @@ ShaderPool.init();
17154
17153
  (_this__texture = this._texture) == null ? void 0 : _this__texture._addReferCount(-1);
17155
17154
  this._texture = value;
17156
17155
  this._material.shaderData.setTexture("material_BaseTexture", value);
17156
+ this._resizeBackgroundTexture();
17157
17157
  }
17158
17158
  }
17159
17159
  },
17160
17160
  {
17161
17161
  key: "textureFillMode",
17162
17162
  get: /**
17163
- * @internal
17164
17163
  * Background texture fill mode.
17165
17164
  * @remarks When `mode` is `BackgroundMode.Texture`, the property will take effects.
17166
17165
  * @defaultValue `BackgroundTextureFillMode.FitHeight`
@@ -17311,7 +17310,7 @@ ShaderPool.init();
17311
17310
  var _this = this, pendingDestroyScripts = _this._disposeDestroyScripts, disposeDestroyScripts = _this._pendingDestroyScripts;
17312
17311
  this._disposeDestroyScripts = disposeDestroyScripts;
17313
17312
  this._pendingDestroyScripts = pendingDestroyScripts;
17314
- length = disposeDestroyScripts.length;
17313
+ var length = disposeDestroyScripts.length;
17315
17314
  if (length > 0) {
17316
17315
  for(var i = length - 1; i >= 0; i--){
17317
17316
  disposeDestroyScripts[i].onDestroy();
@@ -27031,64 +27030,203 @@ exports.SunMode = void 0;
27031
27030
  SkyProceduralMaterial._sunSimpleMacro = ShaderMacro.getByName("MATERIAL_SUN_SIMPLE");
27032
27031
  })();
27033
27032
 
27033
+ var SubPrimitive = function SubPrimitive() {
27034
+ };
27035
+
27034
27036
  /**
27035
- * Particle Material.
27036
- */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
27037
- _inherits(ParticleMaterial, BaseMaterial1);
27038
- function ParticleMaterial(engine) {
27037
+ * The rendering mode for particle renderer.
27038
+ */ exports.ParticleRenderMode = void 0;
27039
+ (function(ParticleRenderMode) {
27040
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards facing the active camera. */ "Billboard"] = 0] = "Billboard";
27041
+ ParticleRenderMode[ParticleRenderMode[/** Stretch particles in the direction of motion. */ "StretchBillboard"] = 1] = "StretchBillboard";
27042
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing up along the y-Axis. */ "HorizontalBillboard"] = 2] = "HorizontalBillboard";
27043
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as billboards always facing the player, but not pitching along the x-Axis. */ "VerticalBillboard"] = 3] = "VerticalBillboard";
27044
+ ParticleRenderMode[ParticleRenderMode[/** Render particles as meshes. */ "Mesh"] = 4] = "Mesh";
27045
+ ParticleRenderMode[ParticleRenderMode[/** Do not render particles. */ "None"] = 5] = "None";
27046
+ })(exports.ParticleRenderMode || (exports.ParticleRenderMode = {}));
27047
+
27048
+ exports.ParticleStopMode = void 0;
27049
+ (function(ParticleStopMode) {
27050
+ ParticleStopMode[ParticleStopMode[/** Stop emitting new particles and clear existing particles immediately. */ "StopEmittingAndClear"] = 0] = "StopEmittingAndClear";
27051
+ ParticleStopMode[ParticleStopMode[/** Stop emitting new particles, but keep existing particles until they expire. */ "StopEmitting"] = 1] = "StopEmitting";
27052
+ })(exports.ParticleStopMode || (exports.ParticleStopMode = {}));
27053
+
27054
+ /**
27055
+ * Particle Renderer Component.
27056
+ */ var ParticleRenderer = /*#__PURE__*/ function(Renderer1) {
27057
+ _inherits(ParticleRenderer, Renderer1);
27058
+ function ParticleRenderer(entity) {
27039
27059
  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;
27060
+ _this = Renderer1.call(this, entity) || this;
27061
+ /** Particle generator. */ _this.generator = new ParticleGenerator(_assert_this_initialized(_this));
27062
+ /** Specifies how much particles stretch depending on their velocity. */ _this.velocityScale = 0;
27063
+ /** 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;
27064
+ /** The pivot of particle. */ _this.pivot = new engineMath.Vector3();
27065
+ _this._currentRenderModeMacro = ParticleRenderer._billboardModeMacro;
27066
+ _this.shaderData.enableMacro(ParticleRenderer._billboardModeMacro);
27067
+ _this._supportInstancedArrays = _this.engine._hardwareRenderer.canIUse(exports.GLCapabilityType.instancedArrays);
27045
27068
  return _this;
27046
27069
  }
27047
- var _proto = ParticleMaterial.prototype;
27070
+ var _proto = ParticleRenderer.prototype;
27048
27071
  /**
27049
- * @inheritdoc
27050
- */ _proto.clone = function clone() {
27051
- var dest = new ParticleMaterial(this._engine);
27052
- this.cloneTo(dest);
27053
- return dest;
27072
+ * @internal
27073
+ */ _proto._onEnable = function _onEnable() {
27074
+ if (this.generator.main.playOnEnabled) {
27075
+ this.generator.play(false);
27076
+ }
27054
27077
  };
27055
- _create_class(ParticleMaterial, [
27078
+ /**
27079
+ * @internal
27080
+ */ _proto._onDisable = function _onDisable() {
27081
+ this.generator.stop(false, exports.ParticleStopMode.StopEmittingAndClear);
27082
+ };
27083
+ /**
27084
+ * @internal
27085
+ */ _proto._prepareRender = function _prepareRender(context) {
27086
+ if (!this._supportInstancedArrays) {
27087
+ return;
27088
+ }
27089
+ var generator = this.generator;
27090
+ generator._update(this.engine.time.deltaTime);
27091
+ // No particles to render
27092
+ if (generator._firstActiveElement === generator._firstFreeElement) {
27093
+ return;
27094
+ }
27095
+ Renderer1.prototype._prepareRender.call(this, context);
27096
+ };
27097
+ /**
27098
+ * @internal
27099
+ */ _proto._updateBounds = function _updateBounds(worldBounds) {
27100
+ worldBounds.min.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
27101
+ worldBounds.max.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
27102
+ };
27103
+ /**
27104
+ * @internal
27105
+ */ _proto._updateShaderData = function _updateShaderData(context) {
27106
+ var shaderData = this.shaderData;
27107
+ shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
27108
+ shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
27109
+ shaderData.setFloat(ParticleRenderer._currentTime, this.generator._playTime);
27110
+ shaderData.setVector3(ParticleRenderer._pivotOffsetProperty, this.pivot);
27111
+ this.generator._updateShaderData(shaderData);
27112
+ };
27113
+ _proto._render = function _render(context) {
27114
+ var generator = this.generator;
27115
+ var primitive = generator._primitive;
27116
+ if (generator._firstActiveElement < generator._firstFreeElement) {
27117
+ primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
27118
+ } else {
27119
+ var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
27120
+ if (generator._firstFreeElement > 0) {
27121
+ instanceCount += generator._firstFreeElement;
27122
+ }
27123
+ primitive.instanceCount = instanceCount;
27124
+ }
27125
+ var material = this.getMaterial();
27126
+ var renderData = this._engine._renderDataPool.getFromPool();
27127
+ renderData.setX(this, material, generator._primitive, generator._subPrimitive);
27128
+ context.camera._renderPipeline.pushRenderData(context, renderData);
27129
+ };
27130
+ _proto._onDestroy = function _onDestroy() {
27131
+ this.generator._destroy();
27132
+ };
27133
+ _create_class(ParticleRenderer, [
27056
27134
  {
27057
- key: "baseColor",
27135
+ key: "renderMode",
27058
27136
  get: /**
27059
- * Base color.
27137
+ * Specifies how particles are rendered.
27060
27138
  */ function get() {
27061
- return this.shaderData.getColor(BaseMaterial._baseColorProp);
27139
+ return this._renderMode;
27062
27140
  },
27063
27141
  set: function set(value) {
27064
- var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
27065
- if (value !== baseColor) {
27066
- baseColor.copyFrom(value);
27142
+ if (this._renderMode !== value) {
27143
+ var lastRenderMode = this._renderMode;
27144
+ this._renderMode = value;
27145
+ var renderModeMacro = null;
27146
+ var shaderData = this.shaderData;
27147
+ switch(value){
27148
+ case exports.ParticleRenderMode.Billboard:
27149
+ renderModeMacro = ParticleRenderer._billboardModeMacro;
27150
+ break;
27151
+ case exports.ParticleRenderMode.StretchBillboard:
27152
+ renderModeMacro = ParticleRenderer._stretchedBillboardModeMacro;
27153
+ break;
27154
+ case exports.ParticleRenderMode.HorizontalBillboard:
27155
+ throw "Not implemented";
27156
+ case exports.ParticleRenderMode.VerticalBillboard:
27157
+ throw "Not implemented";
27158
+ case exports.ParticleRenderMode.Mesh:
27159
+ throw "Not implemented";
27160
+ }
27161
+ if (this._currentRenderModeMacro !== renderModeMacro) {
27162
+ this._currentRenderModeMacro && shaderData.disableMacro(this._currentRenderModeMacro);
27163
+ renderModeMacro && shaderData.enableMacro(renderModeMacro);
27164
+ this._currentRenderModeMacro = renderModeMacro;
27165
+ }
27166
+ // @ts-ignore
27167
+ if (lastRenderMode !== exports.ParticleRenderMode.Mesh !== (value === exports.ParticleRenderMode.Mesh)) {
27168
+ this.generator._reorganizeGeometryBuffers();
27169
+ }
27067
27170
  }
27068
27171
  }
27069
27172
  },
27070
27173
  {
27071
- key: "baseTexture",
27174
+ key: "mesh",
27072
27175
  get: /**
27073
- * Base texture.
27176
+ * The mesh of particle.
27177
+ * @remarks Valid when `renderMode` is `Mesh`.
27074
27178
  */ function get() {
27075
- return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
27179
+ return this._mesh;
27076
27180
  },
27077
27181
  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);
27182
+ var lastMesh = this._mesh;
27183
+ if (lastMesh !== value) {
27184
+ var _lastMesh, _value;
27185
+ this._mesh = value;
27186
+ (_lastMesh = lastMesh) == null ? void 0 : _lastMesh._addReferCount(-1);
27187
+ (_value = value) == null ? void 0 : _value._addReferCount(1);
27188
+ if (this.renderMode === exports.ParticleRenderMode.Mesh) {
27189
+ this.generator._reorganizeGeometryBuffers();
27190
+ }
27083
27191
  }
27084
27192
  }
27085
27193
  }
27086
27194
  ]);
27087
- return ParticleMaterial;
27088
- }(BaseMaterial);
27089
-
27090
- var SubPrimitive = function SubPrimitive() {
27091
- };
27195
+ return ParticleRenderer;
27196
+ }(exports.Renderer);
27197
+ (function() {
27198
+ ParticleRenderer._billboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_SPHERE_BILLBOARD");
27199
+ })();
27200
+ (function() {
27201
+ ParticleRenderer._stretchedBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_STRETCHED_BILLBOARD");
27202
+ })();
27203
+ (function() {
27204
+ ParticleRenderer._horizontalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_HORIZONTAL_BILLBOARD");
27205
+ })();
27206
+ (function() {
27207
+ ParticleRenderer._verticalBillboardModeMacro = ShaderMacro.getByName("RENDERER_MODE_VERTICAL_BILLBOARD");
27208
+ })();
27209
+ (function() {
27210
+ ParticleRenderer._renderModeMeshMacro = ShaderMacro.getByName("RENDERER_MODE_MESH");
27211
+ })();
27212
+ (function() {
27213
+ ParticleRenderer._pivotOffsetProperty = ShaderProperty.getByName("renderer_PivotOffset");
27214
+ })();
27215
+ (function() {
27216
+ ParticleRenderer._lengthScale = ShaderProperty.getByName("renderer_StretchedBillboardLengthScale");
27217
+ })();
27218
+ (function() {
27219
+ ParticleRenderer._speedScale = ShaderProperty.getByName("renderer_StretchedBillboardSpeedScale");
27220
+ })();
27221
+ (function() {
27222
+ ParticleRenderer._currentTime = ShaderProperty.getByName("renderer_CurrentTime");
27223
+ })();
27224
+ __decorate([
27225
+ deepClone
27226
+ ], ParticleRenderer.prototype, "generator", void 0);
27227
+ __decorate([
27228
+ shallowClone
27229
+ ], ParticleRenderer.prototype, "pivot", void 0);
27092
27230
 
27093
27231
  /**
27094
27232
  * Particle curve mode.
@@ -27110,18 +27248,6 @@ var SubPrimitive = function SubPrimitive() {
27110
27248
  ParticleGradientMode[ParticleGradientMode[/* Random value between two color gradients. */ "TwoGradients"] = 3] = "TwoGradients";
27111
27249
  })(exports.ParticleGradientMode || (exports.ParticleGradientMode = {}));
27112
27250
 
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
27251
  /**
27126
27252
  * The space to simulate particles in.
27127
27253
  */ exports.ParticleSimulationSpace = void 0;
@@ -27130,12 +27256,6 @@ var SubPrimitive = function SubPrimitive() {
27130
27256
  ParticleSimulationSpace[ParticleSimulationSpace[/** Simulate particles in world space. */ "World"] = 1] = "World";
27131
27257
  })(exports.ParticleSimulationSpace || (exports.ParticleSimulationSpace = {}));
27132
27258
 
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
27259
  /**
27140
27260
  * @internal
27141
27261
  */ var ParticleRandomSubSeeds;
@@ -29086,181 +29206,60 @@ __decorate([
29086
29206
  ], ParticleGenerator.prototype, "_instanceVertices", void 0);
29087
29207
 
29088
29208
  /**
29089
- * Particle Renderer Component.
29090
- */ var ParticleRenderer = /*#__PURE__*/ function(Renderer1) {
29091
- _inherits(ParticleRenderer, Renderer1);
29092
- function ParticleRenderer(entity) {
29209
+ * Particle Material.
29210
+ */ var ParticleMaterial = /*#__PURE__*/ function(BaseMaterial1) {
29211
+ _inherits(ParticleMaterial, BaseMaterial1);
29212
+ function ParticleMaterial(engine) {
29093
29213
  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);
29214
+ _this = BaseMaterial1.call(this, engine, Shader.find("particle-shader")) || this;
29215
+ var shaderData = _this.shaderData;
29216
+ shaderData.enableMacro("MATERIAL_OMIT_NORMAL");
29217
+ shaderData.setColor(BaseMaterial._baseColorProp, new engineMath.Color(1, 1, 1, 1));
29218
+ _this.isTransparent = true;
29102
29219
  return _this;
29103
29220
  }
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
- };
29221
+ var _proto = ParticleMaterial.prototype;
29137
29222
  /**
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();
29223
+ * @inheritdoc
29224
+ */ _proto.clone = function clone() {
29225
+ var dest = new ParticleMaterial(this._engine);
29226
+ this.cloneTo(dest);
29227
+ return dest;
29166
29228
  };
29167
- _create_class(ParticleRenderer, [
29229
+ _create_class(ParticleMaterial, [
29168
29230
  {
29169
- key: "renderMode",
29231
+ key: "baseColor",
29170
29232
  get: /**
29171
- * Specifies how particles are rendered.
29233
+ * Base color.
29172
29234
  */ function get() {
29173
- return this._renderMode;
29235
+ return this.shaderData.getColor(BaseMaterial._baseColorProp);
29174
29236
  },
29175
29237
  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
- }
29238
+ var baseColor = this.shaderData.getColor(BaseMaterial._baseColorProp);
29239
+ if (value !== baseColor) {
29240
+ baseColor.copyFrom(value);
29204
29241
  }
29205
29242
  }
29206
29243
  },
29207
29244
  {
29208
- key: "mesh",
29245
+ key: "baseTexture",
29209
29246
  get: /**
29210
- * The mesh of particle.
29211
- * @remarks Valid when `renderMode` is `Mesh`.
29247
+ * Base texture.
29212
29248
  */ function get() {
29213
- return this._mesh;
29249
+ return this.shaderData.getTexture(BaseMaterial._baseTextureProp);
29214
29250
  },
29215
29251
  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
- }
29252
+ this.shaderData.setTexture(BaseMaterial._baseTextureProp, value);
29253
+ if (value) {
29254
+ this.shaderData.enableMacro(BaseMaterial._baseTextureMacro);
29255
+ } else {
29256
+ this.shaderData.disableMacro(BaseMaterial._baseTextureMacro);
29225
29257
  }
29226
29258
  }
29227
29259
  }
29228
29260
  ]);
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);
29261
+ return ParticleMaterial;
29262
+ }(BaseMaterial);
29264
29263
 
29265
29264
  /**
29266
29265
  * A burst is a particle emission event, where a number of particles are all emitted at the same time
@@ -29932,6 +29931,7 @@ exports.CharacterController = CharacterController;
29932
29931
  exports.CircleShape = CircleShape;
29933
29932
  exports.CloneManager = CloneManager;
29934
29933
  exports.ColliderShape = ColliderShape;
29934
+ exports.ColorOverLifetimeModule = ColorOverLifetimeModule;
29935
29935
  exports.Component = Component;
29936
29936
  exports.ConeShape = ConeShape;
29937
29937
  exports.ContentRestorer = ContentRestorer;
@@ -29940,12 +29940,15 @@ exports.CurveKey = CurveKey;
29940
29940
  exports.DepthState = DepthState;
29941
29941
  exports.DirectLight = DirectLight;
29942
29942
  exports.DynamicCollider = DynamicCollider;
29943
+ exports.EmissionModule = EmissionModule;
29943
29944
  exports.Engine = Engine;
29944
29945
  exports.EngineObject = EngineObject;
29945
29946
  exports.Entity = Entity;
29946
29947
  exports.EventDispatcher = EventDispatcher;
29947
29948
  exports.FixedJoint = FixedJoint;
29948
29949
  exports.Font = Font;
29950
+ exports.GradientAlphaKey = GradientAlphaKey;
29951
+ exports.GradientColorKey = GradientColorKey;
29949
29952
  exports.HemisphereShape = HemisphereShape;
29950
29953
  exports.HingeJoint = HingeJoint;
29951
29954
  exports.HitResult = HitResult;
@@ -29957,6 +29960,7 @@ exports.Keyframe = Keyframe;
29957
29960
  exports.Light = Light;
29958
29961
  exports.Loader = Loader;
29959
29962
  exports.Logger = Logger;
29963
+ exports.MainModule = MainModule;
29960
29964
  exports.Material = Material;
29961
29965
  exports.Mesh = Mesh;
29962
29966
  exports.MeshRenderer = MeshRenderer;
@@ -29965,7 +29969,10 @@ exports.PBRBaseMaterial = PBRBaseMaterial;
29965
29969
  exports.PBRMaterial = PBRMaterial;
29966
29970
  exports.PBRSpecularMaterial = PBRSpecularMaterial;
29967
29971
  exports.ParticleCompositeCurve = ParticleCompositeCurve;
29972
+ exports.ParticleCompositeGradient = ParticleCompositeGradient;
29968
29973
  exports.ParticleCurve = ParticleCurve;
29974
+ exports.ParticleGenerator = ParticleGenerator;
29975
+ exports.ParticleGradient = ParticleGradient;
29969
29976
  exports.ParticleMaterial = ParticleMaterial;
29970
29977
  exports.ParticleRenderer = ParticleRenderer;
29971
29978
  exports.PhysicsMaterial = PhysicsMaterial;
@@ -29984,6 +29991,7 @@ exports.RenderState = RenderState;
29984
29991
  exports.RenderTarget = RenderTarget;
29985
29992
  exports.RenderTargetBlendState = RenderTargetBlendState;
29986
29993
  exports.ResourceManager = ResourceManager;
29994
+ exports.RotationOverLifetimeModule = RotationOverLifetimeModule;
29987
29995
  exports.Scene = Scene;
29988
29996
  exports.SceneManager = SceneManager;
29989
29997
  exports.Script = Script;
@@ -29995,6 +30003,7 @@ exports.ShaderMacroCollection = ShaderMacroCollection;
29995
30003
  exports.ShaderPass = ShaderPass;
29996
30004
  exports.ShaderProperty = ShaderProperty;
29997
30005
  exports.ShaderTagKey = ShaderTagKey;
30006
+ exports.SizeOverLifetimeModule = SizeOverLifetimeModule;
29998
30007
  exports.Skin = Skin;
29999
30008
  exports.SkinnedMeshRenderer = SkinnedMeshRenderer;
30000
30009
  exports.Sky = Sky;
@@ -30020,12 +30029,14 @@ exports.Texture = Texture;
30020
30029
  exports.Texture2D = Texture2D;
30021
30030
  exports.Texture2DArray = Texture2DArray;
30022
30031
  exports.TextureCube = TextureCube;
30032
+ exports.TextureSheetAnimationModule = TextureSheetAnimationModule;
30023
30033
  exports.Time = Time;
30024
30034
  exports.TrailMaterial = TrailMaterial;
30025
30035
  exports.TrailRenderer = TrailRenderer;
30026
30036
  exports.Transform = Transform;
30027
30037
  exports.UnlitMaterial = UnlitMaterial;
30028
30038
  exports.Utils = Utils;
30039
+ exports.VelocityOverLifetimeModule = VelocityOverLifetimeModule;
30029
30040
  exports.VertexBufferBinding = VertexBufferBinding;
30030
30041
  exports.VertexElement = VertexElement;
30031
30042
  exports.assignmentClone = assignmentClone;