@xviewer.js/core 1.0.0-alpha.55 → 1.0.0-alpha.57

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/module.js CHANGED
@@ -1104,10 +1104,14 @@ aLoader._texKeys = [
1104
1104
  ];
1105
1105
 
1106
1106
  class aEXRLoader extends aLoader {
1107
- load({ url, onLoad, onProgress, onError, texSettings }) {
1108
- const loader = new EXRLoader(this.manager.loadingManager);
1109
- loader.setPath(this.manager.path);
1110
- loader.setResourcePath(this.manager.resourcePath);
1107
+ load({ url, path, resourcePath, manager, texSettings, onLoad, onProgress, onError }) {
1108
+ let loader = this._loader;
1109
+ if (loader === undefined) {
1110
+ loader = this._loader = new EXRLoader();
1111
+ }
1112
+ loader.manager = manager;
1113
+ loader.setPath(path);
1114
+ loader.setResourcePath(resourcePath);
1111
1115
  loader.load(url, (tex)=>onLoad(Object.assign(tex, texSettings)), onProgress, onError);
1112
1116
  }
1113
1117
  constructor(...args){
@@ -1119,14 +1123,22 @@ class aEXRLoader extends aLoader {
1119
1123
  }
1120
1124
 
1121
1125
  class aFBXLoader extends aLoader {
1122
- load({ url, onLoad, onProgress, onError }) {
1126
+ load({ url, buffer, path, resourcePath, manager, onLoad, onProgress, onError }) {
1127
+ let loader = this._loader;
1128
+ if (loader === undefined) {
1129
+ loader = this._loader = new FBXLoader();
1130
+ }
1131
+ loader.manager = manager;
1132
+ loader.setPath(path);
1133
+ loader.setResourcePath(resourcePath);
1123
1134
  const loadCallback = (node)=>{
1124
1135
  onLoad(aLoader._setUserData(node));
1125
1136
  };
1126
- const loader = new FBXLoader(this.manager.loadingManager);
1127
- loader.setPath(this.manager.path);
1128
- loader.setResourcePath(this.manager.resourcePath);
1129
- loader.load(url, loadCallback, onProgress, onError);
1137
+ if (buffer) {
1138
+ loadCallback(loader.parse(buffer, path));
1139
+ } else {
1140
+ loader.load(url, loadCallback, onProgress, onError);
1141
+ }
1130
1142
  }
1131
1143
  constructor(...args){
1132
1144
  super(...args);
@@ -1137,20 +1149,32 @@ class aFBXLoader extends aLoader {
1137
1149
  }
1138
1150
 
1139
1151
  class aGLTFLoader extends aLoader {
1140
- load({ url, onLoad, onProgress, onError }) {
1152
+ load({ url, buffer, path, resourcePath, dracoPath, manager, onLoad, onProgress, onError }) {
1153
+ let dracoLoader = this._dracoLoader;
1154
+ if (dracoLoader === undefined) {
1155
+ dracoLoader = this._dracoLoader = new DRACOLoader();
1156
+ }
1157
+ dracoLoader.manager = manager;
1158
+ dracoLoader.setDecoderPath(dracoPath);
1159
+ let loader = this._loader;
1160
+ if (loader === undefined) {
1161
+ loader = this._loader = new GLTFLoader();
1162
+ loader.setDRACOLoader(dracoLoader);
1163
+ loader.setMeshoptDecoder(MeshoptDecoder);
1164
+ }
1165
+ loader.manager = manager;
1166
+ loader.setPath(path);
1167
+ loader.setResourcePath(resourcePath);
1141
1168
  const loadCallback = (gltf)=>{
1142
1169
  const node = gltf.scene;
1143
- if (gltf.animations) node.animations = gltf.animations;
1170
+ node.animations.push(...gltf.animations);
1144
1171
  onLoad(aLoader._setUserData(node));
1145
1172
  };
1146
- let gltfLoader = new GLTFLoader(this.manager.loadingManager);
1147
- gltfLoader.setPath(this.manager.path);
1148
- gltfLoader.setResourcePath(this.manager.resourcePath);
1149
- let dracoLoader = new DRACOLoader(this.manager.loadingManager);
1150
- dracoLoader.setDecoderPath(this.manager.dracoPath);
1151
- gltfLoader.setDRACOLoader(dracoLoader);
1152
- gltfLoader.setMeshoptDecoder(MeshoptDecoder);
1153
- gltfLoader.load(url, loadCallback, onProgress, onError);
1173
+ if (buffer) {
1174
+ loader.parse(buffer, resourcePath, loadCallback, onError);
1175
+ } else {
1176
+ loader.load(url, loadCallback, onProgress, onError);
1177
+ }
1154
1178
  }
1155
1179
  constructor(...args){
1156
1180
  super(...args);
@@ -1162,14 +1186,18 @@ class aGLTFLoader extends aLoader {
1162
1186
  }
1163
1187
 
1164
1188
  class aHDRLoader extends aLoader {
1165
- load({ url, onLoad, onProgress, onError, texSettings }) {
1166
- texSettings = Object.assign({
1189
+ load({ url, path, resourcePath, manager, texSettings, onLoad, onProgress, onError }) {
1190
+ let loader = this._loader;
1191
+ if (loader === undefined) {
1192
+ loader = this._loader = new RGBELoader();
1193
+ }
1194
+ loader.manager = manager;
1195
+ loader.setPath(path);
1196
+ loader.setResourcePath(resourcePath);
1197
+ const settings = Object.assign({
1167
1198
  mapping: EquirectangularReflectionMapping
1168
1199
  }, texSettings);
1169
- const loader = new RGBELoader(this.manager.loadingManager);
1170
- loader.setPath(this.manager.path);
1171
- loader.setResourcePath(this.manager.resourcePath);
1172
- loader.load(url, (tex)=>onLoad(Object.assign(tex, texSettings)), onProgress, onError);
1200
+ loader.load(url, (tex)=>onLoad(Object.assign(tex, settings)), onProgress, onError);
1173
1201
  }
1174
1202
  constructor(...args){
1175
1203
  super(...args);
@@ -1180,10 +1208,14 @@ class aHDRLoader extends aLoader {
1180
1208
  }
1181
1209
 
1182
1210
  class aJSONLoader extends aLoader {
1183
- load({ url, onLoad, onProgress, onError }) {
1184
- const loader = new FileLoader(this.manager.loadingManager);
1185
- loader.setPath(this.manager.path);
1186
- loader.setResourcePath(this.manager.resourcePath);
1211
+ load({ url, path, resourcePath, manager, onLoad, onProgress, onError }) {
1212
+ let loader = this._loader;
1213
+ if (loader === undefined) {
1214
+ loader = this._loader = new FileLoader();
1215
+ }
1216
+ loader.manager = manager;
1217
+ loader.setPath(path);
1218
+ loader.setResourcePath(resourcePath);
1187
1219
  loader.load(url, (file)=>onLoad(JSON.parse(file)), onProgress, onError);
1188
1220
  }
1189
1221
  constructor(...args){
@@ -1195,14 +1227,18 @@ class aJSONLoader extends aLoader {
1195
1227
  }
1196
1228
 
1197
1229
  class aTextureLoader extends aLoader {
1198
- load({ url, onLoad, onProgress, onError, texSettings }) {
1230
+ load({ url, path, resourcePath, manager, texSettings, onLoad, onProgress, onError }) {
1231
+ let loader = this._loader;
1232
+ if (loader === undefined) {
1233
+ loader = this._loader = new TextureLoader();
1234
+ }
1235
+ loader.manager = manager;
1236
+ loader.setPath(path);
1237
+ loader.setResourcePath(resourcePath);
1199
1238
  const loadCallback = (tex)=>{
1200
1239
  tex.colorSpace = SRGBColorSpace;
1201
1240
  onLoad(Object.assign(tex, texSettings));
1202
1241
  };
1203
- const loader = new TextureLoader(this.manager.loadingManager);
1204
- loader.setPath(this.manager.path);
1205
- loader.setResourcePath(this.manager.resourcePath);
1206
1242
  loader.load(url, loadCallback, onProgress, onError);
1207
1243
  }
1208
1244
  constructor(...args){
@@ -2864,13 +2900,13 @@ class FreelookVirtualCamera extends VirtualCamera {
2864
2900
  this._touchID = -1;
2865
2901
  this._preLoc0 = new Vector2();
2866
2902
  this._preLoc1 = new Vector2();
2867
- this._spherical = new Spherical(2, Math.PI / 2);
2903
+ this._spherical = new Spherical(4, Math.PI / 2);
2868
2904
  this._lookAt = new Vector3();
2869
2905
  this._tempSmoothing = 6;
2870
2906
  this._tempRotateSmoothing = 8;
2871
2907
  this._targetTheta = 0;
2872
2908
  this._targetPhi = 0;
2873
- this._targetSpringLength = 1;
2909
+ this._targetSpringLength = 4;
2874
2910
  this._targetFov = this.fov;
2875
2911
  this._targetLookAt = new Vector3();
2876
2912
  this.forbidX = false;
@@ -4241,7 +4277,7 @@ class ResourceManager {
4241
4277
  static extension(path) {
4242
4278
  let str = path.split(".");
4243
4279
  if (str.length > 1) {
4244
- return str.pop();
4280
+ return str.pop().toLowerCase();
4245
4281
  }
4246
4282
  return "";
4247
4283
  }
@@ -4253,15 +4289,6 @@ class ResourceManager {
4253
4289
  let str = path.split("/").pop();
4254
4290
  return ext ? str.replace("." + ext, "") : str;
4255
4291
  }
4256
- static _getTextureKey(url, settings) {
4257
- let keys = [
4258
- url
4259
- ];
4260
- for(let k in settings){
4261
- if (settings[k] !== undefined) keys.push(k + "=" + settings[k]);
4262
- }
4263
- return keys.join(",");
4264
- }
4265
4292
  static _splitTextureSettings(props) {
4266
4293
  let settings = {};
4267
4294
  for (let v of ResourceManager._texSettingKeys){
@@ -4276,55 +4303,43 @@ class ResourceManager {
4276
4303
  return settings;
4277
4304
  }
4278
4305
  destroy() {
4279
- this._caches.clear();
4280
4306
  this._loaders.clear();
4281
4307
  }
4308
+ getLoader(ext) {
4309
+ return this._loaders.get(ext);
4310
+ }
4282
4311
  addLoader(Loader) {
4283
4312
  let loader = new Loader(this);
4284
4313
  for (let ext of loader.extension){
4285
4314
  this._loaders.set(ext, loader);
4286
4315
  }
4287
4316
  }
4288
- loadAsset({ url, ext, onProgress, ...props }) {
4317
+ loadAsset({ url, buffer, ext, path, resourcePath, dracoPath, manager, onProgress, ...props }) {
4289
4318
  return new Promise((resolve, reject)=>{
4290
- const ext_ = ResourceManager.extension(url);
4319
+ const sel = ext || url && ResourceManager.extension(url) || "";
4291
4320
  const texSettings = ResourceManager._splitTextureSettings(props);
4292
- const key = ResourceManager._getTextureKey(url, texSettings);
4293
- let result = this._caches.get(key);
4294
- if (result) {
4295
- resolve(result);
4321
+ if (this._loaders.has(sel)) {
4322
+ this._loaders.get(sel).load({
4323
+ url,
4324
+ buffer,
4325
+ texSettings,
4326
+ path,
4327
+ resourcePath,
4328
+ dracoPath,
4329
+ manager,
4330
+ onProgress,
4331
+ onLoad: resolve,
4332
+ onError: (e)=>{
4333
+ console.error(`${url} not exist`, e);
4334
+ }
4335
+ });
4296
4336
  } else {
4297
- const onLoad = (file)=>{
4298
- this._caches.set(key, file);
4299
- resolve(file);
4300
- };
4301
- let sel = ext || ext_;
4302
- if (this._loaders.has(sel)) {
4303
- this._loaders.get(sel).load({
4304
- url,
4305
- texSettings,
4306
- onProgress,
4307
- onLoad,
4308
- onError: (e)=>{
4309
- console.error(`${url} not exist`, e);
4310
- }
4311
- });
4312
- } else {
4313
- reject("ResourceManager.loadAsset: missing loader for " + ext);
4314
- }
4337
+ reject("ResourceManager.loadAsset: missing loader for " + url);
4315
4338
  }
4316
4339
  });
4317
4340
  }
4318
- constructor(props){
4319
- this.path = "";
4320
- this.resourcePath = "";
4321
- this.dracoPath = "";
4322
- this._caches = new Map();
4341
+ constructor(){
4323
4342
  this._loaders = new Map();
4324
- this.path = props.path;
4325
- this.resourcePath = props.resourcePath;
4326
- this.dracoPath = props.dracoPath;
4327
- this.loadingManager = props.loadingManager;
4328
4343
  }
4329
4344
  }
4330
4345
  ResourceManager._texSettingKeys = [
@@ -4533,9 +4548,6 @@ class Viewer extends EventEmitter {
4533
4548
  static getMesh(node, name, group = false) {
4534
4549
  return Viewer._getObjectValue(node.userData.meshes, name, group);
4535
4550
  }
4536
- get instanceId() {
4537
- return this._instanceId;
4538
- }
4539
4551
  get root() {
4540
4552
  return this._root;
4541
4553
  }
@@ -4587,6 +4599,18 @@ class Viewer extends EventEmitter {
4587
4599
  set targetFrameRate(v) {
4588
4600
  this._targetFrameRate = Math.max(0.001, v);
4589
4601
  }
4602
+ get instanceId() {
4603
+ return this._instanceId;
4604
+ }
4605
+ get loadingManager() {
4606
+ return this._loadingManager;
4607
+ }
4608
+ get resourceManager() {
4609
+ return this._resourceManager;
4610
+ }
4611
+ get taskManager() {
4612
+ return this._taskManager;
4613
+ }
4590
4614
  destroy() {
4591
4615
  this.stop();
4592
4616
  this._renderer.dispose();
@@ -4711,7 +4735,10 @@ class Viewer extends EventEmitter {
4711
4735
  }
4712
4736
  }
4713
4737
  loadAsset(props) {
4714
- return this._resourceManager.loadAsset(props);
4738
+ return this._resourceManager.loadAsset(Object.assign(Object.assign({}, this._defaultProps), props));
4739
+ }
4740
+ getLoader(ext) {
4741
+ return this._resourceManager.getLoader(ext);
4715
4742
  }
4716
4743
  addLoader(Loader) {
4717
4744
  this._resourceManager.addLoader(Loader);
@@ -4756,6 +4783,9 @@ class Viewer extends EventEmitter {
4756
4783
  removeComponent(node, component) {
4757
4784
  return this._componentManager.removeComponent(node, component);
4758
4785
  }
4786
+ addTask(task) {
4787
+ this._taskManager.add(task);
4788
+ }
4759
4789
  addNode(object, { args, debug, scale, position, rotation, layer, shadowArgs, makeDefault, component, parent = this._scene, ...props } = {}) {
4760
4790
  let node = null;
4761
4791
  let ins = getClassInstance(object, args);
@@ -4901,6 +4931,7 @@ class Viewer extends EventEmitter {
4901
4931
  factor: 1
4902
4932
  };
4903
4933
  this._orientation = Orientation.AUTO;
4934
+ this._defaultProps = {};
4904
4935
  this._running = false;
4905
4936
  this._rootRotated = false;
4906
4937
  this._time = 0;
@@ -4934,17 +4965,18 @@ class Viewer extends EventEmitter {
4934
4965
  this._renderer.shadowMap.enabled = !!shadows;
4935
4966
  this._renderer.shadowMap.type = typeof shadows === "boolean" ? PCFSoftShadowMap : shadows;
4936
4967
  this._renderer.info.autoReset = false;
4937
- const loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);
4938
- this._resourceManager = new ResourceManager({
4939
- path,
4940
- resourcePath,
4941
- dracoPath,
4942
- loadingManager
4943
- });
4968
+ this._resourceManager = new ResourceManager();
4969
+ this._loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);
4944
4970
  this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);
4945
4971
  this._componentManager = new ComponentManager(this);
4946
4972
  this._pluginManager = new PluginManager(this);
4947
4973
  this._tweenManager = new TweenManager();
4974
+ this._defaultProps = {
4975
+ path,
4976
+ resourcePath,
4977
+ dracoPath,
4978
+ manager: this._loadingManager
4979
+ };
4948
4980
  this._autoResize = autoResize;
4949
4981
  this._targetFrameRate = targetFrameRate;
4950
4982
  this._input = new DeviceInput(this);
@@ -5538,5 +5570,148 @@ class PerformanceMonitorPlugin extends Plugin {
5538
5570
  }
5539
5571
  }
5540
5572
 
5541
- export { AnimationCurve, Box, BoxProjectionPlugin, CinestationBlendDefinition, CinestationBrain, Component, DebugPlugin, DeviceInput, Easing, EnvironmentPlugin, EventEmitter, FInterpConstantTo, FInterpTo, FreelookVirtualCamera, Logger, ObjectInstance, Orientation, PerformanceMonitorPlugin, Perlin, Plane, Plugin, PropertyManager, QInterpConstantTo, QInterpTo, Quat_AngularDistance, Quat_Equals, Quat_exponentialDamp, Quat_quarticDamp, Quat_smoothDamp, Reflector, ReflectorMaterial, Sphere, SystemInfo, Tween, TweenChain, TweenManager, VInterpConstantTo, VInterpTo, Vec3_smoothDamp, Vector3_NEG_ONE, Vector3_ONE, Vector3_RIGHT, Vector3_UNIT_X, Vector3_UNIT_Y, Vector3_UNIT_Z, Vector3_UP, Vector3_ZERO, Viewer, VirtualCamera, aEXRLoader, aFBXLoader, aGLTFLoader, aHDRLoader, aJSONLoader, aLoader, aTextureLoader, exponentialDamp, frag_BoxfilterBlur, frag_cubeMapToPanorama, frag_panoramaToCubeMap, getClassInstance, getShaderMaterial, mixin, property, quarticDamp, smoothDamp, vert_fullscreen };
5573
+ class DropFilePlugin extends Plugin {
5574
+ install() {
5575
+ document.addEventListener("dragover", this._onDrogOver);
5576
+ document.addEventListener("drop", this._onDrop);
5577
+ }
5578
+ uninstall() {
5579
+ document.removeEventListener("dragover", this._onDrogOver);
5580
+ document.removeEventListener("drop", this._onDrop);
5581
+ }
5582
+ _loadItemList(items) {
5583
+ getFilesFromItemList(items, (files, filesMap, dirs)=>{
5584
+ this._loadFiles(files, filesMap, dirs);
5585
+ });
5586
+ }
5587
+ _loadFiles(files, filesMap, dirs) {
5588
+ if (files.length > 0) {
5589
+ filesMap = filesMap || createFilesMap(files);
5590
+ dirs = dirs || [];
5591
+ this.viewer.loadingManager.setURLModifier((url)=>{
5592
+ url = url.replace(/^(\.?\/)/, ''); // remove './'
5593
+ const file = filesMap[url];
5594
+ if (file) {
5595
+ console.log('Loading', url);
5596
+ return URL.createObjectURL(file);
5597
+ }
5598
+ return url;
5599
+ });
5600
+ for(let i = 0; i < files.length; i++){
5601
+ this._loadFile(files[i], dirs[i]);
5602
+ }
5603
+ }
5604
+ }
5605
+ _loadFile(file, dir = "") {
5606
+ const filename = file.name;
5607
+ const ext = ResourceManager.extension(filename);
5608
+ if (this._extensions.some((v)=>v === ext)) {
5609
+ const reader = new FileReader();
5610
+ reader.addEventListener("progress", (event)=>{
5611
+ const size = '(' + Math.floor(event.total / 1000) + ' KB)';
5612
+ const progress = Math.floor(event.loaded / event.total * 100) + '%';
5613
+ console.log('Loading', filename, size, progress);
5614
+ });
5615
+ const loadCallback = (asset)=>{
5616
+ asset.userData.ext = ext;
5617
+ this._onLoad && this._onLoad(asset);
5618
+ };
5619
+ if ([
5620
+ "fbx",
5621
+ "gltf",
5622
+ "glb"
5623
+ ].some((v)=>v === ext)) {
5624
+ reader.addEventListener("load", (event)=>{
5625
+ this.viewer.loadAsset({
5626
+ ext,
5627
+ buffer: event.target.result,
5628
+ resourcePath: dir
5629
+ }).then(loadCallback);
5630
+ }, false);
5631
+ reader.readAsArrayBuffer(file);
5632
+ } else {
5633
+ reader.addEventListener("load", (event)=>{
5634
+ this.viewer.loadAsset({
5635
+ ext,
5636
+ url: event.target.result
5637
+ }).then(loadCallback);
5638
+ }, false);
5639
+ reader.readAsDataURL(file);
5640
+ }
5641
+ }
5642
+ }
5643
+ constructor({ onLoad, extension = [
5644
+ "glb",
5645
+ "gltf",
5646
+ "fbx",
5647
+ "hdr"
5648
+ ] } = {}){
5649
+ super();
5650
+ this._onDrogOver = (e)=>{
5651
+ e.preventDefault();
5652
+ e.dataTransfer.dropEffect = "copy";
5653
+ };
5654
+ this._onDrop = (e)=>{
5655
+ e.preventDefault();
5656
+ if (e.dataTransfer.types[0] === "text/plain") return; // Outliner drop
5657
+ if (e.dataTransfer.items) {
5658
+ this._loadItemList(e.dataTransfer.items);
5659
+ } else {
5660
+ this._loadFiles(e.dataTransfer.files);
5661
+ }
5662
+ };
5663
+ this._onLoad = onLoad;
5664
+ this._extensions = Array.isArray(extension) ? extension : [
5665
+ extension
5666
+ ];
5667
+ }
5668
+ }
5669
+ function createFilesMap(files) {
5670
+ const map = {};
5671
+ for(let i = 0; i < files.length; i++){
5672
+ const file = files[i];
5673
+ map[file.name] = file;
5674
+ }
5675
+ return map;
5676
+ }
5677
+ function getFilesFromItemList(items, onDone) {
5678
+ let itemsCount = 0;
5679
+ let itemsTotal = 0;
5680
+ const dirs = [];
5681
+ const files = [];
5682
+ const filesMap = {};
5683
+ function onEntryHandled() {
5684
+ itemsCount++;
5685
+ if (itemsCount === itemsTotal) {
5686
+ onDone(files, filesMap, dirs);
5687
+ }
5688
+ }
5689
+ function handleEntry(entry, dir = "") {
5690
+ if (entry.isDirectory) {
5691
+ const reader = entry.createReader();
5692
+ reader.readEntries((entries)=>{
5693
+ for(let i = 0; i < entries.length; i++){
5694
+ handleEntry(entries[i], dir + "/" + entry.name + "/");
5695
+ }
5696
+ onEntryHandled();
5697
+ });
5698
+ } else if (entry.isFile) {
5699
+ entry.file((file)=>{
5700
+ files.push(file);
5701
+ filesMap[entry.fullPath.slice(1)] = file;
5702
+ dirs.push(dir);
5703
+ onEntryHandled();
5704
+ });
5705
+ }
5706
+ itemsTotal++;
5707
+ }
5708
+ for(let i = 0; i < items.length; i++){
5709
+ const item = items[i];
5710
+ if (item.kind === 'file') {
5711
+ handleEntry(item.webkitGetAsEntry());
5712
+ }
5713
+ }
5714
+ }
5715
+
5716
+ export { AnimationCurve, Box, BoxProjectionPlugin, CinestationBlendDefinition, CinestationBrain, Component, DebugPlugin, DeviceInput, DropFilePlugin, Easing, EnvironmentPlugin, EventEmitter, FInterpConstantTo, FInterpTo, FreelookVirtualCamera, Logger, ObjectInstance, Orientation, PerformanceMonitorPlugin, Perlin, Plane, Plugin, PropertyManager, QInterpConstantTo, QInterpTo, Quat_AngularDistance, Quat_Equals, Quat_exponentialDamp, Quat_quarticDamp, Quat_smoothDamp, Reflector, ReflectorMaterial, ResourceManager, Sphere, SystemInfo, Tween, TweenChain, TweenManager, VInterpConstantTo, VInterpTo, Vec3_smoothDamp, Vector3_NEG_ONE, Vector3_ONE, Vector3_RIGHT, Vector3_UNIT_X, Vector3_UNIT_Y, Vector3_UNIT_Z, Vector3_UP, Vector3_ZERO, Viewer, VirtualCamera, aEXRLoader, aFBXLoader, aGLTFLoader, aHDRLoader, aJSONLoader, aLoader, aTextureLoader, exponentialDamp, frag_BoxfilterBlur, frag_cubeMapToPanorama, frag_panoramaToCubeMap, getClassInstance, getShaderMaterial, mixin, property, quarticDamp, smoothDamp, vert_fullscreen };
5542
5717
  //# sourceMappingURL=module.js.map