@galacean/engine-loader 1.1.0-beta.1 → 1.1.0-beta.3

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
@@ -2429,20 +2429,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
2429
2429
  }();
2430
2430
 
2431
2431
  /** @internal */ function TranscodeWorkerCode$1() {
2432
- var concat = function concat(arrays) {
2433
- if (arrays.length === 1) return arrays[0];
2434
- var totalByteLength = 0;
2435
- for(var i = 0; i < arrays.length; i++){
2436
- totalByteLength += arrays[i].byteLength;
2432
+ self.onmessage = function onmessage(event) {
2433
+ var message = event.data;
2434
+ switch(message.type){
2435
+ case "init":
2436
+ init(message.transcoderWasm).then(function() {
2437
+ self.postMessage("init-completed");
2438
+ }).catch(function(e) {
2439
+ return self.postMessage({
2440
+ error: e
2441
+ });
2442
+ });
2443
+ break;
2444
+ case "transcode":
2445
+ init().then(function(KTX2File) {
2446
+ var result = transcode(message.buffer, message.format, KTX2File);
2447
+ // @ts-ignore
2448
+ result.type = "transcoded";
2449
+ self.postMessage(result);
2450
+ }).catch(function(e) {
2451
+ return self.postMessage({
2452
+ error: e
2453
+ });
2454
+ });
2455
+ break;
2437
2456
  }
2438
- var result = new Uint8Array(totalByteLength);
2439
- var byteOffset = 0;
2440
- for(var i1 = 0; i1 < arrays.length; i1++){
2441
- result.set(arrays[i1], byteOffset);
2442
- byteOffset += arrays[i1].byteLength;
2457
+ };
2458
+ }
2459
+ var _init = function init() {
2460
+ var initPromise;
2461
+ return function init(wasmBinary) {
2462
+ if (!initPromise) {
2463
+ initPromise = new Promise(function(resolve, reject) {
2464
+ var BasisModule = {
2465
+ wasmBinary: wasmBinary,
2466
+ onRuntimeInitialized: function() {
2467
+ return resolve(BasisModule);
2468
+ },
2469
+ onAbort: reject
2470
+ };
2471
+ self["BASIS"](BasisModule);
2472
+ }).then(function(BasisModule) {
2473
+ BasisModule.initializeBasis();
2474
+ return BasisModule.KTX2File;
2475
+ });
2443
2476
  }
2444
- return result;
2477
+ return initPromise;
2445
2478
  };
2479
+ };
2480
+ var init = _init();
2481
+ function transcode(buffer, targetFormat, KTX2File) {
2446
2482
  var getTranscodeFormatFromTarget = function getTranscodeFormatFromTarget(target, hasAlpha) {
2447
2483
  switch(target){
2448
2484
  case 2:
@@ -2459,76 +2495,24 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
2459
2495
  return 7;
2460
2496
  }
2461
2497
  };
2462
- var init = function init(wasmBinary) {
2463
- transcodePromise = new Promise(function(resolve, reject) {
2464
- var BasisModule = {
2465
- wasmBinary: wasmBinary,
2466
- onRuntimeInitialized: function() {
2467
- return resolve(BasisModule);
2468
- },
2469
- onAbort: reject
2470
- };
2471
- self["BASIS"](BasisModule);
2472
- }).then(function(BasisModule) {
2473
- BasisModule.initializeBasis();
2474
- return BasisModule.KTX2File;
2475
- });
2476
- return transcodePromise;
2477
- };
2478
- var transcode = function transcode(buffer, targetFormat, KTX2File) {
2479
- var ktx2File = new KTX2File(new Uint8Array(buffer));
2480
- function cleanup() {
2481
- ktx2File.close();
2482
- ktx2File.delete();
2483
- }
2484
- if (!ktx2File.isValid()) {
2485
- cleanup();
2486
- throw new Error("Invalid or unsupported .ktx2 file");
2487
- }
2488
- var width = ktx2File.getWidth();
2489
- var height = ktx2File.getHeight();
2490
- var layerCount = ktx2File.getLayers() || 1;
2491
- var levelCount = ktx2File.getLevels();
2492
- var hasAlpha = ktx2File.getHasAlpha();
2493
- var faceCount = ktx2File.getFaces();
2494
- var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
2495
- var faces = new Array(faceCount);
2496
- for(var face = 0; face < faceCount; face++){
2497
- var mipmaps = new Array(levelCount);
2498
- for(var mip = 0; mip < levelCount; mip++){
2499
- var layerMips = new Array(layerCount);
2500
- var mipWidth = void 0, mipHeight = void 0;
2501
- for(var layer = 0; layer < layerCount; layer++){
2502
- var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
2503
- mipWidth = levelInfo.origWidth;
2504
- mipHeight = levelInfo.origHeight;
2505
- var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
2506
- var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
2507
- if (!status) {
2508
- cleanup();
2509
- throw new Error("transcodeImage failed.");
2510
- }
2511
- layerMips[layer] = dst;
2512
- }
2513
- mipmaps[mip] = {
2514
- data: concat(layerMips),
2515
- width: mipWidth,
2516
- height: mipHeight
2517
- };
2518
- }
2519
- faces[face] = mipmaps;
2498
+ var concat = function concat(arrays) {
2499
+ if (arrays.length === 1) return arrays[0];
2500
+ var totalByteLength = 0;
2501
+ for(var i = 0; i < arrays.length; i++){
2502
+ totalByteLength += arrays[i].byteLength;
2520
2503
  }
2521
- cleanup();
2522
- return {
2523
- faces: faces,
2524
- width: width,
2525
- height: height,
2526
- hasAlpha: hasAlpha,
2527
- faceCount: faceCount,
2528
- format: format
2529
- };
2504
+ var result = new Uint8Array(totalByteLength);
2505
+ var byteOffset = 0;
2506
+ for(var i1 = 0; i1 < arrays.length; i1++){
2507
+ result.set(arrays[i1], byteOffset);
2508
+ byteOffset += arrays[i1].byteLength;
2509
+ }
2510
+ return result;
2511
+ };
2512
+ var cleanup = function cleanup() {
2513
+ ktx2File.close();
2514
+ ktx2File.delete();
2530
2515
  };
2531
- var transcodePromise;
2532
2516
  var BasisFormat;
2533
2517
  (function(BasisFormat) {
2534
2518
  BasisFormat[BasisFormat["ETC1"] = 0] = "ETC1";
@@ -2554,31 +2538,52 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
2554
2538
  TargetFormat[TargetFormat["RG8"] = 6] = "RG8";
2555
2539
  TargetFormat[TargetFormat["RGBA8"] = 7] = "RGBA8";
2556
2540
  })(TargetFormat || (TargetFormat = {}));
2557
- self.onmessage = function onmessage(event) {
2558
- var message = event.data;
2559
- switch(message.type){
2560
- case "init":
2561
- init(message.transcoderWasm).then(function() {
2562
- return self.postMessage("init-completed");
2563
- }).catch(function(e) {
2564
- return self.postMessage({
2565
- error: e
2566
- });
2567
- });
2568
- break;
2569
- case "transcode":
2570
- transcodePromise.then(function(KTX2File) {
2571
- var result = transcode(message.buffer, message.format, KTX2File);
2572
- // @ts-ignore
2573
- result.type = "transcoded";
2574
- self.postMessage(result);
2575
- }).catch(function(e) {
2576
- return self.postMessage({
2577
- error: e
2578
- });
2579
- });
2580
- break;
2541
+ var ktx2File = new KTX2File(new Uint8Array(buffer));
2542
+ if (!ktx2File.isValid()) {
2543
+ cleanup();
2544
+ throw new Error("Invalid or unsupported .ktx2 file");
2545
+ }
2546
+ var width = ktx2File.getWidth();
2547
+ var height = ktx2File.getHeight();
2548
+ var layerCount = ktx2File.getLayers() || 1;
2549
+ var levelCount = ktx2File.getLevels();
2550
+ var hasAlpha = ktx2File.getHasAlpha();
2551
+ var faceCount = ktx2File.getFaces();
2552
+ var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
2553
+ var faces = new Array(faceCount);
2554
+ for(var face = 0; face < faceCount; face++){
2555
+ var mipmaps = new Array(levelCount);
2556
+ for(var mip = 0; mip < levelCount; mip++){
2557
+ var layerMips = new Array(layerCount);
2558
+ var mipWidth = void 0, mipHeight = void 0;
2559
+ for(var layer = 0; layer < layerCount; layer++){
2560
+ var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
2561
+ mipWidth = levelInfo.origWidth;
2562
+ mipHeight = levelInfo.origHeight;
2563
+ var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
2564
+ var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
2565
+ if (!status) {
2566
+ cleanup();
2567
+ throw new Error("transcodeImage failed.");
2568
+ }
2569
+ layerMips[layer] = dst;
2570
+ }
2571
+ mipmaps[mip] = {
2572
+ data: concat(layerMips),
2573
+ width: mipWidth,
2574
+ height: mipHeight
2575
+ };
2581
2576
  }
2577
+ faces[face] = mipmaps;
2578
+ }
2579
+ cleanup();
2580
+ return {
2581
+ faces: faces,
2582
+ width: width,
2583
+ height: height,
2584
+ hasAlpha: hasAlpha,
2585
+ faceCount: faceCount,
2586
+ format: format
2582
2587
  };
2583
2588
  }
2584
2589
 
@@ -2599,23 +2604,49 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
2599
2604
  })
2600
2605
  ]).then(function(param) {
2601
2606
  var jsCode = param[0], wasmBuffer = param[1];
2602
- var funcCode = TranscodeWorkerCode$1.toString();
2603
- var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
2604
- var workerCode = "\n " + jsCode + "\n " + transcodeString + "\n ";
2605
- var workerURL = URL.createObjectURL(new Blob([
2606
- workerCode
2607
- ], {
2608
- type: "application/javascript"
2609
- }));
2610
- return _this._createTranscodePool(workerURL, wasmBuffer);
2607
+ if (_this.workerLimitCount === 0) {
2608
+ return new Promise(function(resolve, reject) {
2609
+ var scriptDom = document.createElement("script");
2610
+ scriptDom.src = URL.createObjectURL(new Blob([
2611
+ jsCode
2612
+ ], {
2613
+ type: "application/javascript"
2614
+ }));
2615
+ document.body.appendChild(scriptDom);
2616
+ scriptDom.onload = function() {
2617
+ init(wasmBuffer).then(function() {
2618
+ resolve(null);
2619
+ });
2620
+ };
2621
+ scriptDom.onerror = function() {
2622
+ reject();
2623
+ };
2624
+ });
2625
+ } else {
2626
+ var funcCode = TranscodeWorkerCode$1.toString();
2627
+ var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
2628
+ var workerCode = "\n " + jsCode + "\n var init = (" + _init.toString() + ")();\n " + transcode.toString() + "\n " + transcodeString + "\n ";
2629
+ var workerURL = URL.createObjectURL(new Blob([
2630
+ workerCode
2631
+ ], {
2632
+ type: "application/javascript"
2633
+ }));
2634
+ return _this._createTranscodePool(workerURL, wasmBuffer);
2635
+ }
2611
2636
  });
2612
2637
  };
2613
- _proto.transcode = function transcode(buffer, format) {
2614
- return this._transcodeWorkerPool.postMessage({
2615
- buffer: buffer,
2616
- format: format,
2617
- type: "transcode"
2618
- });
2638
+ _proto.transcode = function transcode1(buffer, format) {
2639
+ if (this.workerLimitCount === 0) {
2640
+ return init().then(function(KTX2File) {
2641
+ return transcode(buffer, format, KTX2File);
2642
+ });
2643
+ } else {
2644
+ return this._transcodeWorkerPool.postMessage({
2645
+ buffer: buffer,
2646
+ format: format,
2647
+ type: "transcode"
2648
+ });
2649
+ }
2619
2650
  };
2620
2651
  return BinomialLLCTranscoder;
2621
2652
  }(AbstractTranscoder);
@@ -2843,7 +2874,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2843
2874
  _proto.initialize = function initialize(engine, configuration) {
2844
2875
  if (configuration.ktx2Loader) {
2845
2876
  var options = configuration.ktx2Loader;
2846
- if (this._isKhronosSupported(options.priorityFormats, engine)) {
2877
+ if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
2847
2878
  return exports.KTX2Loader._getKhronosTranscoder(options.workerCount).init();
2848
2879
  } else {
2849
2880
  return exports.KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();