@eva/plugin-renderer 1.2.0-alpha.5 → 1.2.0

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.
@@ -1,8 +1,8 @@
1
- import { OBSERVER_TYPE, decorators, LOAD_SCENE_MODE, System } from '@eva/eva.js';
1
+ import { OBSERVER_TYPE, decorators, resourceLoader, resource, RESOURCE_TYPE_STRATEGY, LOAD_SCENE_MODE, System } from '@eva/eva.js';
2
2
  import { Container, Application } from '@eva/renderer-adapter';
3
3
  import isEqual from 'lodash-es/isEqual';
4
4
  import EventEmitter from 'eventemitter3';
5
- import { ticker } from 'pixi.js';
5
+ import { glCore, Texture, BaseTexture, utils, ticker } from 'pixi.js';
6
6
 
7
7
  /*! *****************************************************************************
8
8
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -361,6 +361,407 @@ var Transform = (function (_super) {
361
361
  }(EventEmitter));
362
362
  var Transform$1 = Transform;
363
363
 
364
+ var result = undefined;
365
+ function getSuportCompressedTextureFormats(gl) {
366
+ if (result)
367
+ return result;
368
+ if (!gl) {
369
+ console.warn('WebGL not available for compressed textures. Silently failing.');
370
+ return {
371
+ s3tc: false,
372
+ etc: false,
373
+ etc1: false,
374
+ pvrtc: false,
375
+ atc: false,
376
+ astc: false,
377
+ };
378
+ }
379
+ result = {
380
+ s3tc: !!gl.getExtension('WEBGL_compressed_texture_s3tc'),
381
+ etc: !!gl.getExtension('WEBGL_compressed_texture_etc'),
382
+ etc1: !!gl.getExtension('WEBGL_compressed_texture_etc1'),
383
+ pvrtc: !!gl.getExtension('WEBGL_compressed_texture_pvrtc')
384
+ || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),
385
+ atc: !!gl.getExtension('WEBGL_compressed_texture_atc'),
386
+ astc: !!gl.getExtension('WEBGL_compressed_texture_astc')
387
+ };
388
+ try {
389
+ console.log('Eva.js Supported Compressed Texture Format List: ' + Object.keys(result).filter(function (type) { return result[type]; }).join(', '));
390
+ }
391
+ catch (e) { }
392
+ return result;
393
+ }
394
+
395
+ var XLS = resourceLoader.XhrLoadStrategy;
396
+ var XhrLoadStrategy = XLS;
397
+
398
+ var _a$2, _b;
399
+ var INTERNAL_FORMATS;
400
+ (function (INTERNAL_FORMATS) {
401
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB_S3TC_DXT1_EXT"] = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT";
402
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_S3TC_DXT1_EXT"] = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT";
403
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_S3TC_DXT3_EXT"] = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT";
404
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_S3TC_DXT5_EXT"] = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT";
405
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"] = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT";
406
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"] = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT";
407
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"] = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT";
408
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB_S3TC_DXT1_EXT"] = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT";
409
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_R11_EAC"] = 37488] = "COMPRESSED_R11_EAC";
410
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SIGNED_R11_EAC"] = 37489] = "COMPRESSED_SIGNED_R11_EAC";
411
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RG11_EAC"] = 37490] = "COMPRESSED_RG11_EAC";
412
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SIGNED_RG11_EAC"] = 37491] = "COMPRESSED_SIGNED_RG11_EAC";
413
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB8_ETC2"] = 37492] = "COMPRESSED_RGB8_ETC2";
414
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA8_ETC2_EAC"] = 37496] = "COMPRESSED_RGBA8_ETC2_EAC";
415
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ETC2"] = 37493] = "COMPRESSED_SRGB8_ETC2";
416
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"] = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
417
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
418
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"] = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
419
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB_PVRTC_4BPPV1_IMG"] = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
420
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"] = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
421
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB_PVRTC_2BPPV1_IMG"] = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
422
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"] = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
423
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB_ETC1_WEBGL"] = 36196] = "COMPRESSED_RGB_ETC1_WEBGL";
424
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGB_ATC_WEBGL"] = 35986] = "COMPRESSED_RGB_ATC_WEBGL";
425
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL"] = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL";
426
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL"] = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL";
427
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_10x10_KHR"] = 37819] = "COMPRESSED_RGBA_ASTC_10x10_KHR";
428
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_10x5_KHR"] = 37816] = "COMPRESSED_RGBA_ASTC_10x5_KHR";
429
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_10x6_KHR"] = 37817] = "COMPRESSED_RGBA_ASTC_10x6_KHR";
430
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_10x8_KHR"] = 37818] = "COMPRESSED_RGBA_ASTC_10x8_KHR";
431
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_12x10_KHR"] = 37820] = "COMPRESSED_RGBA_ASTC_12x10_KHR";
432
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_12x12_KHR"] = 37821] = "COMPRESSED_RGBA_ASTC_12x12_KHR";
433
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_4x4_KHR"] = 37808] = "COMPRESSED_RGBA_ASTC_4x4_KHR";
434
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_5x4_KHR"] = 37809] = "COMPRESSED_RGBA_ASTC_5x4_KHR";
435
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_5x5_KHR"] = 37810] = "COMPRESSED_RGBA_ASTC_5x5_KHR";
436
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_6x5_KHR"] = 37811] = "COMPRESSED_RGBA_ASTC_6x5_KHR";
437
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_6x6_KHR"] = 37812] = "COMPRESSED_RGBA_ASTC_6x6_KHR";
438
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_8x5_KHR"] = 37813] = "COMPRESSED_RGBA_ASTC_8x5_KHR";
439
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_8x6_KHR"] = 37814] = "COMPRESSED_RGBA_ASTC_8x6_KHR";
440
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_RGBA_ASTC_8x8_KHR"] = 37815] = "COMPRESSED_RGBA_ASTC_8x8_KHR";
441
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 3781] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
442
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
443
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"] = 37849] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
444
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"] = 37850] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
445
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
446
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
447
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"] = 37840] = "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
448
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"] = 37841] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
449
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"] = 37842] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
450
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"] = 37843] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
451
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"] = 37844] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
452
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"] = 37845] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
453
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"] = 37846] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
454
+ INTERNAL_FORMATS[INTERNAL_FORMATS["COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
455
+ })(INTERNAL_FORMATS || (INTERNAL_FORMATS = {}));
456
+ var INTERNAL_FORMAT_TO_BLOCK_SIZE = (_a$2 = {},
457
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB_S3TC_DXT1_EXT] = [4, 4],
458
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT] = [4, 4],
459
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT] = [4, 4],
460
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT] = [4, 4],
461
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB_S3TC_DXT1_EXT] = [4, 4],
462
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT] = [4, 4],
463
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT] = [4, 4],
464
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT] = [4, 4],
465
+ _a$2[INTERNAL_FORMATS.COMPRESSED_R11_EAC] = [4, 4],
466
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SIGNED_R11_EAC] = [4, 4],
467
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RG11_EAC] = [4, 4],
468
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SIGNED_RG11_EAC] = [4, 4],
469
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB8_ETC2] = [4, 4],
470
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA8_ETC2_EAC] = [4, 4],
471
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB8_ETC2] = [4, 4],
472
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC] = [4, 4],
473
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2] = [4, 4],
474
+ _a$2[INTERNAL_FORMATS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2] = [4, 4],
475
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = [4, 4],
476
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = [4, 4],
477
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = [8, 4],
478
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = [8, 4],
479
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB_ETC1_WEBGL] = [4, 4],
480
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGB_ATC_WEBGL] = [4, 4],
481
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = [4, 4],
482
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = [4, 4],
483
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_4x4_KHR] = [4, 4],
484
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_5x5_KHR] = [5, 5],
485
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_6x6_KHR] = [6, 6],
486
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_8x8_KHR] = [8, 8],
487
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_10x10_KHR] = [10, 10],
488
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_12x12_KHR] = [12, 12],
489
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_10x5_KHR] = [10, 5],
490
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_10x6_KHR] = [10, 6],
491
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_10x8_KHR] = [10, 8],
492
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_12x10_KHR] = [12, 10],
493
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_5x4_KHR] = [5, 4],
494
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_6x5_KHR] = [6, 5],
495
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_8x5_KHR] = [8, 5],
496
+ _a$2[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_8x6_KHR] = [8, 6],
497
+ _a$2);
498
+ var INTERNAL_FORMATS_TO_EXTENSION_NAME = (_b = {},
499
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB_S3TC_DXT1_EXT] = 'WEBGL_compressed_texture_s3tc',
500
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT] = 'WEBGL_compressed_texture_s3tc',
501
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT] = 'WEBGL_compressed_texture_s3tc',
502
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT] = 'WEBGL_compressed_texture_s3tc',
503
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB_S3TC_DXT1_EXT] = 'WEBGL_compressed_texture_s3tc_srgb',
504
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT] = 'WEBGL_compressed_texture_s3tc_srgb',
505
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT] = 'WEBGL_compressed_texture_s3tc_srgb',
506
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT] = 'WEBGL_compressed_texture_s3tc_srgb',
507
+ _b[INTERNAL_FORMATS.COMPRESSED_R11_EAC] = 'WEBGL_compressed_texture_etc',
508
+ _b[INTERNAL_FORMATS.COMPRESSED_SIGNED_R11_EAC] = 'WEBGL_compressed_texture_etc',
509
+ _b[INTERNAL_FORMATS.COMPRESSED_RG11_EAC] = 'WEBGL_compressed_texture_etc',
510
+ _b[INTERNAL_FORMATS.COMPRESSED_SIGNED_RG11_EAC] = 'WEBGL_compressed_texture_etc',
511
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB8_ETC2] = 'WEBGL_compressed_texture_etc',
512
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA8_ETC2_EAC] = 'WEBGL_compressed_texture_etc',
513
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB8_ETC2] = 'WEBGL_compressed_texture_etc',
514
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC] = 'WEBGL_compressed_texture_etc',
515
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 'WEBGL_compressed_texture_etc',
516
+ _b[INTERNAL_FORMATS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 'WEBGL_compressed_texture_etc',
517
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 'WEBGL_compressed_texture_pvrtc',
518
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 'WEBGL_compressed_texture_pvrtc',
519
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 'WEBGL_compressed_texture_pvrtc',
520
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 'WEBGL_compressed_texture_pvrtc',
521
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB_ETC1_WEBGL] = 'WEBGL_compressed_texture_etc1',
522
+ _b[INTERNAL_FORMATS.COMPRESSED_RGB_ATC_WEBGL] = 'WEBGL_compressed_texture_atc',
523
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 'WEBGL_compressed_texture_atc',
524
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 'WEBGL_compressed_texture_atc',
525
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_4x4_KHR] = 'WEBGL_compressed_texture_astc',
526
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_5x5_KHR] = 'WEBGL_compressed_texture_astc',
527
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_6x6_KHR] = 'WEBGL_compressed_texture_astc',
528
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_8x8_KHR] = 'WEBGL_compressed_texture_astc',
529
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_10x10_KHR] = 'WEBGL_compressed_texture_astc',
530
+ _b[INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_12x12_KHR] = 'WEBGL_compressed_texture_astc',
531
+ _b);
532
+
533
+ var CompressedTextureResource = (function () {
534
+ function CompressedTextureResource() {
535
+ this.levelBuffers = [];
536
+ }
537
+ CompressedTextureResource.prototype.upload = function (gl) {
538
+ var levels = this.levels;
539
+ var name = INTERNAL_FORMATS_TO_EXTENSION_NAME[this.internalFormat];
540
+ if (!gl[name]) {
541
+ gl[name] = true;
542
+ if (name === 'WEBGL_compressed_texture_pvrtc') {
543
+ gl.getExtension(name) || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');
544
+ }
545
+ else {
546
+ gl.getExtension(name);
547
+ }
548
+ }
549
+ for (var i = 0; i < this.levels; ++i) {
550
+ var _a = this.levelBuffers[i], levelWidth = _a.levelWidth, levelHeight = _a.levelHeight, levelBuffer = _a.levelBuffer;
551
+ gl.compressedTexImage2D(gl.TEXTURE_2D, i, this.internalFormat, levelWidth, levelHeight, 0, levelBuffer);
552
+ }
553
+ if (levels > 1) {
554
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
555
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);
556
+ }
557
+ else {
558
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
559
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
560
+ }
561
+ };
562
+ return CompressedTextureResource;
563
+ }());
564
+
565
+ var FILE_HEADER_SIZE = 64;
566
+ var KTX_FIELDS = {
567
+ FILE_IDENTIFIER: 0,
568
+ ENDIANNESS: 12,
569
+ GL_TYPE: 16,
570
+ GL_TYPE_SIZE: 20,
571
+ GL_FORMAT: 24,
572
+ GL_INTERNAL_FORMAT: 28,
573
+ GL_BASE_INTERNAL_FORMAT: 32,
574
+ PIXEL_WIDTH: 36,
575
+ PIXEL_HEIGHT: 40,
576
+ PIXEL_DEPTH: 44,
577
+ NUMBER_OF_ARRAY_ELEMENTS: 48,
578
+ NUMBER_OF_FACES: 52,
579
+ NUMBER_OF_MIPMAP_LEVELS: 56,
580
+ BYTES_OF_KEY_VALUE_DATA: 60
581
+ };
582
+ var FILE_IDENTIFIER = [0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A];
583
+ var ENDIANNESS = 0x04030201;
584
+ var KTXTextureResource = (function (_super) {
585
+ __extends(KTXTextureResource, _super);
586
+ function KTXTextureResource(source, config) {
587
+ var _a;
588
+ var _this = _super.call(this) || this;
589
+ _this.complete = true;
590
+ _this.src = config.url;
591
+ var dataView = new DataView(source);
592
+ if (!validateKTX(dataView)) {
593
+ throw new Error('Not a valid KTX Texture');
594
+ }
595
+ var littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, true) === ENDIANNESS;
596
+ _this.internalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian);
597
+ var pixelWidth = _this.formerWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian);
598
+ var pixelHeight = _this.formerHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1;
599
+ var size = INTERNAL_FORMAT_TO_BLOCK_SIZE[_this.internalFormat];
600
+ _this.width = pixelWidth % size[0] === 0 ? pixelWidth : (pixelWidth + size[0] - (pixelWidth % size[0]));
601
+ _this.height = pixelHeight % size[1] === 0 ? pixelHeight : (pixelHeight + size[1] - (pixelHeight % size[1]));
602
+ var src = resource.resourcesMap[config.metadata.name].src[config.metadata.key];
603
+ var _b = (_a = src === null || src === void 0 ? void 0 : src.size) !== null && _a !== void 0 ? _a : {}, width = _b.width, height = _b.height;
604
+ if (width && height) {
605
+ _this.naturalWidth = width;
606
+ _this.naturalHeight = height;
607
+ }
608
+ var pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1;
609
+ var numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;
610
+ var numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian);
611
+ var numberOfMipmapLevels = _this.levels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);
612
+ var bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);
613
+ if (pixelHeight === 0 || pixelDepth !== 1) {
614
+ throw new Error('Only 2D textures are supported!');
615
+ }
616
+ if (numberOfFaces !== 1) {
617
+ throw new Error('CubeTextures are not supported!');
618
+ }
619
+ if (numberOfArrayElements !== 1) {
620
+ throw new Error('It does not support array textures!');
621
+ }
622
+ var mipWidth = pixelWidth;
623
+ var mipHeight = pixelHeight;
624
+ var imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;
625
+ for (var mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {
626
+ var imageSize = dataView.getUint32(imageOffset, littleEndian);
627
+ imageOffset += 4;
628
+ var size_1 = INTERNAL_FORMAT_TO_BLOCK_SIZE[_this.internalFormat];
629
+ var levelWidth = mipWidth % size_1[0] === 0 ? mipWidth : mipWidth + size_1[0] - (mipWidth % size_1[0]);
630
+ var levelHeight = mipHeight % size_1[1] === 0 ? mipHeight : mipHeight + size_1[1] - (mipHeight % size_1[1]);
631
+ var mip = {
632
+ levelID: mipmapLevel,
633
+ levelWidth: levelWidth,
634
+ levelHeight: levelHeight,
635
+ levelBuffer: new Uint8Array(source, imageOffset, imageSize)
636
+ };
637
+ _this.levelBuffers.push(mip);
638
+ imageOffset += imageSize;
639
+ imageOffset += 3 - ((imageOffset + 3) % 4);
640
+ mipWidth = (mipWidth >> 1) || 1;
641
+ mipHeight = (mipHeight >> 1) || 1;
642
+ }
643
+ return _this;
644
+ }
645
+ return KTXTextureResource;
646
+ }(CompressedTextureResource));
647
+ function validateKTX(dataView) {
648
+ for (var i = 0; i < FILE_IDENTIFIER.length; i++) {
649
+ if (dataView.getUint8(i) !== FILE_IDENTIFIER[i]) {
650
+ return false;
651
+ }
652
+ }
653
+ return true;
654
+ }
655
+
656
+ var KTXLoadStrategy = (function (_super) {
657
+ __extends(KTXLoadStrategy, _super);
658
+ function KTXLoadStrategy() {
659
+ return _super !== null && _super.apply(this, arguments) || this;
660
+ }
661
+ KTXLoadStrategy.prototype._complete = function (type, data) {
662
+ _super.prototype._complete.call(this, type, new KTXTextureResource(data, this.config));
663
+ };
664
+ return KTXLoadStrategy;
665
+ }(XhrLoadStrategy));
666
+ var KTXLoadStrategy$1 = KTXLoadStrategy;
667
+
668
+ var XhrResponseType = resourceLoader.XhrResponseType;
669
+ function addPreProcessResourceHandler(resource, gl) {
670
+ resource.addPreProcessResourceHandler(function normalizeResource(resource) {
671
+ var _a, _b, _c;
672
+ var textures = (_b = (_a = resource.src) === null || _a === void 0 ? void 0 : _a.image) === null || _b === void 0 ? void 0 : _b.texture;
673
+ if (!textures)
674
+ return;
675
+ if (!Array.isArray(textures)) {
676
+ textures = [textures];
677
+ }
678
+ var formats = (_c = getSuportCompressedTextureFormats(gl)) !== null && _c !== void 0 ? _c : {};
679
+ var target = textures.find(function (texture) { return formats[texture.type]; });
680
+ if (target) {
681
+ Object.assign(resource.src.image, target);
682
+ }
683
+ });
684
+ }
685
+ function addKTXStragetyAndRegister() {
686
+ Object.assign(RESOURCE_TYPE_STRATEGY, {
687
+ astc: KTXLoadStrategy$1,
688
+ etc: KTXLoadStrategy$1,
689
+ pvrtc: KTXLoadStrategy$1,
690
+ s3tc: KTXLoadStrategy$1,
691
+ atc: KTXLoadStrategy$1,
692
+ });
693
+ KTXLoadStrategy$1.setExtensionXhrType('ktx', XhrResponseType.Buffer);
694
+ }
695
+
696
+ var GLTexture = glCore.GLTexture;
697
+ var GLTextureMixin = {
698
+ isCompressed: false,
699
+ uploadNotCompressed: GLTexture.prototype.upload,
700
+ upload: function (source) {
701
+ if (!(source instanceof CompressedTextureResource)) {
702
+ return this.uploadNotCompressed(source);
703
+ }
704
+ this.bind();
705
+ var gl = this.gl;
706
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
707
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_NEAREST);
708
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
709
+ this.isCompressed = true;
710
+ source.upload(gl);
711
+ },
712
+ enableMipmap: function () {
713
+ if (this.isCompressed) {
714
+ return;
715
+ }
716
+ var gl = this.gl;
717
+ this.bind();
718
+ this.mipmap = true;
719
+ gl.generateMipmap(gl.TEXTURE_2D);
720
+ }
721
+ };
722
+
723
+ var _a$1;
724
+ var oldFrom$1 = Symbol();
725
+ var TextureMixin = (_a$1 = {},
726
+ _a$1[oldFrom$1] = Texture.from,
727
+ _a$1.from = function (source) {
728
+ if (!(source instanceof CompressedTextureResource)) {
729
+ return this[oldFrom$1](source);
730
+ }
731
+ return new Texture(BaseTexture.from(source));
732
+ },
733
+ _a$1);
734
+
735
+ var _a;
736
+ var oldFrom = Symbol();
737
+ var BaseTextureMixin = (_a = {},
738
+ _a[oldFrom] = BaseTexture.from,
739
+ _a.from = function (source, scaleMode, sourceScale) {
740
+ if (!(source instanceof CompressedTextureResource)) {
741
+ return this[oldFrom](source, scaleMode, sourceScale);
742
+ }
743
+ var imageUrl = source.src;
744
+ var baseTexture = utils.BaseTextureCache[imageUrl];
745
+ if (!baseTexture) {
746
+ baseTexture = new BaseTexture(source, scaleMode);
747
+ baseTexture.imageUrl = imageUrl;
748
+ if (sourceScale) {
749
+ baseTexture.sourceScale = sourceScale;
750
+ }
751
+ BaseTexture.addToCache(baseTexture, imageUrl);
752
+ }
753
+ return baseTexture;
754
+ },
755
+ _a);
756
+
757
+ function registerCompressedTexture(gl) {
758
+ addPreProcessResourceHandler(resource, gl);
759
+ addKTXStragetyAndRegister();
760
+ Object.assign(glCore.GLTexture.prototype, GLTextureMixin);
761
+ Object.assign(Texture, TextureMixin);
762
+ Object.assign(BaseTexture, BaseTextureMixin);
763
+ }
764
+
364
765
  var RENDERER_TYPE;
365
766
  (function (RENDERER_TYPE) {
366
767
  RENDERER_TYPE[RENDERER_TYPE["UNKNOWN"] = 0] = "UNKNOWN";
@@ -414,6 +815,11 @@ var Renderer$2 = (function (_super) {
414
815
  application: application,
415
816
  });
416
817
  });
818
+ var gl = this.application.renderer.gl;
819
+ if (gl) {
820
+ this.suportedCompressedTextureFormats = getSuportCompressedTextureFormats(gl);
821
+ registerCompressedTexture(gl);
822
+ }
417
823
  };
418
824
  Renderer.prototype.registerObserver = function (observerInfo) {
419
825
  var _a;
@@ -559,4 +965,20 @@ var Renderer = (function (_super) {
559
965
  }(System));
560
966
  var Renderer$1 = Renderer;
561
967
 
968
+ var mixinPIXI = function () {
969
+ BaseTexture.prototype.destroy = function () {
970
+ if (this.imageUrl) {
971
+ delete utils.TextureCache[this.imageUrl];
972
+ this.imageUrl = null;
973
+ }
974
+ this.source = null;
975
+ this.dispose();
976
+ BaseTexture.removeFromCache(this);
977
+ this.textureCacheIds = null;
978
+ this._destroyed = true;
979
+ };
980
+ };
981
+
982
+ mixinPIXI();
983
+
562
984
  export { ContainerManager$1 as ContainerManager, RENDERER_TYPE, Renderer$1 as Renderer, RendererManager$1 as RendererManager, Renderer$3 as RendererSystem };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-renderer",
3
- "version": "1.2.0-alpha.5",
3
+ "version": "1.2.0",
4
4
  "description": "@eva/plugin-renderer",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer.esm.js",
@@ -18,8 +18,8 @@
18
18
  "license": "MIT",
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
- "@eva/eva.js": "1.2.0-alpha.5",
22
- "@eva/renderer-adapter": "1.2.0-alpha.5",
21
+ "@eva/eva.js": "1.2.0",
22
+ "@eva/renderer-adapter": "1.2.0",
23
23
  "@types/pixi.js": "^4.8.9",
24
24
  "eventemitter3": "^3.1.2",
25
25
  "lodash-es": "^4.17.21",