@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 +150 -119
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +150 -119
- package/dist/module.js +150 -119
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/ktx2/transcoder/BinomialLLCTranscoder.d.ts +1 -1
- package/types/ktx2/transcoder/BinomialLLCWorkerCode.d.ts +4 -0
package/dist/main.js
CHANGED
|
@@ -2429,20 +2429,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2429
2429
|
}();
|
|
2430
2430
|
|
|
2431
2431
|
/** @internal */ function TranscodeWorkerCode$1() {
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
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
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
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
|
|
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
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
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
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
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
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
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
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
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
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
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();
|