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