@babylonjs/core 8.53.1 → 8.54.0

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/Meshes/mesh.d.ts CHANGED
@@ -882,6 +882,8 @@ export declare class Mesh extends AbstractMesh implements IGetSetVerticesData {
882
882
  */
883
883
  _rebuild(dispose?: boolean): void;
884
884
  /** @internal */
885
+ _releaseRenderPassId(id: number): void;
886
+ /** @internal */
885
887
  _freeze(): void;
886
888
  /** @internal */
887
889
  _unFreeze(): void;
package/Meshes/mesh.js CHANGED
@@ -1190,8 +1190,8 @@ export class Mesh extends AbstractMesh {
1190
1190
  };
1191
1191
  }
1192
1192
  if (!instanceDataStorage.visibleInstances[renderId]) {
1193
- if (instanceDataStorage.previousRenderId !== undefined && this._instanceDataStorage.isFrozen) {
1194
- instanceDataStorage.visibleInstances[instanceDataStorage.previousRenderId] = null;
1193
+ if (instanceDataStorage.previousRenderId !== undefined && (!this._instanceDataStorage.useMonoDataStorageRenderPass || this._instanceDataStorage.isFrozen)) {
1194
+ delete instanceDataStorage.visibleInstances[instanceDataStorage.previousRenderId];
1195
1195
  }
1196
1196
  instanceDataStorage.previousRenderId = renderId;
1197
1197
  instanceDataStorage.visibleInstances[renderId] = new Array();
@@ -1966,6 +1966,12 @@ export class Mesh extends AbstractMesh {
1966
1966
  }
1967
1967
  dataStorage.instancesBuffer = null;
1968
1968
  }
1969
+ if (dataStorage?.instancesPreviousBuffer) {
1970
+ if (dispose) {
1971
+ dataStorage.instancesPreviousBuffer.dispose();
1972
+ }
1973
+ dataStorage.instancesPreviousBuffer = null;
1974
+ }
1969
1975
  }
1970
1976
  /**
1971
1977
  * @internal
@@ -1995,6 +2001,17 @@ export class Mesh extends AbstractMesh {
1995
2001
  super._rebuild(dispose);
1996
2002
  }
1997
2003
  /** @internal */
2004
+ _releaseRenderPassId(id) {
2005
+ const renderPassStorage = this._instanceDataStorage.renderPasses[id];
2006
+ if (renderPassStorage) {
2007
+ this._disposeInstanceDataStorageRenderPass(renderPassStorage, true);
2008
+ delete this._instanceDataStorage.renderPasses[id];
2009
+ }
2010
+ if (this._userInstancedBuffersStorage?.renderPasses) {
2011
+ delete this._userInstancedBuffersStorage.renderPasses[id];
2012
+ }
2013
+ }
2014
+ /** @internal */
1998
2015
  _freeze() {
1999
2016
  if (!this.subMeshes) {
2000
2017
  return;