@rings-webgpu/core 1.0.7 → 1.0.9

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.
@@ -7174,10 +7174,19 @@ var<uniform> materialUniform: MaterialUniform;
7174
7174
  @group(1) @binding(auto)
7175
7175
  var normalMap: texture_2d<f32>;
7176
7176
 
7177
+ // #if USE_ARMC
7178
+ // @group(1) @binding(auto)
7179
+ // var maskMapSampler: sampler;
7180
+ // @group(1) @binding(auto)
7181
+ // var maskMap: texture_2d<f32>;
7182
+ // #endif
7183
+
7184
+ // #if USE_MR
7177
7185
  @group(1) @binding(auto)
7178
7186
  var maskMapSampler: sampler;
7179
7187
  @group(1) @binding(auto)
7180
7188
  var maskMap: texture_2d<f32>;
7189
+ // #endif
7181
7190
 
7182
7191
  #if USE_AOTEX
7183
7192
  @group(1) @binding(auto)
@@ -7205,6 +7214,7 @@ var<uniform> materialUniform: MaterialUniform;
7205
7214
 
7206
7215
  #if USE_SRGB_ALBEDO
7207
7216
  ORI_ShadingInput.BaseColor = textureSample(baseMap, baseMapSampler, uv ) ;
7217
+ // ORI_ShadingInput.BaseColor = sRGBToLinear(ORI_ShadingInput.BaseColor.rgb) ;
7208
7218
  ORI_ShadingInput.BaseColor = vec4<f32>( ORI_ShadingInput.BaseColor * materialUniform.baseColor.rgb, ORI_ShadingInput.BaseColor.w * materialUniform.baseColor.a) ;
7209
7219
  #else
7210
7220
  ORI_ShadingInput.BaseColor = textureSample(baseMap, baseMapSampler, uv ) ;
@@ -7309,6 +7319,7 @@ var<uniform> materialUniform: MaterialUniform;
7309
7319
 
7310
7320
  BxDFShading();
7311
7321
 
7322
+ // ORI_FragmentOutput.color = vec4<f32>(vec3<f32>(normal.rgb),1.0) ;
7312
7323
  }
7313
7324
  `
7314
7325
  );
@@ -39287,483 +39298,483 @@ fn CsMain( @builtin(workgroup_id) workgroup_id : vec3<u32> , @builtin(global_inv
39287
39298
  }
39288
39299
  }
39289
39300
 
39290
- // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
39291
- // https://tools.ietf.org/html/rfc1951
39292
- // You may also wish to take a look at the guide I made about this program:
39293
- // https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
39294
- // Some of the following code is similar to that of UZIP.js:
39295
- // https://github.com/photopea/UZIP.js
39296
- // However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
39297
- // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
39298
- // is better for memory in most engines (I *think*).
39299
-
39300
- // aliases for shorter compressed code (most minifers don't do this)
39301
- var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
39302
- // fixed length extra bits
39303
- var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
39304
- // fixed distance extra bits
39305
- var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
39306
- // code length index map
39307
- var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
39308
- // get base, reverse index map from extra bits
39309
- var freb = function (eb, start) {
39310
- var b = new u16(31);
39311
- for (var i = 0; i < 31; ++i) {
39312
- b[i] = start += 1 << eb[i - 1];
39313
- }
39314
- // numbers here are at max 18 bits
39315
- var r = new i32(b[30]);
39316
- for (var i = 1; i < 30; ++i) {
39317
- for (var j = b[i]; j < b[i + 1]; ++j) {
39318
- r[j] = ((j - b[i]) << 5) | i;
39319
- }
39320
- }
39321
- return { b: b, r: r };
39322
- };
39323
- var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
39324
- // we can ignore the fact that the other numbers are wrong; they never happen anyway
39325
- fl[28] = 258, revfl[258] = 28;
39326
- var _b = freb(fdeb, 0), fd = _b.b;
39327
- // map of value to reverse (assuming 16 bits)
39328
- var rev = new u16(32768);
39329
- for (var i = 0; i < 32768; ++i) {
39330
- // reverse table algorithm from SO
39331
- var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
39332
- x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
39333
- x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
39334
- rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
39335
- }
39336
- // create huffman tree from u8 "map": index -> code length for code index
39337
- // mb (max bits) must be at most 15
39338
- // TODO: optimize/split up?
39339
- var hMap = (function (cd, mb, r) {
39340
- var s = cd.length;
39341
- // index
39342
- var i = 0;
39343
- // u16 "map": index -> # of codes with bit length = index
39344
- var l = new u16(mb);
39345
- // length of cd must be 288 (total # of codes)
39346
- for (; i < s; ++i) {
39347
- if (cd[i])
39348
- ++l[cd[i] - 1];
39349
- }
39350
- // u16 "map": index -> minimum code for bit length = index
39351
- var le = new u16(mb);
39352
- for (i = 1; i < mb; ++i) {
39353
- le[i] = (le[i - 1] + l[i - 1]) << 1;
39354
- }
39355
- var co;
39356
- if (r) {
39357
- // u16 "map": index -> number of actual bits, symbol for code
39358
- co = new u16(1 << mb);
39359
- // bits to remove for reverser
39360
- var rvb = 15 - mb;
39361
- for (i = 0; i < s; ++i) {
39362
- // ignore 0 lengths
39363
- if (cd[i]) {
39364
- // num encoding both symbol and bits read
39365
- var sv = (i << 4) | cd[i];
39366
- // free bits
39367
- var r_1 = mb - cd[i];
39368
- // start value
39369
- var v = le[cd[i] - 1]++ << r_1;
39370
- // m is end value
39371
- for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
39372
- // every 16 bit value starting with the code yields the same result
39373
- co[rev[v] >> rvb] = sv;
39374
- }
39375
- }
39376
- }
39377
- }
39378
- else {
39379
- co = new u16(s);
39380
- for (i = 0; i < s; ++i) {
39381
- if (cd[i]) {
39382
- co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
39383
- }
39384
- }
39385
- }
39386
- return co;
39387
- });
39388
- // fixed length tree
39389
- var flt = new u8(288);
39390
- for (var i = 0; i < 144; ++i)
39391
- flt[i] = 8;
39392
- for (var i = 144; i < 256; ++i)
39393
- flt[i] = 9;
39394
- for (var i = 256; i < 280; ++i)
39395
- flt[i] = 7;
39396
- for (var i = 280; i < 288; ++i)
39397
- flt[i] = 8;
39398
- // fixed distance tree
39399
- var fdt = new u8(32);
39400
- for (var i = 0; i < 32; ++i)
39401
- fdt[i] = 5;
39402
- // fixed length map
39403
- var flrm = /*#__PURE__*/ hMap(flt, 9, 1);
39404
- // fixed distance map
39405
- var fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
39406
- // find max of array
39407
- var max = function (a) {
39408
- var m = a[0];
39409
- for (var i = 1; i < a.length; ++i) {
39410
- if (a[i] > m)
39411
- m = a[i];
39412
- }
39413
- return m;
39414
- };
39415
- // read d, starting at bit p and mask with m
39416
- var bits = function (d, p, m) {
39417
- var o = (p / 8) | 0;
39418
- return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
39419
- };
39420
- // read d, starting at bit p continuing for at least 16 bits
39421
- var bits16 = function (d, p) {
39422
- var o = (p / 8) | 0;
39423
- return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
39424
- };
39425
- // get end of byte
39426
- var shft = function (p) { return ((p + 7) / 8) | 0; };
39427
- // typed array slice - allows garbage collector to free original reference,
39428
- // while being more compatible than .slice
39429
- var slc = function (v, s, e) {
39430
- if (s == null || s < 0)
39431
- s = 0;
39432
- if (e == null || e > v.length)
39433
- e = v.length;
39434
- // can't use .constructor in case user-supplied
39435
- return new u8(v.subarray(s, e));
39436
- };
39437
- // error codes
39438
- var ec = [
39439
- 'unexpected EOF',
39440
- 'invalid block type',
39441
- 'invalid length/literal',
39442
- 'invalid distance',
39443
- 'stream finished',
39444
- 'no stream handler',
39445
- ,
39446
- 'no callback',
39447
- 'invalid UTF-8 data',
39448
- 'extra field too long',
39449
- 'date not in range 1980-2099',
39450
- 'filename too long',
39451
- 'stream finishing',
39452
- 'invalid zip data'
39453
- // determined by unknown compression method
39454
- ];
39455
- var err = function (ind, msg, nt) {
39456
- var e = new Error(msg || ec[ind]);
39457
- e.code = ind;
39458
- if (Error.captureStackTrace)
39459
- Error.captureStackTrace(e, err);
39460
- if (!nt)
39461
- throw e;
39462
- return e;
39463
- };
39464
- // expands raw DEFLATE data
39465
- var inflt = function (dat, st, buf, dict) {
39466
- // source length dict length
39467
- var sl = dat.length, dl = dict ? dict.length : 0;
39468
- if (!sl || st.f && !st.l)
39469
- return buf || new u8(0);
39470
- var noBuf = !buf;
39471
- // have to estimate size
39472
- var resize = noBuf || st.i != 2;
39473
- // no state
39474
- var noSt = st.i;
39475
- // Assumes roughly 33% compression ratio average
39476
- if (noBuf)
39477
- buf = new u8(sl * 3);
39478
- // ensure buffer can fit at least l elements
39479
- var cbuf = function (l) {
39480
- var bl = buf.length;
39481
- // need to increase size to fit
39482
- if (l > bl) {
39483
- // Double or set to necessary, whichever is greater
39484
- var nbuf = new u8(Math.max(bl * 2, l));
39485
- nbuf.set(buf);
39486
- buf = nbuf;
39487
- }
39488
- };
39489
- // last chunk bitpos bytes
39490
- var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
39491
- // total bits
39492
- var tbts = sl * 8;
39493
- do {
39494
- if (!lm) {
39495
- // BFINAL - this is only 1 when last chunk is next
39496
- final = bits(dat, pos, 1);
39497
- // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
39498
- var type = bits(dat, pos + 1, 3);
39499
- pos += 3;
39500
- if (!type) {
39501
- // go to end of byte boundary
39502
- var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
39503
- if (t > sl) {
39504
- if (noSt)
39505
- err(0);
39506
- break;
39507
- }
39508
- // ensure size
39509
- if (resize)
39510
- cbuf(bt + l);
39511
- // Copy over uncompressed data
39512
- buf.set(dat.subarray(s, t), bt);
39513
- // Get new bitpos, update byte count
39514
- st.b = bt += l, st.p = pos = t * 8, st.f = final;
39515
- continue;
39516
- }
39517
- else if (type == 1)
39518
- lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
39519
- else if (type == 2) {
39520
- // literal lengths
39521
- var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
39522
- var tl = hLit + bits(dat, pos + 5, 31) + 1;
39523
- pos += 14;
39524
- // length+distance tree
39525
- var ldt = new u8(tl);
39526
- // code length tree
39527
- var clt = new u8(19);
39528
- for (var i = 0; i < hcLen; ++i) {
39529
- // use index map to get real code
39530
- clt[clim[i]] = bits(dat, pos + i * 3, 7);
39531
- }
39532
- pos += hcLen * 3;
39533
- // code lengths bits
39534
- var clb = max(clt), clbmsk = (1 << clb) - 1;
39535
- // code lengths map
39536
- var clm = hMap(clt, clb, 1);
39537
- for (var i = 0; i < tl;) {
39538
- var r = clm[bits(dat, pos, clbmsk)];
39539
- // bits read
39540
- pos += r & 15;
39541
- // symbol
39542
- var s = r >> 4;
39543
- // code length to copy
39544
- if (s < 16) {
39545
- ldt[i++] = s;
39546
- }
39547
- else {
39548
- // copy count
39549
- var c = 0, n = 0;
39550
- if (s == 16)
39551
- n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
39552
- else if (s == 17)
39553
- n = 3 + bits(dat, pos, 7), pos += 3;
39554
- else if (s == 18)
39555
- n = 11 + bits(dat, pos, 127), pos += 7;
39556
- while (n--)
39557
- ldt[i++] = c;
39558
- }
39559
- }
39560
- // length tree distance tree
39561
- var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
39562
- // max length bits
39563
- lbt = max(lt);
39564
- // max dist bits
39565
- dbt = max(dt);
39566
- lm = hMap(lt, lbt, 1);
39567
- dm = hMap(dt, dbt, 1);
39568
- }
39569
- else
39570
- err(1);
39571
- if (pos > tbts) {
39572
- if (noSt)
39573
- err(0);
39574
- break;
39575
- }
39576
- }
39577
- // Make sure the buffer can hold this + the largest possible addition
39578
- // Maximum chunk size (practically, theoretically infinite) is 2^17
39579
- if (resize)
39580
- cbuf(bt + 131072);
39581
- var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
39582
- var lpos = pos;
39583
- for (;; lpos = pos) {
39584
- // bits read, code
39585
- var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
39586
- pos += c & 15;
39587
- if (pos > tbts) {
39588
- if (noSt)
39589
- err(0);
39590
- break;
39591
- }
39592
- if (!c)
39593
- err(2);
39594
- if (sym < 256)
39595
- buf[bt++] = sym;
39596
- else if (sym == 256) {
39597
- lpos = pos, lm = null;
39598
- break;
39599
- }
39600
- else {
39601
- var add = sym - 254;
39602
- // no extra bits needed if less
39603
- if (sym > 264) {
39604
- // index
39605
- var i = sym - 257, b = fleb[i];
39606
- add = bits(dat, pos, (1 << b) - 1) + fl[i];
39607
- pos += b;
39608
- }
39609
- // dist
39610
- var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
39611
- if (!d)
39612
- err(3);
39613
- pos += d & 15;
39614
- var dt = fd[dsym];
39615
- if (dsym > 3) {
39616
- var b = fdeb[dsym];
39617
- dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
39618
- }
39619
- if (pos > tbts) {
39620
- if (noSt)
39621
- err(0);
39622
- break;
39623
- }
39624
- if (resize)
39625
- cbuf(bt + 131072);
39626
- var end = bt + add;
39627
- if (bt < dt) {
39628
- var shift = dl - dt, dend = Math.min(dt, end);
39629
- if (shift + bt < 0)
39630
- err(3);
39631
- for (; bt < dend; ++bt)
39632
- buf[bt] = dict[shift + bt];
39633
- }
39634
- for (; bt < end; ++bt)
39635
- buf[bt] = buf[bt - dt];
39636
- }
39637
- }
39638
- st.l = lm, st.p = lpos, st.b = bt, st.f = final;
39639
- if (lm)
39640
- final = 1, st.m = lbt, st.d = dm, st.n = dbt;
39641
- } while (!final);
39642
- // don't reallocate for streams or user buffers
39643
- return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
39644
- };
39645
- // empty
39646
- var et = /*#__PURE__*/ new u8(0);
39647
- // read 2 bytes
39648
- var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
39649
- // read 4 bytes
39650
- var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
39651
- var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
39652
- /**
39653
- * Expands DEFLATE data with no wrapper
39654
- * @param data The data to decompress
39655
- * @param opts The decompression options
39656
- * @returns The decompressed version of the data
39657
- */
39658
- function inflateSync(data, opts) {
39659
- return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
39660
- }
39661
- // text decoder
39662
- var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
39663
- // text decoder stream
39664
- var tds = 0;
39665
- try {
39666
- td.decode(et, { stream: true });
39667
- tds = 1;
39668
- }
39669
- catch (e) { }
39670
- // decode UTF8
39671
- var dutf8 = function (d) {
39672
- for (var r = '', i = 0;;) {
39673
- var c = d[i++];
39674
- var eb = (c > 127) + (c > 223) + (c > 239);
39675
- if (i + eb > d.length)
39676
- return { s: r, r: slc(d, i - 1) };
39677
- if (!eb)
39678
- r += String.fromCharCode(c);
39679
- else if (eb == 3) {
39680
- c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
39681
- r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
39682
- }
39683
- else if (eb & 1)
39684
- r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
39685
- else
39686
- r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
39687
- }
39688
- };
39689
- /**
39690
- * Converts a Uint8Array to a string
39691
- * @param dat The data to decode to string
39692
- * @param latin1 Whether or not to interpret the data as Latin-1. This should
39693
- * not need to be true unless encoding to binary string.
39694
- * @returns The original UTF-8/Latin-1 string
39695
- */
39696
- function strFromU8(dat, latin1) {
39697
- if (latin1) {
39698
- var r = '';
39699
- for (var i = 0; i < dat.length; i += 16384)
39700
- r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
39701
- return r;
39702
- }
39703
- else if (td) {
39704
- return td.decode(dat);
39705
- }
39706
- else {
39707
- var _a = dutf8(dat), s = _a.s, r = _a.r;
39708
- if (r.length)
39709
- err(8);
39710
- return s;
39711
- }
39712
- }
39713
- // skip local zip header
39714
- var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
39715
- // read zip header
39716
- var zh = function (d, b, z) {
39717
- var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
39718
- var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
39719
- return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
39720
- };
39721
- // read zip64 extra field
39722
- var z64e = function (d, b) {
39723
- for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
39724
- ;
39725
- return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
39726
- };
39727
- /**
39728
- * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
39729
- * performance with more than one file.
39730
- * @param data The raw compressed ZIP file
39731
- * @param opts The ZIP extraction options
39732
- * @returns The decompressed files
39733
- */
39734
- function unzipSync(data, opts) {
39735
- var files = {};
39736
- var e = data.length - 22;
39737
- for (; b4(data, e) != 0x6054B50; --e) {
39738
- if (!e || data.length - e > 65558)
39739
- err(13);
39740
- }
39741
- var c = b2(data, e + 8);
39742
- if (!c)
39743
- return {};
39744
- var o = b4(data, e + 16);
39745
- var z = o == 4294967295 || c == 65535;
39746
- if (z) {
39747
- var ze = b4(data, e - 12);
39748
- z = b4(data, ze) == 0x6064B50;
39749
- if (z) {
39750
- c = b4(data, ze + 32);
39751
- o = b4(data, ze + 48);
39752
- }
39753
- }
39754
- for (var i = 0; i < c; ++i) {
39755
- var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
39756
- o = no;
39757
- {
39758
- if (!c_2)
39759
- files[fn] = slc(data, b, b + sc);
39760
- else if (c_2 == 8)
39761
- files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
39762
- else
39763
- err(14, 'unknown compression type ' + c_2);
39764
- }
39765
- }
39766
- return files;
39301
+ // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
39302
+ // https://tools.ietf.org/html/rfc1951
39303
+ // You may also wish to take a look at the guide I made about this program:
39304
+ // https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
39305
+ // Some of the following code is similar to that of UZIP.js:
39306
+ // https://github.com/photopea/UZIP.js
39307
+ // However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
39308
+ // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
39309
+ // is better for memory in most engines (I *think*).
39310
+
39311
+ // aliases for shorter compressed code (most minifers don't do this)
39312
+ var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
39313
+ // fixed length extra bits
39314
+ var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
39315
+ // fixed distance extra bits
39316
+ var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
39317
+ // code length index map
39318
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
39319
+ // get base, reverse index map from extra bits
39320
+ var freb = function (eb, start) {
39321
+ var b = new u16(31);
39322
+ for (var i = 0; i < 31; ++i) {
39323
+ b[i] = start += 1 << eb[i - 1];
39324
+ }
39325
+ // numbers here are at max 18 bits
39326
+ var r = new i32(b[30]);
39327
+ for (var i = 1; i < 30; ++i) {
39328
+ for (var j = b[i]; j < b[i + 1]; ++j) {
39329
+ r[j] = ((j - b[i]) << 5) | i;
39330
+ }
39331
+ }
39332
+ return { b: b, r: r };
39333
+ };
39334
+ var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
39335
+ // we can ignore the fact that the other numbers are wrong; they never happen anyway
39336
+ fl[28] = 258, revfl[258] = 28;
39337
+ var _b = freb(fdeb, 0), fd = _b.b;
39338
+ // map of value to reverse (assuming 16 bits)
39339
+ var rev = new u16(32768);
39340
+ for (var i = 0; i < 32768; ++i) {
39341
+ // reverse table algorithm from SO
39342
+ var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
39343
+ x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
39344
+ x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
39345
+ rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
39346
+ }
39347
+ // create huffman tree from u8 "map": index -> code length for code index
39348
+ // mb (max bits) must be at most 15
39349
+ // TODO: optimize/split up?
39350
+ var hMap = (function (cd, mb, r) {
39351
+ var s = cd.length;
39352
+ // index
39353
+ var i = 0;
39354
+ // u16 "map": index -> # of codes with bit length = index
39355
+ var l = new u16(mb);
39356
+ // length of cd must be 288 (total # of codes)
39357
+ for (; i < s; ++i) {
39358
+ if (cd[i])
39359
+ ++l[cd[i] - 1];
39360
+ }
39361
+ // u16 "map": index -> minimum code for bit length = index
39362
+ var le = new u16(mb);
39363
+ for (i = 1; i < mb; ++i) {
39364
+ le[i] = (le[i - 1] + l[i - 1]) << 1;
39365
+ }
39366
+ var co;
39367
+ if (r) {
39368
+ // u16 "map": index -> number of actual bits, symbol for code
39369
+ co = new u16(1 << mb);
39370
+ // bits to remove for reverser
39371
+ var rvb = 15 - mb;
39372
+ for (i = 0; i < s; ++i) {
39373
+ // ignore 0 lengths
39374
+ if (cd[i]) {
39375
+ // num encoding both symbol and bits read
39376
+ var sv = (i << 4) | cd[i];
39377
+ // free bits
39378
+ var r_1 = mb - cd[i];
39379
+ // start value
39380
+ var v = le[cd[i] - 1]++ << r_1;
39381
+ // m is end value
39382
+ for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
39383
+ // every 16 bit value starting with the code yields the same result
39384
+ co[rev[v] >> rvb] = sv;
39385
+ }
39386
+ }
39387
+ }
39388
+ }
39389
+ else {
39390
+ co = new u16(s);
39391
+ for (i = 0; i < s; ++i) {
39392
+ if (cd[i]) {
39393
+ co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
39394
+ }
39395
+ }
39396
+ }
39397
+ return co;
39398
+ });
39399
+ // fixed length tree
39400
+ var flt = new u8(288);
39401
+ for (var i = 0; i < 144; ++i)
39402
+ flt[i] = 8;
39403
+ for (var i = 144; i < 256; ++i)
39404
+ flt[i] = 9;
39405
+ for (var i = 256; i < 280; ++i)
39406
+ flt[i] = 7;
39407
+ for (var i = 280; i < 288; ++i)
39408
+ flt[i] = 8;
39409
+ // fixed distance tree
39410
+ var fdt = new u8(32);
39411
+ for (var i = 0; i < 32; ++i)
39412
+ fdt[i] = 5;
39413
+ // fixed length map
39414
+ var flrm = /*#__PURE__*/ hMap(flt, 9, 1);
39415
+ // fixed distance map
39416
+ var fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
39417
+ // find max of array
39418
+ var max = function (a) {
39419
+ var m = a[0];
39420
+ for (var i = 1; i < a.length; ++i) {
39421
+ if (a[i] > m)
39422
+ m = a[i];
39423
+ }
39424
+ return m;
39425
+ };
39426
+ // read d, starting at bit p and mask with m
39427
+ var bits = function (d, p, m) {
39428
+ var o = (p / 8) | 0;
39429
+ return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
39430
+ };
39431
+ // read d, starting at bit p continuing for at least 16 bits
39432
+ var bits16 = function (d, p) {
39433
+ var o = (p / 8) | 0;
39434
+ return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
39435
+ };
39436
+ // get end of byte
39437
+ var shft = function (p) { return ((p + 7) / 8) | 0; };
39438
+ // typed array slice - allows garbage collector to free original reference,
39439
+ // while being more compatible than .slice
39440
+ var slc = function (v, s, e) {
39441
+ if (s == null || s < 0)
39442
+ s = 0;
39443
+ if (e == null || e > v.length)
39444
+ e = v.length;
39445
+ // can't use .constructor in case user-supplied
39446
+ return new u8(v.subarray(s, e));
39447
+ };
39448
+ // error codes
39449
+ var ec = [
39450
+ 'unexpected EOF',
39451
+ 'invalid block type',
39452
+ 'invalid length/literal',
39453
+ 'invalid distance',
39454
+ 'stream finished',
39455
+ 'no stream handler',
39456
+ ,
39457
+ 'no callback',
39458
+ 'invalid UTF-8 data',
39459
+ 'extra field too long',
39460
+ 'date not in range 1980-2099',
39461
+ 'filename too long',
39462
+ 'stream finishing',
39463
+ 'invalid zip data'
39464
+ // determined by unknown compression method
39465
+ ];
39466
+ var err = function (ind, msg, nt) {
39467
+ var e = new Error(msg || ec[ind]);
39468
+ e.code = ind;
39469
+ if (Error.captureStackTrace)
39470
+ Error.captureStackTrace(e, err);
39471
+ if (!nt)
39472
+ throw e;
39473
+ return e;
39474
+ };
39475
+ // expands raw DEFLATE data
39476
+ var inflt = function (dat, st, buf, dict) {
39477
+ // source length dict length
39478
+ var sl = dat.length, dl = dict ? dict.length : 0;
39479
+ if (!sl || st.f && !st.l)
39480
+ return buf || new u8(0);
39481
+ var noBuf = !buf;
39482
+ // have to estimate size
39483
+ var resize = noBuf || st.i != 2;
39484
+ // no state
39485
+ var noSt = st.i;
39486
+ // Assumes roughly 33% compression ratio average
39487
+ if (noBuf)
39488
+ buf = new u8(sl * 3);
39489
+ // ensure buffer can fit at least l elements
39490
+ var cbuf = function (l) {
39491
+ var bl = buf.length;
39492
+ // need to increase size to fit
39493
+ if (l > bl) {
39494
+ // Double or set to necessary, whichever is greater
39495
+ var nbuf = new u8(Math.max(bl * 2, l));
39496
+ nbuf.set(buf);
39497
+ buf = nbuf;
39498
+ }
39499
+ };
39500
+ // last chunk bitpos bytes
39501
+ var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
39502
+ // total bits
39503
+ var tbts = sl * 8;
39504
+ do {
39505
+ if (!lm) {
39506
+ // BFINAL - this is only 1 when last chunk is next
39507
+ final = bits(dat, pos, 1);
39508
+ // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
39509
+ var type = bits(dat, pos + 1, 3);
39510
+ pos += 3;
39511
+ if (!type) {
39512
+ // go to end of byte boundary
39513
+ var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
39514
+ if (t > sl) {
39515
+ if (noSt)
39516
+ err(0);
39517
+ break;
39518
+ }
39519
+ // ensure size
39520
+ if (resize)
39521
+ cbuf(bt + l);
39522
+ // Copy over uncompressed data
39523
+ buf.set(dat.subarray(s, t), bt);
39524
+ // Get new bitpos, update byte count
39525
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
39526
+ continue;
39527
+ }
39528
+ else if (type == 1)
39529
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
39530
+ else if (type == 2) {
39531
+ // literal lengths
39532
+ var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
39533
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
39534
+ pos += 14;
39535
+ // length+distance tree
39536
+ var ldt = new u8(tl);
39537
+ // code length tree
39538
+ var clt = new u8(19);
39539
+ for (var i = 0; i < hcLen; ++i) {
39540
+ // use index map to get real code
39541
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
39542
+ }
39543
+ pos += hcLen * 3;
39544
+ // code lengths bits
39545
+ var clb = max(clt), clbmsk = (1 << clb) - 1;
39546
+ // code lengths map
39547
+ var clm = hMap(clt, clb, 1);
39548
+ for (var i = 0; i < tl;) {
39549
+ var r = clm[bits(dat, pos, clbmsk)];
39550
+ // bits read
39551
+ pos += r & 15;
39552
+ // symbol
39553
+ var s = r >> 4;
39554
+ // code length to copy
39555
+ if (s < 16) {
39556
+ ldt[i++] = s;
39557
+ }
39558
+ else {
39559
+ // copy count
39560
+ var c = 0, n = 0;
39561
+ if (s == 16)
39562
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
39563
+ else if (s == 17)
39564
+ n = 3 + bits(dat, pos, 7), pos += 3;
39565
+ else if (s == 18)
39566
+ n = 11 + bits(dat, pos, 127), pos += 7;
39567
+ while (n--)
39568
+ ldt[i++] = c;
39569
+ }
39570
+ }
39571
+ // length tree distance tree
39572
+ var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
39573
+ // max length bits
39574
+ lbt = max(lt);
39575
+ // max dist bits
39576
+ dbt = max(dt);
39577
+ lm = hMap(lt, lbt, 1);
39578
+ dm = hMap(dt, dbt, 1);
39579
+ }
39580
+ else
39581
+ err(1);
39582
+ if (pos > tbts) {
39583
+ if (noSt)
39584
+ err(0);
39585
+ break;
39586
+ }
39587
+ }
39588
+ // Make sure the buffer can hold this + the largest possible addition
39589
+ // Maximum chunk size (practically, theoretically infinite) is 2^17
39590
+ if (resize)
39591
+ cbuf(bt + 131072);
39592
+ var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
39593
+ var lpos = pos;
39594
+ for (;; lpos = pos) {
39595
+ // bits read, code
39596
+ var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
39597
+ pos += c & 15;
39598
+ if (pos > tbts) {
39599
+ if (noSt)
39600
+ err(0);
39601
+ break;
39602
+ }
39603
+ if (!c)
39604
+ err(2);
39605
+ if (sym < 256)
39606
+ buf[bt++] = sym;
39607
+ else if (sym == 256) {
39608
+ lpos = pos, lm = null;
39609
+ break;
39610
+ }
39611
+ else {
39612
+ var add = sym - 254;
39613
+ // no extra bits needed if less
39614
+ if (sym > 264) {
39615
+ // index
39616
+ var i = sym - 257, b = fleb[i];
39617
+ add = bits(dat, pos, (1 << b) - 1) + fl[i];
39618
+ pos += b;
39619
+ }
39620
+ // dist
39621
+ var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
39622
+ if (!d)
39623
+ err(3);
39624
+ pos += d & 15;
39625
+ var dt = fd[dsym];
39626
+ if (dsym > 3) {
39627
+ var b = fdeb[dsym];
39628
+ dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
39629
+ }
39630
+ if (pos > tbts) {
39631
+ if (noSt)
39632
+ err(0);
39633
+ break;
39634
+ }
39635
+ if (resize)
39636
+ cbuf(bt + 131072);
39637
+ var end = bt + add;
39638
+ if (bt < dt) {
39639
+ var shift = dl - dt, dend = Math.min(dt, end);
39640
+ if (shift + bt < 0)
39641
+ err(3);
39642
+ for (; bt < dend; ++bt)
39643
+ buf[bt] = dict[shift + bt];
39644
+ }
39645
+ for (; bt < end; ++bt)
39646
+ buf[bt] = buf[bt - dt];
39647
+ }
39648
+ }
39649
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
39650
+ if (lm)
39651
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
39652
+ } while (!final);
39653
+ // don't reallocate for streams or user buffers
39654
+ return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
39655
+ };
39656
+ // empty
39657
+ var et = /*#__PURE__*/ new u8(0);
39658
+ // read 2 bytes
39659
+ var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
39660
+ // read 4 bytes
39661
+ var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
39662
+ var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
39663
+ /**
39664
+ * Expands DEFLATE data with no wrapper
39665
+ * @param data The data to decompress
39666
+ * @param opts The decompression options
39667
+ * @returns The decompressed version of the data
39668
+ */
39669
+ function inflateSync(data, opts) {
39670
+ return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
39671
+ }
39672
+ // text decoder
39673
+ var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
39674
+ // text decoder stream
39675
+ var tds = 0;
39676
+ try {
39677
+ td.decode(et, { stream: true });
39678
+ tds = 1;
39679
+ }
39680
+ catch (e) { }
39681
+ // decode UTF8
39682
+ var dutf8 = function (d) {
39683
+ for (var r = '', i = 0;;) {
39684
+ var c = d[i++];
39685
+ var eb = (c > 127) + (c > 223) + (c > 239);
39686
+ if (i + eb > d.length)
39687
+ return { s: r, r: slc(d, i - 1) };
39688
+ if (!eb)
39689
+ r += String.fromCharCode(c);
39690
+ else if (eb == 3) {
39691
+ c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
39692
+ r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
39693
+ }
39694
+ else if (eb & 1)
39695
+ r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
39696
+ else
39697
+ r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
39698
+ }
39699
+ };
39700
+ /**
39701
+ * Converts a Uint8Array to a string
39702
+ * @param dat The data to decode to string
39703
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
39704
+ * not need to be true unless encoding to binary string.
39705
+ * @returns The original UTF-8/Latin-1 string
39706
+ */
39707
+ function strFromU8(dat, latin1) {
39708
+ if (latin1) {
39709
+ var r = '';
39710
+ for (var i = 0; i < dat.length; i += 16384)
39711
+ r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
39712
+ return r;
39713
+ }
39714
+ else if (td) {
39715
+ return td.decode(dat);
39716
+ }
39717
+ else {
39718
+ var _a = dutf8(dat), s = _a.s, r = _a.r;
39719
+ if (r.length)
39720
+ err(8);
39721
+ return s;
39722
+ }
39723
+ }
39724
+ // skip local zip header
39725
+ var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
39726
+ // read zip header
39727
+ var zh = function (d, b, z) {
39728
+ var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
39729
+ var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
39730
+ return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
39731
+ };
39732
+ // read zip64 extra field
39733
+ var z64e = function (d, b) {
39734
+ for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
39735
+ ;
39736
+ return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
39737
+ };
39738
+ /**
39739
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
39740
+ * performance with more than one file.
39741
+ * @param data The raw compressed ZIP file
39742
+ * @param opts The ZIP extraction options
39743
+ * @returns The decompressed files
39744
+ */
39745
+ function unzipSync(data, opts) {
39746
+ var files = {};
39747
+ var e = data.length - 22;
39748
+ for (; b4(data, e) != 0x6054B50; --e) {
39749
+ if (!e || data.length - e > 65558)
39750
+ err(13);
39751
+ }
39752
+ var c = b2(data, e + 8);
39753
+ if (!c)
39754
+ return {};
39755
+ var o = b4(data, e + 16);
39756
+ var z = o == 4294967295 || c == 65535;
39757
+ if (z) {
39758
+ var ze = b4(data, e - 12);
39759
+ z = b4(data, ze) == 0x6064B50;
39760
+ if (z) {
39761
+ c = b4(data, ze + 32);
39762
+ o = b4(data, ze + 48);
39763
+ }
39764
+ }
39765
+ for (var i = 0; i < c; ++i) {
39766
+ var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
39767
+ o = no;
39768
+ {
39769
+ if (!c_2)
39770
+ files[fn] = slc(data, b, b + sc);
39771
+ else if (c_2 == 8)
39772
+ files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
39773
+ else
39774
+ err(14, 'unknown compression type ' + c_2);
39775
+ }
39776
+ }
39777
+ return files;
39767
39778
  }
39768
39779
 
39769
39780
  class UnLitMaterial extends Material {
@@ -40534,7 +40545,7 @@ fn CsMain( @builtin(workgroup_id) workgroup_id : vec3<u32> , @builtin(global_inv
40534
40545
  }
40535
40546
  }
40536
40547
 
40537
- const version = "1.0.7";
40548
+ const version = "1.0.9";
40538
40549
 
40539
40550
  class Engine3D {
40540
40551
  /**