minerender 2.1.0-alpha.4 → 2.1.0-alpha.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.
@@ -85,7 +85,7 @@ var require_dist = __commonJS({
85
85
  return false;
86
86
  };
87
87
  var PROTECTED_KEYS = ["__proto__"];
88
- var merge11 = function() {
88
+ var merge10 = function() {
89
89
  var objects = [];
90
90
  for (var _i = 0; _i < arguments.length; _i++) {
91
91
  objects[_i] = arguments[_i];
@@ -96,9 +96,9 @@ var require_dist = __commonJS({
96
96
  return;
97
97
  }
98
98
  if (Array.isArray(result[key]) && Array.isArray(current[key])) {
99
- result[key] = merge11.options.mergeArrays ? Array.from(new Set(result[key].concat(current[key]))) : current[key];
99
+ result[key] = merge10.options.mergeArrays ? Array.from(new Set(result[key].concat(current[key]))) : current[key];
100
100
  } else if (isObject(result[key]) && isObject(current[key])) {
101
- result[key] = merge11(result[key], current[key]);
101
+ result[key] = merge10(result[key], current[key]);
102
102
  } else {
103
103
  result[key] = current[key];
104
104
  }
@@ -109,18 +109,18 @@ var require_dist = __commonJS({
109
109
  var defaultOptions = {
110
110
  mergeArrays: true
111
111
  };
112
- merge11.options = defaultOptions;
113
- merge11.withOptions = function(options) {
112
+ merge10.options = defaultOptions;
113
+ merge10.withOptions = function(options) {
114
114
  var objects = [];
115
115
  for (var _i = 1; _i < arguments.length; _i++) {
116
116
  objects[_i - 1] = arguments[_i];
117
117
  }
118
- merge11.options = __assign({ mergeArrays: true }, options);
119
- var result = merge11.apply(void 0, __spreadArray([], __read(objects), false));
120
- merge11.options = defaultOptions;
118
+ merge10.options = __assign({ mergeArrays: true }, options);
119
+ var result = merge10.apply(void 0, __spreadArray([], __read(objects), false));
120
+ merge10.options = defaultOptions;
121
121
  return result;
122
122
  };
123
- exports.default = merge11;
123
+ exports.default = merge10;
124
124
  }
125
125
  });
126
126
 
@@ -164,7 +164,7 @@ var _PersistentCache = class _PersistentCache {
164
164
  }
165
165
  };
166
166
  /** Bump to invalidate every persisted entry. */
167
- _PersistentCache.VERSION = 1;
167
+ _PersistentCache.VERSION = 2;
168
168
  var PersistentCache = _PersistentCache;
169
169
 
170
170
  // src/env/browser/BrowserCache.ts
@@ -265,7 +265,8 @@ var BrowserEnv = class {
265
265
  }
266
266
  openCache(name, version) {
267
267
  return new BrowserCache(localforage.createInstance({
268
- name,
268
+ // IndexedDB schema upgrades retain records; each cache generation needs its own database.
269
+ name: name + version,
269
270
  version
270
271
  }));
271
272
  }
@@ -477,6 +478,7 @@ import { CanvasTexture, Texture as Texture2 } from "three";
477
478
 
478
479
  // src/texture/TextureLoader.ts
479
480
  import { RGBAFormat, Texture } from "three";
481
+ import * as THREE from "three";
480
482
 
481
483
  // src/canvas/CanvasCompat.ts
482
484
  function createImage(width, height) {
@@ -865,6 +867,7 @@ var TextureLoader = class {
865
867
  }
866
868
  static loadInBackground(src, format = RGBAFormat, rotation = 0) {
867
869
  const texture = this.createTexture();
870
+ texture.colorSpace = THREE.SRGBColorSpace;
868
871
  const image = ImageLoader.loadElement(src);
869
872
  image.onload = function() {
870
873
  texture.needsUpdate = true;
@@ -876,6 +879,7 @@ var TextureLoader = class {
876
879
  }
877
880
  static load(src, format = RGBAFormat, rotation = 0) {
878
881
  const texture = new Texture();
882
+ texture.colorSpace = THREE.SRGBColorSpace;
879
883
  ImageLoader.getData(src).then((image) => {
880
884
  texture.needsUpdate = true;
881
885
  texture.image = image;
@@ -887,11 +891,11 @@ var TextureLoader = class {
887
891
  };
888
892
 
889
893
  // src/texture/Textures.ts
890
- import * as THREE from "three";
894
+ import * as THREE2 from "three";
891
895
  var Textures = class _Textures {
892
896
  static initTextureProps(texture) {
893
- texture.magFilter = THREE.NearestFilter;
894
- texture.minFilter = THREE.NearestFilter;
897
+ texture.magFilter = THREE2.NearestFilter;
898
+ texture.minFilter = THREE2.NearestFilter;
895
899
  texture.anisotropy = 0;
896
900
  return texture;
897
901
  }
@@ -902,7 +906,9 @@ var Textures = class _Textures {
902
906
  return new Texture2();
903
907
  }
904
908
  static createCanvasTexture(canvas) {
905
- return this.initTextureProps(new CanvasTexture(canvas));
909
+ const texture = new CanvasTexture(canvas);
910
+ texture.colorSpace = THREE2.SRGBColorSpace;
911
+ return this.initTextureProps(texture);
906
912
  }
907
913
  static getImage(key) {
908
914
  const keyStr = serializeTextureKey(key);
@@ -1019,6 +1025,9 @@ var _Materials = class _Materials {
1019
1025
  gl_FragColor = vec4(lift + color.rgb * light2, 1.0);
1020
1026
 
1021
1027
  }
1028
+
1029
+ #include <tonemapping_fragment>
1030
+ #include <colorspace_fragment>
1022
1031
  }
1023
1032
  `;
1024
1033
  try {
@@ -1649,7 +1658,6 @@ var ArchiveAssetSource = class _ArchiveAssetSource extends AssetSource {
1649
1658
  };
1650
1659
 
1651
1660
  // src/assets/AssetLoader.ts
1652
- var import_ts_deepmerge3 = __toESM(require_dist());
1653
1661
  var p5 = prefix("AssetLoader");
1654
1662
  var _AssetLoader = class _AssetLoader {
1655
1663
  static addSource(key, source, override = true) {
@@ -1673,7 +1681,6 @@ var _AssetLoader = class _AssetLoader {
1673
1681
  return void 0;
1674
1682
  }
1675
1683
  static async getAll(key, parser) {
1676
- console.log(this._SOURCES);
1677
1684
  let promises = [];
1678
1685
  for (const source of this._SOURCES) {
1679
1686
  promises.push(source.source.get(key, parser));
@@ -1682,24 +1689,16 @@ var _AssetLoader = class _AssetLoader {
1682
1689
  return results.filter((r) => r != void 0);
1683
1690
  });
1684
1691
  }
1692
+ /** Returns the first defined result in source-priority order, without merging assets. */
1685
1693
  static async get(key, parser) {
1686
- console.log(this._SOURCES);
1687
- let promises = [];
1688
- for (const source of this._SOURCES) {
1689
- promises.push(source.source.get(key, parser));
1690
- }
1691
- return Promise.all(promises).then((results) => {
1692
- const fallback = results[results.length - 1];
1693
- for (const result of results) {
1694
- if (result) {
1695
- if (fallback) {
1696
- return (0, import_ts_deepmerge3.default)({}, fallback, result);
1697
- }
1698
- return result;
1699
- }
1694
+ const sources = [...this._SOURCES];
1695
+ for (const source of sources) {
1696
+ const result = await source.source.get(key, parser);
1697
+ if (result !== void 0) {
1698
+ return result;
1700
1699
  }
1701
- return void 0;
1702
- });
1700
+ }
1701
+ return void 0;
1703
1702
  }
1704
1703
  };
1705
1704
  _AssetLoader.ROOT = DEFAULT_ROOT;
@@ -2521,7 +2520,7 @@ var MineRenderError = class _MineRenderError extends Error {
2521
2520
  };
2522
2521
 
2523
2522
  // src/renderer/SceneObject.ts
2524
- var import_ts_deepmerge4 = __toESM(require_dist());
2523
+ var import_ts_deepmerge3 = __toESM(require_dist());
2525
2524
  var p7 = prefix("SceneObject");
2526
2525
  var _SceneObject = class _SceneObject extends Object3D2 {
2527
2526
  constructor(options) {
@@ -2530,7 +2529,7 @@ var _SceneObject = class _SceneObject extends Object3D2 {
2530
2529
  this.materialCallbacks = {};
2531
2530
  this._isInstanced = false;
2532
2531
  this._instanceCounter = 0;
2533
- this.options = (0, import_ts_deepmerge4.default)({}, _SceneObject.DEFAULT_OPTIONS, options ?? {});
2532
+ this.options = (0, import_ts_deepmerge3.default)({}, _SceneObject.DEFAULT_OPTIONS, options ?? {});
2534
2533
  console.log("SceneObject options", this.options);
2535
2534
  }
2536
2535
  set scene(scene) {
@@ -2879,7 +2878,7 @@ var _SceneObject = class _SceneObject extends Object3D2 {
2879
2878
  }
2880
2879
  //</editor-fold>
2881
2880
  };
2882
- _SceneObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge4.default)({}, {
2881
+ _SceneObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge3.default)({}, {
2883
2882
  instanceMeshes: true,
2884
2883
  maxInstanceCount: 50,
2885
2884
  mergeMeshes: true,
@@ -2891,16 +2890,16 @@ function isSceneObject(obj) {
2891
2890
  }
2892
2891
 
2893
2892
  // src/entity/scene/EntityObject.ts
2894
- var import_ts_deepmerge5 = __toESM(require_dist());
2893
+ var import_ts_deepmerge4 = __toESM(require_dist());
2895
2894
  import { Object3D as Object3D3 } from "three";
2896
- import * as THREE2 from "three";
2895
+ import * as THREE3 from "three";
2897
2896
  var EntityObject = class extends SceneObject {
2898
2897
  constructor(entity, options) {
2899
2898
  super();
2900
2899
  this.entity = entity;
2901
2900
  this.isEntityObject = true;
2902
2901
  this.meshesCreated = false;
2903
- this.options = (0, import_ts_deepmerge5.default)({}, SceneObject.DEFAULT_OPTIONS, options ?? {});
2902
+ this.options = (0, import_ts_deepmerge4.default)({}, SceneObject.DEFAULT_OPTIONS, options ?? {});
2904
2903
  }
2905
2904
  async init() {
2906
2905
  this.createMeshes();
@@ -2937,8 +2936,8 @@ var EntityObject = class extends SceneObject {
2937
2936
  const l = cube.maxZ - cube.minZ;
2938
2937
  const uv = texture.toUvArray(w, h, l);
2939
2938
  const cubeGeo = this._getBoxGeometryForDimensionsAndUv(w, h, l, uv).clone();
2940
- cubeGeo.applyMatrix4(new THREE2.Matrix4().makeTranslation(w / 2, h / 2, l / 2));
2941
- cubeGeo.applyMatrix4(new THREE2.Matrix4().makeTranslation(cube.minX, cube.minY, cube.minZ));
2939
+ cubeGeo.applyMatrix4(new THREE3.Matrix4().makeTranslation(w / 2, h / 2, l / 2));
2940
+ cubeGeo.applyMatrix4(new THREE3.Matrix4().makeTranslation(cube.minX, cube.minY, cube.minZ));
2942
2941
  applyModelPartRotation(part, cubeGeo);
2943
2942
  const mesh = this.createMesh(partName, cubeGeo, mat);
2944
2943
  partAnchor.add(mesh);
@@ -2967,7 +2966,7 @@ var EntityObject = class extends SceneObject {
2967
2966
  }
2968
2967
  }
2969
2968
  };
2970
- EntityObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge5.default)({}, SceneObject.DEFAULT_OPTIONS, {});
2969
+ EntityObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge4.default)({}, SceneObject.DEFAULT_OPTIONS, {});
2971
2970
  function isEntityObject(obj) {
2972
2971
  return obj.isEntityObject;
2973
2972
  }
@@ -3968,7 +3967,7 @@ function computeMorphedAttributes(object) {
3968
3967
  }
3969
3968
 
3970
3969
  // src/model/scene/ModelObject.ts
3971
- var import_ts_deepmerge6 = __toESM(require_dist());
3970
+ var import_ts_deepmerge5 = __toESM(require_dist());
3972
3971
  var p10 = prefix("ModelObject");
3973
3972
  var _ModelObject = class _ModelObject extends SceneObject {
3974
3973
  constructor(originalModel, options) {
@@ -3976,7 +3975,7 @@ var _ModelObject = class _ModelObject extends SceneObject {
3976
3975
  this.originalModel = originalModel;
3977
3976
  this.isModelObject = true;
3978
3977
  this.meshesCreated = false;
3979
- this.options = (0, import_ts_deepmerge6.default)({}, _ModelObject.DEFAULT_OPTIONS, options ?? {});
3978
+ this.options = (0, import_ts_deepmerge5.default)({}, _ModelObject.DEFAULT_OPTIONS, options ?? {});
3980
3979
  console.log("ModelObject options", this.options);
3981
3980
  }
3982
3981
  async init() {
@@ -4074,14 +4073,14 @@ var _ModelObject = class _ModelObject extends SceneObject {
4074
4073
  }
4075
4074
  }
4076
4075
  };
4077
- _ModelObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge6.default)({}, SceneObject.DEFAULT_OPTIONS, {});
4076
+ _ModelObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge5.default)({}, SceneObject.DEFAULT_OPTIONS, {});
4078
4077
  var ModelObject = _ModelObject;
4079
4078
  function isModelObject(obj) {
4080
4079
  return obj.isModelObject;
4081
4080
  }
4082
4081
 
4083
4082
  // src/model/block/scene/BlockObject.ts
4084
- var import_ts_deepmerge7 = __toESM(require_dist());
4083
+ var import_ts_deepmerge6 = __toESM(require_dist());
4085
4084
  import { Euler as Euler3, Matrix4 as Matrix46, Vector3 as Vector36 } from "three";
4086
4085
  var p11 = prefix("BlockObject");
4087
4086
  var _BlockObject = class _BlockObject extends SceneObject {
@@ -4097,7 +4096,7 @@ var _BlockObject = class _BlockObject extends SceneObject {
4097
4096
  this._instanceModel = [];
4098
4097
  this._variants = [];
4099
4098
  this._models = [];
4100
- this.options = (0, import_ts_deepmerge7.default)({}, _BlockObject.DEFAULT_OPTIONS, options ?? {});
4099
+ this.options = (0, import_ts_deepmerge6.default)({}, _BlockObject.DEFAULT_OPTIONS, options ?? {});
4101
4100
  }
4102
4101
  async init() {
4103
4102
  if (this.options.applyDefaultState) {
@@ -4386,7 +4385,7 @@ var _BlockObject = class _BlockObject extends SceneObject {
4386
4385
  //TODO: should override rotation + scale methods
4387
4386
  //TODO
4388
4387
  };
4389
- _BlockObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge7.default)({}, ModelObject.DEFAULT_OPTIONS, {
4388
+ _BlockObject.DEFAULT_OPTIONS = (0, import_ts_deepmerge6.default)({}, ModelObject.DEFAULT_OPTIONS, {
4390
4389
  applyDefaultState: true
4391
4390
  });
4392
4391
  var BlockObject = _BlockObject;
@@ -4436,7 +4435,7 @@ var StructureParser = class {
4436
4435
 
4437
4436
  // src/renderer/MineRenderScene.ts
4438
4437
  import { Scene as Scene2 } from "three";
4439
- var import_ts_deepmerge9 = __toESM(require_dist());
4438
+ var import_ts_deepmerge8 = __toESM(require_dist());
4440
4439
 
4441
4440
  // src/skin/SkinPart.ts
4442
4441
  var SkinPart = /* @__PURE__ */ ((SkinPart2) => {
@@ -5167,7 +5166,7 @@ var slimSkinGeometries = {
5167
5166
  };
5168
5167
 
5169
5168
  // src/skin/scene/SkinObject.ts
5170
- var import_ts_deepmerge8 = __toESM(require_dist());
5169
+ var import_ts_deepmerge7 = __toESM(require_dist());
5171
5170
  var SkinObject = class extends SceneObject {
5172
5171
  constructor(options) {
5173
5172
  super();
@@ -5175,7 +5174,7 @@ var SkinObject = class extends SceneObject {
5175
5174
  this.legacy = false;
5176
5175
  this.skinTextureWidth = 64;
5177
5176
  this.skinTextureHeight = 64;
5178
- this.options = (0, import_ts_deepmerge8.default)({}, SceneObject.DEFAULT_OPTIONS, options ?? {});
5177
+ this.options = (0, import_ts_deepmerge7.default)({}, SceneObject.DEFAULT_OPTIONS, options ?? {});
5179
5178
  }
5180
5179
  async init() {
5181
5180
  this.createMeshes();
@@ -5292,7 +5291,7 @@ var _MineRenderScene = class _MineRenderScene extends Scene2 {
5292
5291
  this.dirty = true;
5293
5292
  }
5294
5293
  };
5295
- this.options = (0, import_ts_deepmerge9.default)({}, _MineRenderScene.DEFAULT_OPTIONS, options ?? {});
5294
+ this.options = (0, import_ts_deepmerge8.default)({}, _MineRenderScene.DEFAULT_OPTIONS, options ?? {});
5296
5295
  }
5297
5296
  add(...objects) {
5298
5297
  for (const object of objects) {
@@ -5388,15 +5387,15 @@ var _MineRenderScene = class _MineRenderScene extends Scene2 {
5388
5387
  return this.addSceneObject(entity, () => new EntityObject(entity, options), options, parent);
5389
5388
  }
5390
5389
  };
5391
- _MineRenderScene.DEFAULT_OPTIONS = (0, import_ts_deepmerge9.default)({}, {});
5390
+ _MineRenderScene.DEFAULT_OPTIONS = (0, import_ts_deepmerge8.default)({}, {});
5392
5391
  var MineRenderScene = _MineRenderScene;
5393
5392
  function isMineRenderScene(obj) {
5394
5393
  return obj.isMineRenderScene;
5395
5394
  }
5396
5395
 
5397
5396
  // src/renderer/Renderer.ts
5398
- import { AxesHelper as AxesHelper3, GridHelper, LinearEncoding, OrthographicCamera, PCFSoftShadowMap, PerspectiveCamera, Vector3 as Vector38, WebGLRenderer } from "three";
5399
- var import_ts_deepmerge10 = __toESM(require_dist());
5397
+ import { AxesHelper as AxesHelper3, GridHelper, OrthographicCamera, PCFSoftShadowMap, PerspectiveCamera, SRGBColorSpace as SRGBColorSpace3, Vector3 as Vector38, WebGLRenderer } from "three";
5398
+ var import_ts_deepmerge9 = __toESM(require_dist());
5400
5399
  import Stats from "stats.js";
5401
5400
  import { EffectComposer, RenderPass } from "postprocessing";
5402
5401
 
@@ -6061,7 +6060,7 @@ var _Renderer = class _Renderer {
6061
6060
  this._changeListener = () => {
6062
6061
  this._dirty = true;
6063
6062
  };
6064
- this.options = (0, import_ts_deepmerge10.default)({}, _Renderer.DEFAULT_OPTIONS, options ?? {});
6063
+ this.options = (0, import_ts_deepmerge9.default)({}, _Renderer.DEFAULT_OPTIONS, options ?? {});
6065
6064
  this._animationLoop = this.animate.bind(this);
6066
6065
  this._frameInterval = this.options.render.fpsLimit > 0 ? 1e3 / this.options.render.fpsLimit : void 0;
6067
6066
  this._scene = this.createScene();
@@ -6110,13 +6109,13 @@ var _Renderer = class _Renderer {
6110
6109
  renderer.setClearColor(0, 0);
6111
6110
  renderer.shadowMap.enabled = true;
6112
6111
  renderer.shadowMap.type = PCFSoftShadowMap;
6113
- renderer.outputEncoding = LinearEncoding;
6112
+ renderer.outputColorSpace = SRGBColorSpace3;
6114
6113
  renderer.setSize(this.viewWidth, this.viewHeight);
6115
6114
  return renderer;
6116
6115
  }
6117
6116
  createComposer() {
6117
+ if (!this.options.composer.enabled) return void 0;
6118
6118
  const composer = new EffectComposer(this.renderer);
6119
- if (!this.options.composer.enabled) return composer;
6120
6119
  composer.setSize(this.viewWidth, this.viewHeight);
6121
6120
  composer.addPass(new RenderPass(this.scene, this.camera));
6122
6121
  return composer;
@@ -6225,7 +6224,7 @@ var _Renderer = class _Renderer {
6225
6224
  this.camera.updateProjectionMatrix();
6226
6225
  }
6227
6226
  this.renderer.setSize(width, height);
6228
- this.composer.setSize(width, height);
6227
+ this.composer?.setSize(width, height);
6229
6228
  this._dirty = true;
6230
6229
  }
6231
6230
  //<editor-fold desc="RENDER">
@@ -6284,7 +6283,7 @@ var _Renderer = class _Renderer {
6284
6283
  }
6285
6284
  }
6286
6285
  this._debugHelpers.length = 0;
6287
- this.composer.dispose();
6286
+ this.composer?.dispose();
6288
6287
  this.renderer.dispose();
6289
6288
  this.renderer.forceContextLoss();
6290
6289
  }
@@ -6304,7 +6303,7 @@ var _Renderer = class _Renderer {
6304
6303
  if (this._stats) {
6305
6304
  this._stats.begin();
6306
6305
  }
6307
- if (this.options.composer.enabled) {
6306
+ if (this.options.composer.enabled && this.composer) {
6308
6307
  this.composer.render();
6309
6308
  } else {
6310
6309
  this.renderer.render(this.scene, this.camera);
@@ -6346,7 +6345,7 @@ var _Renderer = class _Renderer {
6346
6345
  }
6347
6346
  ///
6348
6347
  };
6349
- _Renderer.DEFAULT_OPTIONS = (0, import_ts_deepmerge10.default)({}, {
6348
+ _Renderer.DEFAULT_OPTIONS = (0, import_ts_deepmerge9.default)({}, {
6350
6349
  camera: {
6351
6350
  type: "perspective",
6352
6351
  near: 1,