rayzee 11.7.0 → 11.9.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.
Files changed (79) hide show
  1. package/README.md +31 -6
  2. package/dist/{ArchiveImporter-DYcRXeKE.js → ArchiveImporter-BJxszU_k.js} +2353 -1356
  3. package/dist/{BidirectionalIntegrator-BvjRpbTP.js → BidirectionalIntegrator-DWg66vAd.js} +302 -301
  4. package/dist/{BufferLayout-xPRH9jYD.js → BufferLayout-Bzgccg1o.js} +1 -0
  5. package/dist/{ColorManagement-oeEk7oSu.js → ColorManagement-B_HjAiy2.js} +1 -1
  6. package/dist/{EngineIssues-CIZnXHsF.js → EngineIssues-CfJiBaNj.js} +19 -8
  7. package/dist/{NeuralRetouch-ClaMiKYg.js → NeuralRetouch-BD9E-Yht.js} +2 -2
  8. package/dist/{NeuralSuperRes-WNEXun9s.js → NeuralSuperRes-C8Mf3tJX.js} +2 -2
  9. package/dist/{PathTracer-B9wZPPVL.js → PathTracer-DeE9UJ1n.js} +3530 -3402
  10. package/dist/{PhysicalSky-DcjItqKi.js → PhysicalSky-cKy75-oR.js} +45 -45
  11. package/dist/{RayzeeRenderer-p-NeE6E2.js → RayzeeRenderer-CzLyBA3G.js} +378 -374
  12. package/dist/SceneMetadata-C17UfOEp.js +183 -0
  13. package/dist/{SolarLimb-bZE6y63S.js → SolarLimb-DRYy8tln.js} +184 -172
  14. package/dist/{ToneMapGPU-sAs8wdgI.js → ToneMapGPU-4GPwoG_c.js} +13 -6
  15. package/dist/addons/archives.es.js +1 -1
  16. package/dist/addons/bidirectional.es.js +1 -1
  17. package/dist/addons/color.es.js +1 -1
  18. package/dist/addons/physical-sky.es.js +1 -1
  19. package/dist/addons/storage.es.js +1 -1
  20. package/dist/{openStorage-Fe9BoS1_.js → openStorage-CdyVjmps.js} +1 -1
  21. package/dist/rayzee-core.es.js +7 -7
  22. package/dist/rayzee.es.js +821 -794
  23. package/dist/rayzee.umd.js +112 -103
  24. package/dist/{sceneCachePolicy-B9w3BnaP.js → sceneCachePolicy-ywbGKHD3.js} +9 -6
  25. package/package.json +1 -1
  26. package/src/EngineDefaults.js +1 -0
  27. package/src/EngineIssues.js +21 -6
  28. package/src/Passes/AIUpscaler.js +4 -0
  29. package/src/Passes/OIDNDenoiser.js +8 -6
  30. package/src/Passes/OIDNTemporalHistory.js +1 -1
  31. package/src/PathTracerApp.js +10 -1
  32. package/src/Processor/ArchiveImporter.js +106 -27
  33. package/src/Processor/AssetLoader.js +22 -0
  34. package/src/Processor/BufferLayout.js +3 -3
  35. package/src/Processor/GeometryExtractor.js +12 -4
  36. package/src/Processor/LightSerializer.js +6 -2
  37. package/src/Processor/MaterialPacking.js +2 -2
  38. package/src/Processor/PBRT/PBRTMaterials.js +49 -13
  39. package/src/Processor/PBRT/PBRTParser.js +144 -22
  40. package/src/Processor/PBRT/PBRTSceneBuilder.js +287 -67
  41. package/src/Processor/PBRT/PBRTTextureBake.js +191 -9
  42. package/src/Processor/PBRT/index.js +19 -4
  43. package/src/Processor/PlatformImageLoader.js +9 -0
  44. package/src/Processor/SceneProcessor.js +42 -26
  45. package/src/Processor/TextureCreator.js +44 -4
  46. package/src/Processor/ToneMapCPU.js +34 -5
  47. package/src/Processor/ToneMapGPU.js +15 -9
  48. package/src/Processor/USD/USDScene.js +981 -17
  49. package/src/RayzeeRenderer.js +85 -28
  50. package/src/Stages/AutoExposure.js +21 -8
  51. package/src/Stages/Compositor.js +39 -1
  52. package/src/Stages/DenoiserSettings.js +0 -4
  53. package/src/Stages/LocalExposure.js +44 -18
  54. package/src/Stages/NRD.js +53 -24
  55. package/src/Stages/NormalDepth.js +12 -6
  56. package/src/Stages/PathTracer.js +27 -1
  57. package/src/Stages/PathTracerStage.js +14 -2
  58. package/src/Storage/SceneGraphCodec.js +6 -3
  59. package/src/TSL/BVHTraversal.js +33 -20
  60. package/src/TSL/CameraRay.js +12 -1
  61. package/src/TSL/Common.js +25 -8
  62. package/src/TSL/DebugKernel.js +3 -2
  63. package/src/TSL/Displacement.js +66 -113
  64. package/src/TSL/FinalWriteKernel.js +4 -7
  65. package/src/TSL/GenerateKernel.js +6 -2
  66. package/src/TSL/LightSplatKernel.js +7 -4
  67. package/src/TSL/LightsCore.js +6 -2
  68. package/src/TSL/LightsDirect.js +33 -11
  69. package/src/TSL/LightsSampling.js +45 -12
  70. package/src/TSL/SceneResources.js +19 -0
  71. package/src/TSL/ShadeKernel.js +3 -4
  72. package/src/TSL/Struct.js +1 -0
  73. package/src/integrators/BidirectionalIntegrator.js +1 -0
  74. package/src/managers/CameraManager.js +9 -0
  75. package/src/managers/DenoisingManager.js +1 -0
  76. package/src/managers/InteractionManager.js +6 -0
  77. package/src/managers/MaterialDataManager.js +11 -0
  78. package/src/managers/UniformManager.js +3 -1
  79. package/dist/SceneMetadata-D2Sh-0e-.js +0 -110
@@ -1,11 +1,11 @@
1
1
  import { i as e, r as t } from "./Logger-dDDGj9Av.js";
2
- import { l as n } from "./BufferLayout-xPRH9jYD.js";
2
+ import { l as n } from "./BufferLayout-Bzgccg1o.js";
3
3
  import { ContextNode as r, StorageInstancedBufferAttribute as i, WebGPUBackend as a } from "three/webgpu";
4
- import { Fn as o, If as s, bool as c, clamp as l, dot as u, exp2 as d, float as f, floatBitsToUint as p, floor as m, int as h, log2 as g, mat3 as _, max as v, packSnorm2x16 as y, packUnorm2x16 as b, select as x, storage as S, struct as ee, uint as C, uintBitsToFloat as w, unpackSnorm2x16 as T, unpackUnorm2x16 as E, uvec2 as te, uvec4 as D, vec2 as O, vec3 as k, vec4 as A, wgslFn as j } from "three/tsl";
4
+ import { Fn as o, If as s, bool as c, clamp as l, dot as u, exp2 as d, float as f, floatBitsToUint as p, floor as m, int as h, log2 as g, mat3 as _, max as v, packSnorm2x16 as y, packUnorm2x16 as b, select as x, storage as S, struct as ee, uint as C, uintBitsToFloat as w, unpackSnorm2x16 as te, unpackUnorm2x16 as T, uvec2 as ne, uvec4 as E, vec2 as D, vec3 as O, vec4 as k, wgslFn as A } from "three/tsl";
5
5
  //#region src/TSL/patches.js
6
- var M = a.prototype.createNodeBuilder;
6
+ var re = a.prototype.createNodeBuilder;
7
7
  a.prototype.createNodeBuilder = function(e, t) {
8
- let n = M.call(this, e, t);
8
+ let n = re.call(this, e, t);
9
9
  return Object.defineProperty(n, "allowGlobalVariables", {
10
10
  get() {
11
11
  return this.material !== null;
@@ -14,14 +14,14 @@ a.prototype.createNodeBuilder = function(e, t) {
14
14
  configurable: !0
15
15
  }), n;
16
16
  };
17
- function N(e, t, n = Float32Array) {
17
+ function j(e, t, n = Float32Array) {
18
18
  let r = new i(new n(0), t);
19
19
  return r.count = e, r.gpuByteLength = e * t * n.BYTES_PER_ELEMENT, r.isGPUOnly = !0, r;
20
20
  }
21
- var P = a.prototype.createStorageAttribute;
21
+ var M = a.prototype.createStorageAttribute;
22
22
  a.prototype.createStorageAttribute = function(e) {
23
23
  let t = this.attributeUtils._getBufferAttribute(e);
24
- if (!t.isGPUOnly) return P.call(this, e);
24
+ if (!t.isGPUOnly) return M.call(this, e);
25
25
  let n = this.get(t);
26
26
  n.buffer === void 0 && (n.buffer = this.device.createBuffer({
27
27
  label: t.name,
@@ -29,12 +29,12 @@ a.prototype.createStorageAttribute = function(e) {
29
29
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST
30
30
  }));
31
31
  };
32
- var F = class {
32
+ var N = class {
33
33
  constructor(e, t, n, r = Float32Array, i = 4) {
34
34
  this.LaneType = r, this.itemSize = i, this.lanesPerPart = Math.max(1, Math.floor(n / (t * r.BYTES_PER_ELEMENT))) * t, this.totalLanes = e, this.attrs = [];
35
35
  for (let n = 0; n < e || this.attrs.length === 0; n += this.lanesPerPart) {
36
36
  let a = Math.max(t, Math.min(this.lanesPerPart, e - n));
37
- this.attrs.push(N(a / i, i, r));
37
+ this.attrs.push(j(a / i, i, r));
38
38
  }
39
39
  }
40
40
  get elementsPerPart() {
@@ -59,39 +59,39 @@ var F = class {
59
59
  this.write(e, a, r, s, c), a += c;
60
60
  }
61
61
  }
62
- }, I = a.prototype.updateAttribute;
62
+ }, ie = a.prototype.updateAttribute;
63
63
  a.prototype.updateAttribute = function(e) {
64
- if (!this.attributeUtils._getBufferAttribute(e).isGPUOnly) return I.call(this, e);
64
+ if (!this.attributeUtils._getBufferAttribute(e).isGPUOnly) return ie.call(this, e);
65
65
  };
66
- var L = 4096;
67
- function ne(e) {
66
+ var P = 4096;
67
+ function ae(e) {
68
68
  if (!this.trackTimestamp || this.isDisposed || this.currentQueryIndex + 2 > this.maxQueries) return null;
69
69
  let t = this.currentQueryIndex;
70
70
  return this.currentQueryIndex += 2, this.queryOffsets.set(e, t), t;
71
71
  }
72
- var re = a.prototype.initTimestampQuery;
72
+ var oe = a.prototype.initTimestampQuery;
73
73
  a.prototype.initTimestampQuery = function(e, t, n) {
74
74
  let r = this.trackTimestamp && !this.timestampQueryPool[e];
75
- if (re.call(this, e, t, n), r) {
75
+ if (oe.call(this, e, t, n), r) {
76
76
  let r = this.timestampQueryPool[e];
77
- if (r && r.maxQueries < L && n.timestampWrites) {
78
- let i = r.constructor, a = new i(this.device, e, L);
79
- a.allocateQueriesForContext = ne, a.allocateQueriesForContext(t), this.timestampQueryPool[e] = a, n.timestampWrites.querySet = a.querySet, r.dispose();
77
+ if (r && r.maxQueries < P && n.timestampWrites) {
78
+ let i = r.constructor, a = new i(this.device, e, P);
79
+ a.allocateQueriesForContext = ae, a.allocateQueriesForContext(t), this.timestampQueryPool[e] = a, n.timestampWrites.querySet = a.querySet, r.dispose();
80
80
  }
81
81
  }
82
82
  let i = n.timestampWrites;
83
83
  i && i.beginningOfPassWriteIndex == null && (n.timestampWrites = void 0);
84
84
  };
85
- function ie(e, t) {
85
+ function F(e, t) {
86
86
  return new Proxy(e, { get(e, n, r) {
87
87
  if (typeof n == "string" && t.has(n)) return e.get(n);
88
88
  let i = Reflect.get(e, n, r);
89
- return n === "toVar" && typeof i == "function" ? (...n) => ie(i.apply(e, n), t) : i;
89
+ return n === "toVar" && typeof i == "function" ? (...n) => F(i.apply(e, n), t) : i;
90
90
  } });
91
91
  }
92
- function R(e, t = null) {
93
- let n = ee(e, t), r = new Set(Object.keys(e)), i = (...e) => ie(n(...e), r);
94
- return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) => ie(e, r), i;
92
+ function I(e, t = null) {
93
+ let n = ee(e, t), r = new Set(Object.keys(e)), i = (...e) => F(n(...e), r);
94
+ return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) => F(e, r), i;
95
95
  }
96
96
  r.prototype.setup = function(e) {
97
97
  let t = e.addContext(this.value);
@@ -99,10 +99,10 @@ r.prototype.setup = function(e) {
99
99
  };
100
100
  //#endregion
101
101
  //#region src/TSL/Struct.js
102
- var ae = R({
102
+ var se = I({
103
103
  origin: "vec3",
104
104
  direction: "vec3"
105
- }), z = R({
105
+ }), L = I({
106
106
  color: "vec4",
107
107
  emissive: "vec3",
108
108
  emissiveIntensity: "float",
@@ -133,6 +133,7 @@ var ae = R({
133
133
  bumpMapIndex: "int",
134
134
  bumpScale: "float",
135
135
  displacementScale: "float",
136
+ displacementBias: "float",
136
137
  metalnessMapIndex: "int",
137
138
  roughnessMapIndex: "int",
138
139
  displacementMapIndex: "int",
@@ -168,7 +169,7 @@ var ae = R({
168
169
  diffuseTransmissionColor: "vec3",
169
170
  diffuseTransmissionMapIndex: "int",
170
171
  diffuseTransmissionColorMapIndex: "int"
171
- }), oe = R({
172
+ }), ce = I({
172
173
  transmission: "float",
173
174
  clearcoat: "float",
174
175
  clearcoatRoughness: "float",
@@ -180,7 +181,7 @@ var ae = R({
180
181
  specularColor: "vec3",
181
182
  diffuseTransmission: "float",
182
183
  diffuseTransmissionColor: "vec3"
183
- }), se = R({
184
+ }), le = I({
184
185
  color: "vec4",
185
186
  ior: "float",
186
187
  transmission: "float",
@@ -192,16 +193,16 @@ var ae = R({
192
193
  alphaTest: "float",
193
194
  alphaMode: "int",
194
195
  albedoTransform: "mat3"
195
- }), ce = R({
196
+ }), ue = I({
196
197
  shadowed: "vec3",
197
198
  unoccluded: "vec3"
198
199
  });
199
- R({
200
+ I({
200
201
  position: "vec3",
201
202
  radius: "float",
202
- material: z
203
+ material: L
203
204
  });
204
- var le = R({
205
+ var de = I({
205
206
  didHit: "bool",
206
207
  dst: "float",
207
208
  hitPoint: "vec3",
@@ -214,7 +215,7 @@ var le = R({
214
215
  boxTests: "int",
215
216
  triTests: "int"
216
217
  });
217
- R({
218
+ I({
218
219
  posA: "vec3",
219
220
  posB: "vec3",
220
221
  posC: "vec3",
@@ -224,21 +225,21 @@ R({
224
225
  normalA: "vec3",
225
226
  normalB: "vec3",
226
227
  normalC: "vec3",
227
- material: z,
228
+ material: L,
228
229
  materialIndex: "int",
229
230
  meshIndex: "int"
230
- }), R({
231
+ }), I({
231
232
  color: "vec4",
232
233
  samples: "int"
233
234
  });
234
- var ue = R({
235
+ var fe = I({
235
236
  direction: "vec3",
236
237
  value: "vec3",
237
238
  pdf: "float",
238
239
  isTransmission: "bool",
239
240
  colorWeight: "vec3",
240
241
  isDiffuseTransmission: "bool"
241
- }), de = R({
242
+ }), pe = I({
242
243
  specular: "float",
243
244
  diffuse: "float",
244
245
  sheen: "float",
@@ -246,10 +247,10 @@ var ue = R({
246
247
  transmission: "float",
247
248
  iridescence: "float",
248
249
  diffuseTransmission: "float"
249
- }), B = R({
250
+ }), R = I({
250
251
  Ta: "vec3",
251
252
  Ba: "vec3"
252
- }), V = R({
253
+ }), z = I({
253
254
  NoL: "float",
254
255
  NoV: "float",
255
256
  NoH: "float",
@@ -261,23 +262,23 @@ var ue = R({
261
262
  BoV: "float",
262
263
  ToL: "float",
263
264
  BoL: "float"
264
- }), fe = R({
265
+ }), me = I({
265
266
  compensation: "vec3",
266
267
  E_total: "vec3"
267
- }), pe = R({
268
+ }), he = I({
268
269
  f0: "vec3",
269
270
  f90: "float",
270
271
  eta: "float",
271
272
  F0m: "vec3",
272
273
  F0: "vec3"
273
- }), me = R({
274
+ }), ge = I({
274
275
  albedo: "vec4",
275
276
  emissive: "vec3",
276
277
  metalness: "float",
277
278
  roughness: "float",
278
279
  normal: "vec3",
279
280
  hasTextures: "bool"
280
- }), he = R({
281
+ }), _e = I({
281
282
  isMetallic: "bool",
282
283
  isRough: "bool",
283
284
  isSmooth: "bool",
@@ -285,7 +286,7 @@ var ue = R({
285
286
  hasClearcoat: "bool",
286
287
  isEmissive: "bool",
287
288
  complexityScore: "float"
288
- }), ge = R({
289
+ }), ve = I({
289
290
  albedoUV: "vec2",
290
291
  normalUV: "vec2",
291
292
  metalnessUV: "vec2",
@@ -296,13 +297,13 @@ var ue = R({
296
297
  metalRoughSameUV: "bool",
297
298
  albedoEmissiveSameUV: "bool",
298
299
  allSameUV: "bool"
299
- }), _e = R({
300
+ }), ye = I({
300
301
  invRoughness: "float",
301
302
  metalFactor: "float",
302
303
  iorFactor: "float",
303
304
  maxSheenColor: "float"
304
305
  });
305
- R({
306
+ I({
306
307
  traversals: "int",
307
308
  transmissiveTraversals: "int",
308
309
  rayType: "int",
@@ -311,30 +312,30 @@ R({
311
312
  });
312
313
  //#endregion
313
314
  //#region src/TSL/Common.js
314
- var ve = /* @__PURE__ */ j("\n fn offsetRayOrigin( p: vec3f, n: vec3f ) -> vec3f {\n let step = select( vec3<i32>( 32 ), vec3<i32>( -32 ), ( p < vec3f( 0.0 ) ) != ( n < vec3f( 0.0 ) ) );\n let far = bitcast<vec3f>( bitcast<vec3<i32>>( p ) + step );\n return select( far, p + n * 1e-5, abs( p ) < vec3f( 1.0 ) );\n }\n"), ye = .9999, be = 3.14159, xe = 1 / be, Se = 2 * be, H = 1e-6, Ce = .05, we = .089, Te = .001, Ee = k(.2126, .7152, .0722), De = 65504, U = (e, t = 1e7) => x(e.equal(e), e, f(0)).clamp(0, t), Oe = (e, t = 1e7) => k(U(e.x, t), U(e.y, t), U(e.z, t)), W = n.SLOTS_PER_MATERIAL, ke = n.SLOT, G = ke, Ae = _(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
315
- j("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), j("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
316
- var je = j("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
317
- j("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n"), j("\n fn maxComponent( v: vec3f ) -> f32 {\n\n return max( max( v.r, v.g ), v.b );\n\n }\n"), j("\n fn minComponent( v: vec3f ) -> f32 {\n\n return min( min( v.r, v.g ), v.b );\n\n }\n");
318
- var Me = j("\n fn luminance( color: vec3f ) -> f32 {\n\n return dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );\n\n }\n"), Ne = j(`
315
+ var be = /* @__PURE__ */ A("\n fn offsetRayOrigin( p: vec3f, n: vec3f ) -> vec3f {\n let step = select( vec3<i32>( 32 ), vec3<i32>( -32 ), ( p < vec3f( 0.0 ) ) != ( n < vec3f( 0.0 ) ) );\n let far = bitcast<vec3f>( bitcast<vec3<i32>>( p ) + step );\n return select( far, p + n * 1e-5, abs( p ) < vec3f( 1.0 ) );\n }\n"), xe = .9999, B = 3.14159, Se = 1 / B, Ce = 2 * B, V = 1e-6, we = .05, Te = .089, H = .001, Ee = O(.2126, .7152, .0722), De = 65504, U = (e, t = 1e7) => x(e.equal(e), e, f(0)).clamp(0, t), Oe = (e, t = 1e7) => O(U(e.x, t), U(e.y, t), U(e.z, t)), W = n.SLOTS_PER_MATERIAL, ke = n.SLOT, G = ke, Ae = _(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
316
+ A("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), A("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
317
+ var je = A("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
318
+ A("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n"), A("\n fn maxComponent( v: vec3f ) -> f32 {\n\n return max( max( v.r, v.g ), v.b );\n\n }\n"), A("\n fn minComponent( v: vec3f ) -> f32 {\n\n return min( min( v.r, v.g ), v.b );\n\n }\n");
319
+ var Me = A("\n fn luminance( color: vec3f ) -> f32 {\n\n return dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );\n\n }\n"), Ne = A(`
319
320
  fn powerHeuristic( pdf1: f32, pdf2: f32 ) -> f32 {
320
321
 
321
322
  let p1 = pdf1 * pdf1;
322
323
  let p2 = pdf2 * pdf2;
323
- return p1 / max( p1 + p2, ${Te} );
324
+ return p1 / max( p1 + p2, ${H} );
324
325
 
325
326
  }
326
- `), Pe = j(`
327
+ `), Pe = A(`
327
328
  fn balanceHeuristic( pdf1: f32, pdf2: f32 ) -> f32 {
328
329
 
329
- return pdf1 / max( pdf1 + pdf2, ${Te} );
330
+ return pdf1 / max( pdf1 + pdf2, ${H} );
330
331
 
331
332
  }
332
333
  `);
333
- j("\n fn applyDithering( color: vec3f, uv: vec2f, ditheringAmount: f32, resolution: vec2f ) -> vec3f {\n\n let bayerRow0 = vec4f( 0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0 );\n let bayerRow1 = vec4f( 12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0 );\n let bayerRow2 = vec4f( 3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0 );\n let bayerRow3 = vec4f( 15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0 );\n let bayer = mat4x4f( bayerRow0, bayerRow1, bayerRow2, bayerRow3 );\n\n let pixelCoord = vec2i( uv * resolution );\n let dither = bayer[ pixelCoord.x % 4 ][ pixelCoord.y % 4 ];\n\n return color + ( dither - 0.5 ) * ditheringAmount / 255.0;\n\n }\n");
334
- var Fe = j("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n");
334
+ A("\n fn applyDithering( color: vec3f, uv: vec2f, ditheringAmount: f32, resolution: vec2f ) -> vec3f {\n\n let bayerRow0 = vec4f( 0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0 );\n let bayerRow1 = vec4f( 12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0 );\n let bayerRow2 = vec4f( 3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0 );\n let bayerRow3 = vec4f( 15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0 );\n let bayer = mat4x4f( bayerRow0, bayerRow1, bayerRow2, bayerRow3 );\n\n let pixelCoord = vec2i( uv * resolution );\n let dither = bayer[ pixelCoord.x % 4 ][ pixelCoord.y % 4 ];\n\n return color + ( dither - 0.5 ) * ditheringAmount / 255.0;\n\n }\n");
335
+ var Fe = A("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n");
335
336
  o(([e, t, n]) => {
336
337
  let r = t.add(n).toVar(), i = u(r, r).toVar();
337
- return r.assign(i.greaterThan(H).select(r.div(i.sqrt()), k(0, 0, 1))), V({
338
+ return r.assign(i.greaterThan(V).select(r.div(i.sqrt()), O(0, 0, 1))), z({
338
339
  NoL: v(u(e, n), .001),
339
340
  NoV: v(u(e, t), .001),
340
341
  NoH: v(u(e, r), .001),
@@ -349,19 +350,19 @@ o(([e, t, n]) => {
349
350
  });
350
351
  });
351
352
  var Ie = o(([e, t]) => {
352
- let n = e.x.abs().lessThan(.999).select(k(1, 0, 0), k(0, 1, 0)), r = e.cross(n).normalize(), i = e.cross(r).normalize(), a = t.cos(), o = t.sin();
353
- return B({
353
+ let n = e.x.abs().lessThan(.999).select(O(1, 0, 0), O(0, 1, 0)), r = e.cross(n).normalize(), i = e.cross(r).normalize(), a = t.cos(), o = t.sin();
354
+ return R({
354
355
  Ta: r.mul(a).add(i.mul(o)),
355
356
  Ba: i.mul(a).sub(r.mul(o))
356
357
  });
357
358
  }), Le = o(([e, t, n, r]) => {
358
359
  let i = t.add(n).toVar(), a = u(i, i).toVar();
359
- i.assign(a.greaterThan(H).select(i.div(a.sqrt()), k(0, 0, 1)));
360
+ i.assign(a.greaterThan(V).select(i.div(a.sqrt()), O(0, 0, 1)));
360
361
  let o = f(0).toVar(), c = f(0).toVar(), l = f(0).toVar(), d = f(0).toVar(), p = f(0).toVar(), m = f(0).toVar();
361
362
  return s(r.anisotropy.greaterThan(0), () => {
362
- let a = B.wrap(Ie(e, r.anisotropyRotation));
363
+ let a = R.wrap(Ie(e, r.anisotropyRotation));
363
364
  o.assign(u(a.Ta, i)), c.assign(u(a.Ba, i)), l.assign(u(a.Ta, t)), d.assign(u(a.Ba, t)), p.assign(u(a.Ta, n)), m.assign(u(a.Ba, n));
364
- }), V({
365
+ }), z({
365
366
  NoL: v(u(e, n), .001),
366
367
  NoV: v(u(e, t), .001),
367
368
  NoH: v(u(e, i), .001),
@@ -374,7 +375,7 @@ var Ie = o(([e, t]) => {
374
375
  ToL: p,
375
376
  BoL: m
376
377
  });
377
- }), Re = j("\n fn calculateFireflyThreshold( baseThreshold: f32, bounceIndex: i32, frame: i32 ) -> f32 {\n\n let depthFactor = 1.0 / ( 1.0 + f32( bounceIndex ) * 0.1 );\n let relaxation = sqrt( f32( frame + 1 ) );\n return baseThreshold * depthFactor * relaxation;\n\n }\n"), ze = j("\n fn applySoftSuppression( value: f32, threshold: f32, dampingFactor: f32 ) -> f32 {\n\n if ( value <= threshold ) {\n return value;\n }\n let excess = value - threshold;\n let suppressionFactor = threshold / ( threshold + excess * dampingFactor );\n return value * suppressionFactor;\n\n }\n"), Be = j(`
378
+ }), Re = A("\n fn calculateFireflyThreshold( baseThreshold: f32, bounceIndex: i32, frame: i32 ) -> f32 {\n\n let depthFactor = 1.0 / ( 1.0 + f32( bounceIndex ) * 0.1 );\n let relaxation = sqrt( f32( frame + 1 ) );\n return baseThreshold * depthFactor * relaxation;\n\n }\n"), ze = A("\n fn applySoftSuppression( value: f32, threshold: f32, dampingFactor: f32 ) -> f32 {\n\n if ( value <= threshold ) {\n return value;\n }\n let excess = value - threshold;\n let suppressionFactor = threshold / ( threshold + excess * dampingFactor );\n return value * suppressionFactor;\n\n }\n"), Be = A(`
378
379
  fn applySoftSuppressionRGB( color: vec3f, threshold: f32, dampingFactor: f32 ) -> vec3f {
379
380
 
380
381
  let lum = dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );
@@ -382,7 +383,7 @@ var Ie = o(([e, t]) => {
382
383
  return color;
383
384
  }
384
385
  let suppressedLum = applySoftSuppression( lum, threshold, dampingFactor );
385
- if ( lum > ${H} ) {
386
+ if ( lum > ${V} ) {
386
387
  return color * ( suppressedLum / lum );
387
388
  }
388
389
  return color;
@@ -396,7 +397,7 @@ var Ie = o(([e, t]) => {
396
397
  _.addAssign(.2);
397
398
  }), s(h.and(d.or(o)), () => {
398
399
  _.addAssign(.1);
399
- }), he({
400
+ }), _e({
400
401
  isMetallic: o,
401
402
  isRough: c,
402
403
  isSmooth: u,
@@ -415,27 +416,32 @@ function He(e, t, n) {
415
416
  value: e[0].value
416
417
  };
417
418
  }
418
- function Ue(e, t) {
419
- if (!e.isSplitStorage) return e.element(t);
420
- let { parts: n, perPart: r } = e, i = h(t).toVar(), a = ({
421
- uvec4: D,
422
- uvec2: te
423
- }[e.type] ?? A)(0).toVar(), o = (e) => () => a.assign(n[e].element(e === 0 ? i : i.sub(h(r * e)))), c = s(i.lessThan(h(r)), o(0));
424
- for (let e = 1; e < n.length - 1; e++) c = c.ElseIf(i.lessThan(h(r * (e + 1))), o(e));
425
- return c.Else(o(n.length - 1)), a;
419
+ function Ue(e, t, n) {
420
+ let { parts: r, perPart: i } = e, a = h(t).toVar(), o = n.map(() => ({
421
+ uvec4: E,
422
+ uvec2: ne
423
+ }[e.type] ?? k)(0).toVar()), c = (e) => () => {
424
+ let t = e === 0 ? a : a.sub(h(i * e));
425
+ n.forEach((n, i) => o[i].assign(r[e].element(n === 0 ? t : t.add(h(n)))));
426
+ }, l = s(a.lessThan(h(i)), c(0));
427
+ for (let e = 1; e < r.length - 1; e++) l = l.ElseIf(a.lessThan(h(i * (e + 1))), c(e));
428
+ return l.Else(c(r.length - 1)), o;
429
+ }
430
+ function We(e, t) {
431
+ return e.isSplitStorage ? Ue(e, t, [0])[0] : e.element(t);
426
432
  }
427
- var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).add(K(n))), We = (e, t, n) => {
433
+ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => We(e, K(r).mul(K(t)).add(K(n))), Ge = (e, t, n) => {
428
434
  if (n < 3) return q(e.geo, t, h(n), h(3));
429
435
  if (!e.withoutUV) return q(e.shade, t, h(n - 3), h(2));
430
- if (n === 3) return D(0);
431
- let r = Ue(e.shade, K(t));
432
- return D(0, 0, r.x, r.y);
433
- }, J = /* @__PURE__ */ j("\n fn packNormalOct( n: vec3f ) -> u32 {\n\n let s = abs( n.x ) + abs( n.y ) + abs( n.z );\n var p = n.xy / max( s, 1e-20 );\n\n if ( n.z < 0.0 ) {\n\n let px = ( 1.0 - abs( p.y ) ) * select( -1.0, 1.0, p.x >= 0.0 );\n let py = ( 1.0 - abs( p.x ) ) * select( -1.0, 1.0, p.y >= 0.0 );\n p = vec2f( px, py );\n\n }\n\n return pack2x16snorm( p );\n\n }\n"), Y = /* @__PURE__ */ j("\n fn unpackTriangleNormal( packed: u32 ) -> vec3f {\n\n let e = unpack2x16snorm( packed );\n var nx = e.x;\n var ny = e.y;\n let nz = 1.0 - abs( e.x ) - abs( e.y );\n\n if ( nz < 0.0 ) {\n\n let tx = ( 1.0 - abs( ny ) ) * select( -1.0, 1.0, nx >= 0.0 );\n let ty = ( 1.0 - abs( nx ) ) * select( -1.0, 1.0, ny >= 0.0 );\n nx = tx;\n ny = ty;\n\n }\n\n return normalize( vec3f( nx, ny, nz ) );\n\n }\n"), X = j("\n fn arrayToMat3( data1: vec4f, data2: vec4f ) -> mat3x3f {\n\n return mat3x3f(\n data1.xyz,\n vec3f( data1.w, data2.xy ),\n vec3f( data2.zw, 1.0 )\n );\n\n }\n"), Ge = o(([e, t]) => {
434
- let n = q(t, e, h(G.COLOR_METALNESS), h(W)).toVar(), r = q(t, e, h(G.EMISSIVE_ROUGHNESS), h(W)).toVar(), i = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), a = q(t, e, h(G.ATTENUATION), h(W)).toVar(), o = q(t, e, h(G.DISPERSION_SHEEN), h(W)).toVar(), c = q(t, e, h(G.SHEEN_COLOR), h(W)).toVar(), l = q(t, e, h(G.SPECULAR), h(W)).toVar(), u = q(t, e, h(G.IRIDESCENCE), h(W)).toVar(), d = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), f = q(t, e, h(G.MAP_INDICES_B), h(W)).toVar(), p = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), m = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), g = q(t, e, h(G.BUMP_DISPLACEMENT), h(W)).toVar(), _ = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), v = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar(), y = q(t, e, h(G.NORMAL_TRANSFORM_A), h(W)).toVar(), b = q(t, e, h(G.NORMAL_TRANSFORM_B), h(W)).toVar(), x = q(t, e, h(G.ROUGHNESS_TRANSFORM_A), h(W)).toVar(), S = q(t, e, h(G.ROUGHNESS_TRANSFORM_B), h(W)).toVar(), ee = q(t, e, h(G.METALNESS_TRANSFORM_A), h(W)).toVar(), C = q(t, e, h(G.METALNESS_TRANSFORM_B), h(W)).toVar(), w = q(t, e, h(G.EMISSIVE_TRANSFORM_A), h(W)).toVar(), T = q(t, e, h(G.EMISSIVE_TRANSFORM_B), h(W)).toVar(), E = q(t, e, h(G.BUMP_TRANSFORM_A), h(W)).toVar(), te = q(t, e, h(G.BUMP_TRANSFORM_B), h(W)).toVar(), D = q(t, e, h(G.DISPLACEMENT_TRANSFORM_A), h(W)).toVar(), k = q(t, e, h(G.DISPLACEMENT_TRANSFORM_B), h(W)).toVar(), j = q(t, e, h(G.SUBSURFACE_A), h(W)).toVar(), M = q(t, e, h(G.SUBSURFACE_B), h(W)).toVar(), N = q(t, e, h(G.SUBSURFACE_C), h(W)).toVar(), P = q(t, e, h(G.EXT_MAP_INDICES_A), h(W)).toVar(), F = q(t, e, h(G.EXT_MAP_INDICES_B), h(W)).toVar(), I = q(t, e, h(G.EXT_MAP_INDICES_C), h(W)).toVar(), L = A(-1, -1, 0, 0).toVar();
436
+ if (n === 3) return E(0);
437
+ let r = We(e.shade, K(t));
438
+ return E(0, 0, r.x, r.y);
439
+ }, J = /* @__PURE__ */ A("\n fn packNormalOct( n: vec3f ) -> u32 {\n\n let s = abs( n.x ) + abs( n.y ) + abs( n.z );\n var p = n.xy / max( s, 1e-20 );\n\n if ( n.z < 0.0 ) {\n\n let px = ( 1.0 - abs( p.y ) ) * select( -1.0, 1.0, p.x >= 0.0 );\n let py = ( 1.0 - abs( p.x ) ) * select( -1.0, 1.0, p.y >= 0.0 );\n p = vec2f( px, py );\n\n }\n\n return pack2x16snorm( p );\n\n }\n"), Y = /* @__PURE__ */ A("\n fn unpackTriangleNormal( packed: u32 ) -> vec3f {\n\n let e = unpack2x16snorm( packed );\n var nx = e.x;\n var ny = e.y;\n let nz = 1.0 - abs( e.x ) - abs( e.y );\n\n if ( nz < 0.0 ) {\n\n let tx = ( 1.0 - abs( ny ) ) * select( -1.0, 1.0, nx >= 0.0 );\n let ty = ( 1.0 - abs( nx ) ) * select( -1.0, 1.0, ny >= 0.0 );\n nx = tx;\n ny = ty;\n\n }\n\n return normalize( vec3f( nx, ny, nz ) );\n\n }\n"), X = A("\n fn arrayToMat3( data1: vec4f, data2: vec4f ) -> mat3x3f {\n\n return mat3x3f(\n data1.xyz,\n vec3f( data1.w, data2.xy ),\n vec3f( data2.zw, 1.0 )\n );\n\n }\n"), Ke = o(([e, t]) => {
440
+ let n = q(t, e, h(G.COLOR_METALNESS), h(W)).toVar(), r = q(t, e, h(G.EMISSIVE_ROUGHNESS), h(W)).toVar(), i = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), a = q(t, e, h(G.ATTENUATION), h(W)).toVar(), o = q(t, e, h(G.DISPERSION_SHEEN), h(W)).toVar(), c = q(t, e, h(G.SHEEN_COLOR), h(W)).toVar(), l = q(t, e, h(G.SPECULAR), h(W)).toVar(), u = q(t, e, h(G.IRIDESCENCE), h(W)).toVar(), d = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), f = q(t, e, h(G.MAP_INDICES_B), h(W)).toVar(), p = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), m = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), g = q(t, e, h(G.BUMP_DISPLACEMENT), h(W)).toVar(), _ = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), v = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar(), y = q(t, e, h(G.NORMAL_TRANSFORM_A), h(W)).toVar(), b = q(t, e, h(G.NORMAL_TRANSFORM_B), h(W)).toVar(), x = q(t, e, h(G.ROUGHNESS_TRANSFORM_A), h(W)).toVar(), S = q(t, e, h(G.ROUGHNESS_TRANSFORM_B), h(W)).toVar(), ee = q(t, e, h(G.METALNESS_TRANSFORM_A), h(W)).toVar(), C = q(t, e, h(G.METALNESS_TRANSFORM_B), h(W)).toVar(), w = q(t, e, h(G.EMISSIVE_TRANSFORM_A), h(W)).toVar(), te = q(t, e, h(G.EMISSIVE_TRANSFORM_B), h(W)).toVar(), T = q(t, e, h(G.BUMP_TRANSFORM_A), h(W)).toVar(), ne = q(t, e, h(G.BUMP_TRANSFORM_B), h(W)).toVar(), E = q(t, e, h(G.DISPLACEMENT_TRANSFORM_A), h(W)).toVar(), O = q(t, e, h(G.DISPLACEMENT_TRANSFORM_B), h(W)).toVar(), A = q(t, e, h(G.SUBSURFACE_A), h(W)).toVar(), re = q(t, e, h(G.SUBSURFACE_B), h(W)).toVar(), j = q(t, e, h(G.SUBSURFACE_C), h(W)).toVar(), M = q(t, e, h(G.EXT_MAP_INDICES_A), h(W)).toVar(), N = q(t, e, h(G.EXT_MAP_INDICES_B), h(W)).toVar(), ie = q(t, e, h(G.EXT_MAP_INDICES_C), h(W)).toVar(), P = k(-1, -1, 0, 0).toVar();
435
441
  return s(c.a.greaterThan(0), () => {
436
- L.assign(q(t, e, h(G.EXT_MAP_INDICES_D), h(W)));
437
- }), z({
438
- color: A(n.rgb, 1),
442
+ P.assign(q(t, e, h(G.EXT_MAP_INDICES_D), h(W)));
443
+ }), L({
444
+ color: k(n.rgb, 1),
439
445
  metalness: n.a,
440
446
  emissive: r.rgb,
441
447
  roughness: r.a,
@@ -454,27 +460,27 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
454
460
  iridescence: u.r,
455
461
  iridescenceIOR: u.g,
456
462
  iridescenceThicknessRange: u.ba,
457
- subsurfaceColor: j.rgb,
458
- subsurface: j.a,
459
- subsurfaceRadius: M.rgb,
460
- subsurfaceRadiusScale: M.a,
461
- subsurfaceAnisotropy: N.r,
462
- anisotropy: N.g,
463
- anisotropyRotation: N.b,
464
- anisotropyMapIndex: h(N.a),
465
- transmissionMapIndex: h(P.r),
466
- clearcoatMapIndex: h(P.g),
467
- clearcoatRoughnessMapIndex: h(P.b),
468
- sheenColorMapIndex: h(P.a),
469
- sheenRoughnessMapIndex: h(F.r),
470
- iridescenceMapIndex: h(F.g),
471
- iridescenceThicknessMapIndex: h(F.b),
472
- specularIntensityMapIndex: h(F.a),
473
- specularColorMapIndex: h(I.r),
463
+ subsurfaceColor: A.rgb,
464
+ subsurface: A.a,
465
+ subsurfaceRadius: re.rgb,
466
+ subsurfaceRadiusScale: re.a,
467
+ subsurfaceAnisotropy: j.r,
468
+ anisotropy: j.g,
469
+ anisotropyRotation: j.b,
470
+ anisotropyMapIndex: h(j.a),
471
+ transmissionMapIndex: h(M.r),
472
+ clearcoatMapIndex: h(M.g),
473
+ clearcoatRoughnessMapIndex: h(M.b),
474
+ sheenColorMapIndex: h(M.a),
475
+ sheenRoughnessMapIndex: h(N.r),
476
+ iridescenceMapIndex: h(N.g),
477
+ iridescenceThicknessMapIndex: h(N.b),
478
+ specularIntensityMapIndex: h(N.a),
479
+ specularColorMapIndex: h(ie.r),
474
480
  diffuseTransmission: c.a,
475
- diffuseTransmissionColor: I.gba,
476
- diffuseTransmissionMapIndex: h(L.r),
477
- diffuseTransmissionColorMapIndex: h(L.g),
481
+ diffuseTransmissionColor: ie.gba,
482
+ diffuseTransmissionMapIndex: h(P.r),
483
+ diffuseTransmissionColorMapIndex: h(P.g),
478
484
  albedoMapIndex: h(d.r),
479
485
  normalMapIndex: h(d.g),
480
486
  roughnessMapIndex: h(d.b),
@@ -489,10 +495,11 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
489
495
  alphaTest: p.a,
490
496
  alphaMode: h(m.r),
491
497
  depthWrite: h(m.g),
492
- normalScale: O(m.b, m.b),
498
+ normalScale: D(m.b, m.b),
493
499
  bumpScale: g.r,
494
500
  displacementScale: g.g,
495
501
  displacementMapIndex: h(g.b),
502
+ displacementBias: g.a,
496
503
  albedoTransform: X({
497
504
  data1: _,
498
505
  data2: v
@@ -511,22 +518,22 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
511
518
  }),
512
519
  emissiveTransform: X({
513
520
  data1: w,
514
- data2: T
521
+ data2: te
515
522
  }),
516
523
  bumpTransform: X({
517
- data1: E,
518
- data2: te
524
+ data1: T,
525
+ data2: ne
519
526
  }),
520
527
  displacementTransform: X({
521
- data1: D,
522
- data2: k
528
+ data1: E,
529
+ data2: O
523
530
  })
524
531
  });
525
- }), Ke = o(() => {
532
+ }), qe = o(() => {
526
533
  let e = _(1, 0, 0, 0, 1, 0, 0, 0, 1);
527
- return z({
528
- color: A(1, 1, 1, 1),
529
- emissive: k(0),
534
+ return L({
535
+ color: k(1, 1, 1, 1),
536
+ emissive: O(0),
530
537
  emissiveIntensity: f(0),
531
538
  roughness: f(1),
532
539
  metalness: f(0),
@@ -537,14 +544,14 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
537
544
  clearcoatRoughness: f(0),
538
545
  opacity: f(1),
539
546
  transparent: f(0),
540
- attenuationColor: k(1),
547
+ attenuationColor: O(1),
541
548
  attenuationDistance: f(0),
542
549
  dispersion: f(0),
543
550
  sheen: f(0),
544
551
  sheenRoughness: f(1),
545
- sheenColor: k(0),
552
+ sheenColor: O(0),
546
553
  specularIntensity: f(1),
547
- specularColor: k(1),
554
+ specularColor: O(1),
548
555
  alphaTest: f(0),
549
556
  alphaMode: h(0),
550
557
  side: h(0),
@@ -555,10 +562,11 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
555
562
  bumpMapIndex: h(-1),
556
563
  bumpScale: f(1),
557
564
  displacementScale: f(0),
565
+ displacementBias: f(0),
558
566
  metalnessMapIndex: h(-1),
559
567
  roughnessMapIndex: h(-1),
560
568
  displacementMapIndex: h(-1),
561
- normalScale: O(1, 1),
569
+ normalScale: D(1, 1),
562
570
  albedoTransform: e,
563
571
  emissiveTransform: e,
564
572
  normalTransform: e,
@@ -568,10 +576,10 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
568
576
  displacementTransform: e,
569
577
  iridescence: f(0),
570
578
  iridescenceIOR: f(1.3),
571
- iridescenceThicknessRange: O(100, 400),
579
+ iridescenceThicknessRange: D(100, 400),
572
580
  subsurface: f(0),
573
- subsurfaceColor: k(1),
574
- subsurfaceRadius: k(1, .2, .1),
581
+ subsurfaceColor: O(1),
582
+ subsurfaceRadius: O(1, .2, .1),
575
583
  subsurfaceRadiusScale: f(1),
576
584
  subsurfaceAnisotropy: f(0),
577
585
  anisotropy: f(0),
@@ -587,14 +595,14 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
587
595
  specularIntensityMapIndex: h(-1),
588
596
  specularColorMapIndex: h(-1),
589
597
  diffuseTransmission: f(0),
590
- diffuseTransmissionColor: k(1),
598
+ diffuseTransmissionColor: O(1),
591
599
  diffuseTransmissionMapIndex: h(-1),
592
600
  diffuseTransmissionColorMapIndex: h(-1)
593
601
  });
594
- }), qe = o(([e, t]) => {
602
+ }), Je = o(([e, t]) => {
595
603
  let n = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), r = q(t, e, h(G.ATTENUATION), h(W)).toVar(), i = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), a = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), o = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), s = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), c = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar();
596
- return se({
597
- color: A(1),
604
+ return le({
605
+ color: k(1),
598
606
  ior: n.r,
599
607
  transmission: n.g,
600
608
  attenuationColor: r.rgb,
@@ -609,12 +617,16 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
609
617
  data2: c
610
618
  })
611
619
  });
612
- }), Je = (e, t) => {
620
+ }), Ye = (e, t) => {
613
621
  let n = (t) => e.shiftRight(C(t)).bitAnd(C(1)).equal(C(1)), r = t ? t.equal(h(0)) : c(!0);
614
622
  return n(26).or(n(27).and(r));
615
- }, Ye = (e, t) => {
623
+ }, Xe = (e, t) => {
616
624
  let n = e.value?.copyRecordBase;
617
- return n === void 0 ? [
625
+ return n === void 0 ? e.isSplitStorage ? Ue(e, h(t).mul(4), [
626
+ 1,
627
+ 2,
628
+ 3
629
+ ]) : [
618
630
  q(e, t, h(1), h(4)),
619
631
  q(e, t, h(2), h(4)),
620
632
  q(e, t, h(3), h(4))
@@ -623,15 +635,15 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
623
635
  1,
624
636
  2
625
637
  ].map((r) => q(e, t, h(n + r), h(3)));
626
- }, Xe = (e, t) => k(k(e[0].x, e[1].x, e[2].x).dot(t), k(e[0].y, e[1].y, e[2].y).dot(t), k(e[0].z, e[1].z, e[2].z).dot(t)), Ze = (e, t) => {
638
+ }, Ze = (e, t) => O(O(e[0].x, e[1].x, e[2].x).dot(t), O(e[0].y, e[1].y, e[2].y).dot(t), O(e[0].z, e[1].z, e[2].z).dot(t)), Qe = (e, t) => {
627
639
  let n = e[0].xyz.dot(e[1].xyz.cross(e[2].xyz));
628
- return Xe(e, t).mul(n.sign());
629
- }, Qe = /* @__PURE__ */ j("\n fn instanceDirToWorld( r0: vec3f, r1: vec3f, r2: vec3f, v: vec3f ) -> vec3f {\n\n // Rows of world-to-object; its inverse has columns cross(r1,r2), cross(r2,r0), cross(r0,r1).\n let c0 = cross( r1, r2 );\n let det = dot( r0, c0 );\n // Relative: for a uniform scale s this determinant is s⁻³, so a fixed floor would call a\n // heavily scaled-up instance singular and leave the direction untransformed.\n let magnitude = length( r0 ) * length( r1 ) * length( r2 );\n if ( abs( det ) <= 1e-12f * magnitude ) { return v; }\n\n let inv = 1.0f / det;\n return ( c0 * v.x + cross( r2, r0 ) * v.y + cross( r0, r1 ) * v.z ) * inv;\n\n }\n"), $e = (e, t) => Qe({
640
+ return Ze(e, t).mul(n.sign());
641
+ }, $e = /* @__PURE__ */ A("\n fn instanceDirToWorld( r0: vec3f, r1: vec3f, r2: vec3f, v: vec3f ) -> vec3f {\n\n // Rows of world-to-object; its inverse has columns cross(r1,r2), cross(r2,r0), cross(r0,r1).\n let c0 = cross( r1, r2 );\n let det = dot( r0, c0 );\n // Relative: for a uniform scale s this determinant is s⁻³, so a fixed floor would call a\n // heavily scaled-up instance singular and leave the direction untransformed.\n let magnitude = length( r0 ) * length( r1 ) * length( r2 );\n if ( abs( det ) <= 1e-12f * magnitude ) { return v; }\n\n let inv = 1.0f / det;\n return ( c0 * v.x + cross( r2, r0 ) * v.y + cross( r0, r1 ) * v.z ) * inv;\n\n }\n"), et = (e, t) => $e({
630
642
  r0: e[0].xyz,
631
643
  r1: e[1].xyz,
632
644
  r2: e[2].xyz,
633
- v: t.sub(k(e[0].w, e[1].w, e[2].w))
634
- }), et = t("gpu"), Z = {
645
+ v: t.sub(O(e[0].w, e[1].w, e[2].w))
646
+ }), tt = t("gpu"), Z = {
635
647
  ORIGIN_META: 0,
636
648
  DIR_FLAGS: 1,
637
649
  THROUGHPUT_PDF: 2,
@@ -644,60 +656,60 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
644
656
  NORMAL_MAT: 1,
645
657
  RNG: 2,
646
658
  VERTEX: 3
647
- }, tt = 0, nt = 0, rt = 0, $ = (e, t) => t === 0 ? e : e.add(t * tt);
648
- function it(e, t) {
659
+ }, nt = 0, rt = 0, it = 0, $ = (e, t) => t === 0 ? e : e.add(t * nt);
660
+ function at(e, t) {
649
661
  t && e?._attributes?.delete?.(t);
650
662
  }
651
- var at = class {
663
+ var ot = class {
652
664
  constructor(e = 0, t = null, n = 0) {
653
665
  this.capacity = 0, this.lightVertices = 0, this._renderer = t, this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, e > 0 && this.allocate(e, n);
654
666
  }
655
667
  allocate(t, n = 0) {
656
- this.dispose(), this.capacity = t, this.lightVertices = n, tt = t, nt = t * (n > 0 ? 7 : 3), rt = nt + n * 4;
657
- let r = t * 7, i = N(r, 4);
668
+ this.dispose(), this.capacity = t, this.lightVertices = n, nt = t, rt = t * (n > 0 ? 7 : 3), it = rt + n * 4;
669
+ let r = t * 7, i = j(r, 4);
658
670
  this._attrs.ray = i, this.rayBuffer = {
659
671
  rw: S(i, "vec4"),
660
672
  ro: S(i, "vec4").toReadOnly()
661
673
  };
662
- let a = rt + t * 1, o = N(a, 4, Uint32Array);
674
+ let a = it + t * 1, o = j(a, 4, Uint32Array);
663
675
  this._attrs.hit = o, this.hitBuffer = {
664
676
  rw: S(o, "uvec4"),
665
677
  ro: S(o, "uvec4").toReadOnly()
666
- }, this.rayBytes = r * 16, this.hitBytes = a * 16, this.totalBytes = this.rayBytes + this.hitBytes, et.debug(`ray pool capacity ${e.n(t)} · ${e.mb(this.totalBytes)} (rays ${e.mb(this.rayBytes)} · hits ${e.mb(this.hitBytes)})`);
678
+ }, this.rayBytes = r * 16, this.hitBytes = a * 16, this.totalBytes = this.rayBytes + this.hitBytes, tt.debug(`ray pool capacity ${e.n(t)} · ${e.mb(this.totalBytes)} (rays ${e.mb(this.rayBytes)} · hits ${e.mb(this.hitBytes)})`);
667
679
  }
668
680
  resize(e, t = 0) {
669
681
  return e <= this.capacity && this.capacity > 0 && t === this.lightVertices ? !1 : (this.allocate(e, t), !0);
670
682
  }
671
683
  dispose() {
672
- it(this._renderer, this._attrs.ray), it(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, this.capacity = 0, this.lightVertices = 0;
684
+ at(this._renderer, this._attrs.ray), at(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, this.capacity = 0, this.lightVertices = 0;
673
685
  }
674
- }, ot = (e, t) => e.element($(t, Z.ORIGIN_META)).xyz, st = (e, t) => e.element($(t, Z.DIR_FLAGS)).xyz, ct = (e, t) => p(e.element($(t, Z.DIR_FLAGS)).w), lt = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).xyz, ut = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).w, dt = (e, t) => e.element($(t, Z.RADIANCE_ALPHA)), ft = (e) => C(e).mul(1).add(rt), pt = (e, t, n, r, i, a = null) => {
675
- let o = ft(t), s = a === null ? E(e.element(o).w).y : f(a);
676
- return e.element(o).assign(D(y(O(n.x, n.y)), y(O(n.z, r)), b(O(i.x, i.y)), b(O(i.z, s))));
677
- }, mt = (e, t, n) => {
678
- let r = ft(t), i = e.element(r).toVar();
679
- return e.element(r).assign(D(i.x, i.y, i.z, b(O(E(i.w).x, n))));
680
- }, ht = (e, t) => e.element(ft(t)), gt = (e) => E(e.w).y, _t = (e) => {
681
- let t = T(e.x), n = T(e.y);
682
- return A(k(t.x, t.y, n.x).mul(.5).add(.5), n.y);
683
- }, vt = (e) => k(E(e.z), E(e.w).x), yt = (e) => {
686
+ }, st = (e, t) => e.element($(t, Z.ORIGIN_META)).xyz, ct = (e, t) => e.element($(t, Z.DIR_FLAGS)).xyz, lt = (e, t) => p(e.element($(t, Z.DIR_FLAGS)).w), ut = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).xyz, dt = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).w, ft = (e, t) => e.element($(t, Z.RADIANCE_ALPHA)), pt = (e) => C(e).mul(1).add(it), mt = (e, t, n, r, i, a = null) => {
687
+ let o = pt(t), s = a === null ? T(e.element(o).w).y : f(a);
688
+ return e.element(o).assign(E(y(D(n.x, n.y)), y(D(n.z, r)), b(D(i.x, i.y)), b(D(i.z, s))));
689
+ }, ht = (e, t, n) => {
690
+ let r = pt(t), i = e.element(r).toVar();
691
+ return e.element(r).assign(E(i.x, i.y, i.z, b(D(T(i.w).x, n))));
692
+ }, gt = (e, t) => e.element(pt(t)), _t = (e) => T(e.w).y, vt = (e) => {
693
+ let t = te(e.x), n = te(e.y);
694
+ return k(O(t.x, t.y, n.x).mul(.5).add(.5), n.y);
695
+ }, yt = (e) => O(T(e.z), T(e.w).x), bt = (e) => {
684
696
  let t = l(m(g(v(e, 1e-6))), -8, 7), n = l(f(e).mul(d(t.negate())).sub(1).mul(64), 0, 63);
685
697
  return x(f(e).lessThan(.004), C(0), C(t.add(8)).shiftLeft(6).bitOr(C(n)));
686
- }, bt = (e, t) => {
698
+ }, xt = (e, t) => {
687
699
  let n = p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(22), r = f(n.shiftRight(6).bitAnd(C(15))).sub(8), i = f(n.bitAnd(C(63))).div(64).add(1);
688
700
  return x(n.equal(C(0)), f(0), i.mul(d(r)));
689
- }, xt = (e, t, n, r, i, a = C(0), o = null) => {
701
+ }, St = (e, t, n, r, i, a = C(0), o = null) => {
690
702
  let s = C(r).bitAnd(C(255)).bitOr(C(i).bitAnd(C(255)).shiftLeft(8)).bitOr(C(a).bitAnd(C(63)).shiftLeft(16));
691
- return o !== null && (s = s.bitOr(yt(o).shiftLeft(22))), e.element($(t, Z.ORIGIN_META)).assign(A(n, w(s)));
692
- }, St = (e, t, n, r) => e.element($(t, Z.DIR_FLAGS)).assign(A(n, w(r))), Ct = (e, t, n, r) => e.element($(t, Z.THROUGHPUT_PDF)).assign(A(n, r)), wt = (e, t, n) => e.element($(t, Z.RADIANCE_ALPHA)).assign(n), Tt = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).x), Et = (e, t) => e.element($(t, Q.DIST_TRI_BARY)).y, Dt = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).zw), Ot = (e, t) => Y(e.element($(t, Q.NORMAL_MAT)).x), kt = (e, t) => C(e.element($(t, Q.NORMAL_MAT)).y), At = (e, t) => h(e.element($(t, Q.NORMAL_MAT)).z).sub(h(1)), jt = (e, t) => e.element($(t, Q.NORMAL_MAT)).w, Mt = (e, t) => e.element($(t, Q.RNG)).x, Nt = (e, t, n) => e.element($(t, Q.RNG)).assign(D(n, 0, 0, 0)), Pt = (e, t) => {
703
+ return o !== null && (s = s.bitOr(bt(o).shiftLeft(22))), e.element($(t, Z.ORIGIN_META)).assign(k(n, w(s)));
704
+ }, Ct = (e, t, n, r) => e.element($(t, Z.DIR_FLAGS)).assign(k(n, w(r))), wt = (e, t, n, r) => e.element($(t, Z.THROUGHPUT_PDF)).assign(k(n, r)), Tt = (e, t, n) => e.element($(t, Z.RADIANCE_ALPHA)).assign(n), Et = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).x), Dt = (e, t) => e.element($(t, Q.DIST_TRI_BARY)).y, Ot = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).zw), kt = (e, t) => Y(e.element($(t, Q.NORMAL_MAT)).x), At = (e, t) => C(e.element($(t, Q.NORMAL_MAT)).y), jt = (e, t) => h(e.element($(t, Q.NORMAL_MAT)).z).sub(h(1)), Mt = (e, t) => e.element($(t, Q.NORMAL_MAT)).w, Nt = (e, t) => e.element($(t, Q.RNG)).x, Pt = (e, t, n) => e.element($(t, Q.RNG)).assign(E(n, 0, 0, 0)), Ft = (e, t) => {
693
705
  let n = e.element($(t, Q.RNG));
694
706
  return {
695
707
  dVCM: w(n.y),
696
708
  dVC: w(n.z)
697
709
  };
698
- }, Ft = (e, t, n, r, i) => e.element($(t, Q.RNG)).assign(D(n, p(r), p(i), C(0))), It = (e) => (t) => $(e, Q.VERTEX + t), Lt = (e) => (t) => C(e).mul(4).add(nt + t), Rt = (e, t, n) => {
699
- e.element(t(0)).assign(D(p(n.position), n.tag)), e.element(t(1)).assign(D(p(n.throughput), J(n.V))), e.element(t(2)).assign(D(J(n.N), J(n.facetN), C(n.materialIndex).bitOr(C(n.extra).bitAnd(C(255)).shiftLeft(C(24))), p(n.uv.x))), e.element(t(3)).assign(D(p(n.uv.y), p(n.dVCM), p(n.dVC), C(0)));
700
- }, zt = (e, t) => e.element(t(0)).w, Bt = (e, t) => w(e.element(t(0)).xyz), Vt = (e, t) => e.element(t(3)).w, Ht = (e, t, n) => e.element(t(3)).w.assign(n), Ut = (e, t) => {
710
+ }, It = (e, t, n, r, i) => e.element($(t, Q.RNG)).assign(E(n, p(r), p(i), C(0))), Lt = (e) => (t) => $(e, Q.VERTEX + t), Rt = (e) => (t) => C(e).mul(4).add(rt + t), zt = (e, t, n) => {
711
+ e.element(t(0)).assign(E(p(n.position), n.tag)), e.element(t(1)).assign(E(p(n.throughput), J(n.V))), e.element(t(2)).assign(E(J(n.N), J(n.facetN), C(n.materialIndex).bitOr(C(n.extra).bitAnd(C(255)).shiftLeft(C(24))), p(n.uv.x))), e.element(t(3)).assign(E(p(n.uv.y), p(n.dVCM), p(n.dVC), C(0)));
712
+ }, Bt = (e, t) => e.element(t(0)).w, Vt = (e, t) => w(e.element(t(0)).xyz), Ht = (e, t) => e.element(t(3)).w, Ut = (e, t, n) => e.element(t(3)).w.assign(n), Wt = (e, t) => {
701
713
  let n = e.element(t(0)).toVar(), r = e.element(t(1)).toVar(), i = e.element(t(2)).toVar(), a = e.element(t(3)).toVar();
702
714
  return {
703
715
  position: w(n.xyz),
@@ -707,18 +719,18 @@ var at = class {
707
719
  N: Y(i.x),
708
720
  facetN: Y(i.y),
709
721
  materialIndex: i.z.bitAnd(C(16777215)),
710
- uv: O(w(i.w), w(a.x)),
722
+ uv: D(w(i.w), w(a.x)),
711
723
  dVCM: w(a.y),
712
724
  dVC: w(a.z),
713
725
  extra: i.z.shiftRight(C(24))
714
726
  };
715
- }, Wt = (e, t, n) => {
727
+ }, Gt = (e, t, n) => {
716
728
  let r = e.element(t(0)).w;
717
729
  return x(r.shiftRight(C(8)).equal(n), r.bitAnd(C(255)), C(0));
718
- }, Gt = (e, t, n, r) => {
730
+ }, Kt = (e, t, n, r) => {
719
731
  let i = e.element(t(0)).xyz.toVar();
720
- e.element(t(0)).assign(D(i, n.shiftLeft(C(8)).bitOr(C(r))));
721
- }, Kt = (e, t, n, r, i, a) => e.element($(t, Q.VERTEX)).assign(D(C(n), C(h(r).add(h(1))), p(i), p(a))), qt = (e, t) => {
732
+ e.element(t(0)).assign(E(i, n.shiftLeft(C(8)).bitOr(C(r))));
733
+ }, qt = (e, t, n, r, i, a) => e.element($(t, Q.VERTEX)).assign(E(C(n), C(h(r).add(h(1))), p(i), p(a))), Jt = (e, t) => {
722
734
  let n = e.element($(t, Q.VERTEX)).toVar();
723
735
  return {
724
736
  triangle: h(n.x),
@@ -726,9 +738,9 @@ var at = class {
726
738
  cosLight: w(n.z),
727
739
  scale: w(n.w)
728
740
  };
729
- }, Jt = (e, t, n, r, i, a, o, s, c, l = C(0)) => {
730
- e.element($(t, Q.DIST_TRI_BARY)).assign(D(p(n), r, p(i), p(a))), e.element($(t, Q.NORMAL_MAT)).assign(D(J(o), s, c, l));
731
- }, Yt = (e, t) => {
741
+ }, Yt = (e, t, n, r, i, a, o, s, c, l = C(0)) => {
742
+ e.element($(t, Q.DIST_TRI_BARY)).assign(E(p(n), r, p(i), p(a))), e.element($(t, Q.NORMAL_MAT)).assign(E(J(o), s, c, l));
743
+ }, Xt = (e, t) => {
732
744
  let n = e.element($(t, Z.MEDIUM_STACK)), r = p(n.x);
733
745
  return {
734
746
  stackDepth: r.bitAnd(255),
@@ -738,25 +750,25 @@ var at = class {
738
750
  ior2: n.z,
739
751
  ior3: n.w
740
752
  };
741
- }, Xt = (e, t, n, r, i, a, o, s = C(0)) => e.element($(t, Z.MEDIUM_STACK)).assign(A(w(n.bitOr(r.shiftLeft(8)).bitOr(s.shiftLeft(16))), i, a, o)), Zt = (e, t) => e.element($(t, Z.MEDIUM_SIGMA_A)).xyz, Qt = (e, t, n) => {
753
+ }, Zt = (e, t, n, r, i, a, o, s = C(0)) => e.element($(t, Z.MEDIUM_STACK)).assign(k(w(n.bitOr(r.shiftLeft(8)).bitOr(s.shiftLeft(16))), i, a, o)), Qt = (e, t) => e.element($(t, Z.MEDIUM_SIGMA_A)).xyz, $t = (e, t, n) => {
742
754
  let r = e.element($(t, Z.MEDIUM_SIGMA_A)).w.toVar();
743
- e.element($(t, Z.MEDIUM_SIGMA_A)).assign(A(n, r));
744
- }, $t = (e) => {
745
- let t = l(e, k(0), k(1)).mul(1023).add(.5);
755
+ e.element($(t, Z.MEDIUM_SIGMA_A)).assign(k(n, r));
756
+ }, en = (e) => {
757
+ let t = l(e, O(0), O(1)).mul(1023).add(.5);
746
758
  return C(t.x).bitOr(C(t.y).shiftLeft(10)).bitOr(C(t.z).shiftLeft(20));
747
- }, en = (e) => k(f(e.bitAnd(C(1023))), f(e.shiftRight(10).bitAnd(C(1023))), f(e.shiftRight(20).bitAnd(C(1023)))).div(1023), tn = (e, t) => en(p(e.element($(t, Z.MEDIUM_SIGMA_A)).w)), nn = (e, t, n) => {
759
+ }, tn = (e) => O(f(e.bitAnd(C(1023))), f(e.shiftRight(10).bitAnd(C(1023))), f(e.shiftRight(20).bitAnd(C(1023)))).div(1023), nn = (e, t) => tn(p(e.element($(t, Z.MEDIUM_SIGMA_A)).w)), rn = (e, t, n) => {
748
760
  let r = e.element($(t, Z.MEDIUM_SIGMA_A)).xyz.toVar();
749
- e.element($(t, Z.MEDIUM_SIGMA_A)).assign(A(r, w($t(n))));
750
- }, rn = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).bitAnd(255)), an = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(8).bitAnd(255)), on = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(16).bitAnd(C(63))), sn = (e, t) => {
761
+ e.element($(t, Z.MEDIUM_SIGMA_A)).assign(k(r, w(en(n))));
762
+ }, an = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).bitAnd(255)), on = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(8).bitAnd(255)), sn = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(16).bitAnd(C(63))), cn = (e, t) => {
751
763
  let n = e.element($(t, Z.SSS_SIGMA_S));
752
764
  return {
753
765
  sigmaS: n.xyz,
754
766
  g: n.w
755
767
  };
756
- }, cn = (e, t, n, r) => e.element($(t, Z.SSS_SIGMA_S)).assign(A(n, r)), ln = [
768
+ }, ln = (e, t, n, r) => e.element($(t, Z.SSS_SIGMA_S)).assign(k(n, r)), un = [
757
769
  610,
758
770
  550,
759
771
  465
760
772
  ].map((e) => -.023 + .292 / (e / 1e3));
761
773
  //#endregion
762
- export { cn as $, ae as $t, lt as A, Ye as At, pt as B, Y as Bt, Pt as C, q as Ct, ot as D, Ze as Dt, st as E, Qe as Et, Vt as F, Oe as Ft, Qt as G, ce as Gt, Jt as H, de as Ht, Bt as I, Je as It, xt as J, oe as Jt, Xt as K, ue as Kt, Ut as L, He as Lt, sn as M, ve as Mt, an as N, Ne as Nt, ut as O, Xe as Ot, on as P, U as Pt, Nt as Q, me as Qt, zt as R, je as Rt, bt as S, Ke as St, ct as T, qe as Tt, Kt as U, pe as Ut, mt as V, B as Vt, Gt as W, fe as Wt, Ct as X, _e as Xt, wt as Y, le as Yt, Ft as Z, he as Zt, Et as _, Pe as _t, vt as a, R as an, W as at, Zt as b, Le as bt, It as c, Ce as ct, Dt as d, Ee as dt, z as en, Ht as et, Tt as f, ye as ft, Ot as g, Be as gt, kt as h, Ie as ht, it as i, N as in, ke as it, Mt as j, Me as jt, dt as k, $e as kt, tn as l, be as lt, At as m, Ae as mt, at as n, ge as nn, H as nt, gt as o, we as ot, jt as p, Se as pt, St as q, V as qt, Lt as r, F as rn, De as rt, _t as s, Te as st, ln as t, se as tn, Rt as tt, ht as u, xe as ut, qt as v, Re as vt, rn as w, Ge as wt, Yt as x, Fe as xt, Wt as y, Ve as yt, nn as z, We as zt };
774
+ export { ln as $, ge as $t, ut as A, Xe as At, mt as B, Ge as Bt, Ft as C, q as Ct, st as D, Qe as Dt, ct as E, $e as Et, Ht as F, Oe as Ft, $t as G, me as Gt, Yt as H, R as Ht, Vt as I, Ye as It, St as J, z as Jt, Zt as K, ue as Kt, Wt as L, He as Lt, cn as M, be as Mt, on as N, Ne as Nt, dt as O, Ze as Ot, sn as P, U as Pt, Pt as Q, _e as Qt, Bt as R, je as Rt, xt as S, qe as St, lt as T, Je as Tt, qt as U, pe as Ut, ht as V, Y as Vt, Kt as W, he as Wt, wt as X, de as Xt, Tt as Y, ce as Yt, It as Z, ye as Zt, Dt as _, Pe as _t, yt as a, j as an, W as at, Qt as b, Le as bt, Lt as c, we as ct, Ot as d, Ee as dt, se as en, Ut as et, Et as f, xe as ft, kt as g, Be as gt, At as h, Ie as ht, at as i, N as in, ke as it, Nt as j, Me as jt, ft as k, et as kt, nn as l, B as lt, jt as m, Ae as mt, ot as n, le as nn, V as nt, _t as o, I as on, Te as ot, Mt as p, Ce as pt, Ct as q, fe as qt, Rt as r, ve as rn, De as rt, vt as s, H as st, un as t, L as tn, zt as tt, gt as u, Se as ut, Jt as v, Re as vt, an as w, Ke as wt, Xt as x, Fe as xt, Gt as y, Ve as yt, rn as z, Ue as zt };