rayzee 11.6.0 → 11.7.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 (38) hide show
  1. package/README.md +13 -14
  2. package/dist/{ArchiveImporter-iofnC8zB.js → ArchiveImporter-DYcRXeKE.js} +2 -2
  3. package/dist/{BidirectionalIntegrator-CqAilt2I.js → BidirectionalIntegrator-BvjRpbTP.js} +2 -2
  4. package/dist/{NeuralRetouch-DFI4pOjO.js → NeuralRetouch-ClaMiKYg.js} +1 -1
  5. package/dist/{NeuralSuperRes-ChCiiilS.js → NeuralSuperRes-WNEXun9s.js} +1 -1
  6. package/dist/{PathTracer-BX4sJLx7.js → PathTracer-B9wZPPVL.js} +6 -8
  7. package/dist/{PhysicalSky-Biv39eTA.js → PhysicalSky-DcjItqKi.js} +1 -1
  8. package/dist/{RayzeeRenderer-D8XRKU3A.js → RayzeeRenderer-p-NeE6E2.js} +2 -3
  9. package/dist/addons/archives.es.js +1 -1
  10. package/dist/addons/bidirectional.es.js +1 -1
  11. package/dist/addons/physical-sky.es.js +1 -1
  12. package/dist/rayzee-core.es.js +3 -3
  13. package/dist/rayzee.es.js +865 -1591
  14. package/dist/rayzee.umd.js +87 -134
  15. package/dist/{sceneCachePolicy-W5PLbzuR.js → sceneCachePolicy-B9w3BnaP.js} +1 -1
  16. package/package.json +1 -1
  17. package/src/Passes/OIDNDenoiser.js +9 -11
  18. package/src/PathTracerApp.js +6 -17
  19. package/src/Pipeline/BindingAudit.js +2 -3
  20. package/src/Pipeline/PipelineContext.js +0 -1
  21. package/src/Pipeline/RenderPipeline.js +1 -2
  22. package/src/Pipeline/RenderStage.js +1 -1
  23. package/src/Processor/PackedRayBuffer.js +2 -2
  24. package/src/Processor/StorageTexturePool.js +1 -1
  25. package/src/RayzeeRenderer.js +1 -1
  26. package/src/Stages/DenoiserSettings.js +5 -81
  27. package/src/Stages/MotionVector.js +21 -215
  28. package/src/Stages/NormalDepth.js +5 -5
  29. package/src/Stages/PathTracer.js +1 -1
  30. package/src/Stages/PathTracerStage.js +4 -17
  31. package/src/TSL/FinalWriteKernel.js +2 -2
  32. package/src/TSL/ShadeKernel.js +3 -3
  33. package/src/index.js +1 -1
  34. package/src/managers/DenoisingManager.js +78 -187
  35. package/src/Stages/ASVGF.js +0 -932
  36. package/src/Stages/BilateralFilter.js +0 -486
  37. package/src/Stages/EdgeFilter.js +0 -545
  38. package/src/Stages/Variance.js +0 -443
package/README.md CHANGED
@@ -500,7 +500,7 @@ Key settings:
500
500
  | `transparentBackground` | `boolean` | false | Transparent canvas background |
501
501
  | `interactionModeEnabled` | `boolean` | true | Render at lower resolution while the camera moves, keeping the full bounce budget ("Fast Navigation" in the app) |
502
502
  | `interactionRenderScale` | `number` | 0.5 | Per-axis render scale while the camera moves (0.5 = a quarter of the pixels); `1` turns the drop off. Ignored while OIDN is the live denoiser. `PathTracerApp` only |
503
- | `renderMode` | `number` | 0 | Internal preview(0)/production(1) flag driving accumulation & ASVGF behavior — normally set via `configureForMode()`, not written directly |
503
+ | `renderMode` | `number` | 0 | Internal preview(0)/production(1) flag driving accumulation & denoiser history — normally set via `configureForMode()`, not written directly |
504
504
  | `visMode` | `number` | 0 | Debug visualization mode (0 = off) |
505
505
  | `environmentMode` | `string` | 'hdri' | Sky mode: `'hdri'` \| `'procedural'` \| `'color'` — not routed through `engine.settings`; use `engine.environmentManager.setMode()` instead |
506
506
  | `cameraProjection` | `string` | 'perspective' | `'perspective'` \| `'orthographic'` \| `'equirectangular'` — see [Camera Projection](#camera-projection-orthographic-360-panorama) |
@@ -748,7 +748,7 @@ Depth of field still works: the lens plane is built from each ray's own frame, n
748
748
 
749
749
  Two features are incompatible with a non-frustum camera and the engine switches them off for you when panorama is enabled:
750
750
 
751
- - **ASVGF** falls back to the `edgeaware` denoiser — ASVGF's motion vectors unproject through the projection matrix, which is meaningless when every pixel is its own direction.
751
+ - **NRD** hands the view to OIDN — NRD's motion vectors unproject through the projection matrix, which is meaningless when every pixel is its own direction. OIDN keeps working (without its motion history). Asking for `'nrd'` while in a panorama runs `'oidn'` and records `denoiser.unavailable`.
752
752
  - **Auto-focus** pauses and focus holds its last distance — it raycasts via `Raycaster.setFromCamera`, which only understands a frustum. It resumes when you leave the panorama.
753
753
 
754
754
  Read the denoiser outcome back rather than duplicating the rule (`engine.denoisingManager.denoiserStrategy`); it is not restored automatically when you leave the panorama.
@@ -918,7 +918,7 @@ await engine.environmentManager.generateProcedural();
918
918
 
919
919
  ### engine.denoisingManager
920
920
 
921
- Denoiser strategy, ASVGF, OIDN, upscaler, and auto-exposure. Auto exposure meters the accumulated image on the GPU
921
+ Denoiser strategy, NRD, OIDN, upscaler, and auto-exposure. Auto exposure meters the accumulated image on the GPU
922
922
  and moves in stops; it follows a room level learned as the camera moves plus a damped share of each view, so a scene lit
923
923
  for its manual exposure stays near it while one lit far off is corrected in full. It eases while the image restarts
924
924
  every frame (a moving camera, playback) and lands within about a third of a second once the image builds up, so a
@@ -926,15 +926,13 @@ finished render shows its own exposure at any sample count. While it is on, `exp
926
926
 
927
927
  ```js
928
928
  // Strategy
929
- engine.denoisingManager.setStrategy('asvgf', 'medium') // 'none' | 'asvgf' | 'nrd' | 'edgeaware' | 'oidn'
929
+ engine.denoisingManager.setStrategy('nrd', 'medium') // DENOISER_STRATEGIES: 'none' | 'nrd' | 'oidn'
930
930
  engine.denoisingManager.denoiserStrategy // read back the active strategy (derived from stage state)
931
- engine.denoisingManager.setASVGFEnabled(true, 'medium')
932
- engine.denoisingManager.applyASVGFPreset('high') // 'low' | 'medium' | 'high'
931
+ engine.denoisingManager.applyNRDPreset('high') // 'low' | 'medium' | 'high'
933
932
  engine.denoisingManager.setAutoExposure(true)
934
933
 
935
934
  // Fine-grained parameters
936
- engine.denoisingManager.setASVGFParams({ temporalAlpha: 0.1, maxAccumFrames: 16 })
937
- engine.denoisingManager.setEdgeAwareParams({ phiLuminance: 4.0, atrousIterations: 5 })
935
+ engine.denoisingManager.setNRDParams({ maxAccumulatedFrameNum: 16, maxBlurRadius: 20 })
938
936
  engine.denoisingManager.setAutoExposureParams({
939
937
  strength: 0.3, // 0..1, how far it follows each view; 1 averages every view to middle grey
940
938
  metering: 'center', // 'average' | 'center' | 'spot' (at the auto-focus point)
@@ -1604,7 +1602,7 @@ import {
1604
1602
  AUTO_EXPOSURE_DEFAULTS,
1605
1603
  LOCAL_EXPOSURE_DEFAULTS,
1606
1604
  AUTO_FOCUS_DEFAULTS,
1607
- ASVGF_QUALITY_PRESETS,
1605
+ DENOISER_STRATEGIES,
1608
1606
  SKY_DEFAULTS,
1609
1607
  DEFAULT_SUN_PATH,
1610
1608
  DEFAULT_VIEW,
@@ -1754,7 +1752,7 @@ Two independent decisions, because they answer different questions — *what cle
1754
1752
  render works*, and *does the finished image get a proper pass*:
1755
1753
 
1756
1754
  ```js
1757
- engine.denoisingManager.setStrategy('oidn'); // 'none' | 'edgeaware' | 'asvgf' | 'nrd' | 'oidn'
1755
+ engine.denoisingManager.setStrategy('oidn'); // 'none' | 'nrd' | 'oidn'
1758
1756
  engine.denoisingManager.setOIDNEnabled(false); // a full OIDN pass on the finished image
1759
1757
  ```
1760
1758
 
@@ -1767,8 +1765,8 @@ switching the final pass on says nothing about the live view. All six combinatio
1767
1765
  |---|---|---|---|---|
1768
1766
  | `'none'` | `false` | raw | raw | raw |
1769
1767
  | `'none'` | `true` | raw | raw | OIDN |
1770
- | `'asvgf'` | `false` | ASVGF | ASVGF | ASVGF's last frame |
1771
- | `'asvgf'` | `true` | ASVGF | ASVGF | OIDN |
1768
+ | `'nrd'` | `false` | NRD | NRD, then raw once it hands over | NRD's last frame, or raw past the handover |
1769
+ | `'nrd'` | `true` | NRD | NRD, then raw once it hands over | OIDN |
1772
1770
  | `'oidn'` | `false` | OIDN, from the motion history | OIDN, refreshing | one last refresh |
1773
1771
  | `'oidn'` | `true` | OIDN, from the motion history | OIDN, refreshing | OIDN, full quality |
1774
1772
 
@@ -1780,9 +1778,10 @@ With OIDN on the live view and the final pass off, the render still closes with
1780
1778
  cadence's last tick lands short of the end, and the picture should match the render that finished. On
1781
1779
  a 150-sample render that gap measured **11 samples at 512²** and **1 at 1024²** — larger where the
1782
1780
  renderer is fast, because more samples land between refreshes. It uses whatever model the refreshes
1783
- were already on: no reload for an image the user never asked to be denoised at full quality.
1781
+ were already on: no reload for an image the user never asked to be denoised at full quality. A final render
1782
+ (`configureForMode( 'production' )`) has no live view to match, so with the final pass off it finishes undenoised.
1784
1783
 
1785
- In the app that is `Real-Time Denoiser` (None / EdgeAware / ASVGF / NRD / **OIDN (AI)**) and the
1784
+ In the app that is `Real-Time Denoiser` (None / NRD / **OIDN (AI)**, OIDN by default) and the
1786
1785
  `Final Denoise (OIDN)` switch. Deterministic mode pins the live refreshes off, since which frame a
1787
1786
  wall-clock cadence lands on is not reproducible.
1788
1787
 
@@ -1,5 +1,5 @@
1
- import { n as e } from "./BidirectionalIntegrator-CqAilt2I.js";
2
- import { A as t, T as n, at as r, n as i, r as a, v as o } from "./sceneCachePolicy-W5PLbzuR.js";
1
+ import { n as e } from "./BidirectionalIntegrator-BvjRpbTP.js";
2
+ import { A as t, T as n, at as r, n as i, r as a, v as o } from "./sceneCachePolicy-B9w3BnaP.js";
3
3
  import { n as s, r as c } from "./EngineIssues-CIZnXHsF.js";
4
4
  import { r as l } from "./shared-BGBcSxBQ.js";
5
5
  import { i as u, n as d, o as f, r as p } from "./identity-C1cLD1C0.js";
@@ -1,6 +1,6 @@
1
1
  import { F as e, Ft as t, I as n, J as r, Jt as i, K as a, L as o, Mt as s, Qt as c, R as l, U as u, X as d, Y as f, Z as p, an as m, c as ee, ct as h, dt as te, en as ne, et as g, ft as _, i as v, in as re, j as ie, jt as ae, k as oe, lt as y, q as b, r as se, wt as ce, y as le, zt as ue } from "./SolarLimb-bZE6y63S.js";
2
- import { A as x, C as S, Ct as de, D as C, E as fe, G as pe, K as w, L as me, M as T, N as E, O as he, P as D, R as ge, S as _e, St as ve, T as ye, Tt as be, U as xe, X as O, Y as k, Z as Se, _ as A, a as j, at as M, b as Ce, bt as N, c as we, d as Te, f as P, g as Ee, h as De, j as Oe, k as ke, l as Ae, m as je, o as Me, ot as Ne, p as Pe, q as Fe, s as Ie, st as Le, t as Re, u as ze, v as Be, w as Ve, wt as He, x as Ue, xt as We, y as F } from "./PathTracer-BX4sJLx7.js";
3
- import { W as Ge } from "./sceneCachePolicy-W5PLbzuR.js";
2
+ import { A as x, C as S, Ct as de, D as C, E as fe, G as pe, K as w, L as me, M as T, N as E, O as he, P as D, R as ge, S as _e, St as ve, T as ye, Tt as be, U as xe, X as O, Y as k, Z as Se, _ as A, a as j, at as M, b as Ce, bt as N, c as we, d as Te, f as P, g as Ee, h as De, j as Oe, k as ke, l as Ae, m as je, o as Me, ot as Ne, p as Pe, q as Fe, s as Ie, st as Le, t as Re, u as ze, v as Be, w as Ve, wt as He, x as Ue, xt as We, y as F } from "./PathTracer-B9wZPPVL.js";
3
+ import { W as Ge } from "./sceneCachePolicy-B9w3BnaP.js";
4
4
  import { r as Ke } from "./BufferLayout-xPRH9jYD.js";
5
5
  import { Break as qe, Fn as I, If as L, Loop as Je, Return as R, abs as z, atomicAdd as Ye, atomicFunc as Xe, atomicLoad as B, atomicStore as Ze, bool as Qe, cos as $e, cross as et, dot as V, exp2 as tt, float as H, floor as nt, instanceIndex as U, int as W, ivec2 as rt, ivec3 as it, length as at, localId as ot, log2 as st, max as G, min as ct, mix as lt, normalize as ut, sampler as dt, select as K, sin as ft, sqrt as pt, storage as mt, texture as ht, uint as q, uniform as J, uniformArray as gt, vec2 as _t, vec3 as Y, vec4 as vt, workgroupId as yt } from "three/tsl";
6
6
  import { DataTexture as bt, FloatType as xt, RedFormat as St, Vector3 as Ct } from "three";
@@ -1,4 +1,4 @@
1
- import { n as e } from "./BidirectionalIntegrator-CqAilt2I.js";
1
+ import { n as e } from "./BidirectionalIntegrator-BvjRpbTP.js";
2
2
  import { r as t } from "./Logger-dDDGj9Av.js";
3
3
  import { n } from "./AssetConfig-DSEntE65.js";
4
4
  import { t as r } from "./ToneMapGPU-sAs8wdgI.js";
@@ -1,4 +1,4 @@
1
- import { n as e } from "./BidirectionalIntegrator-CqAilt2I.js";
1
+ import { n as e } from "./BidirectionalIntegrator-BvjRpbTP.js";
2
2
  import { t } from "./EngineEvents-CLckhYbL.js";
3
3
  import { r as n } from "./Logger-dDDGj9Av.js";
4
4
  import { n as r } from "./AssetConfig-DSEntE65.js";
@@ -1,5 +1,5 @@
1
1
  import { $ as e, $t as t, A as n, At as r, B as i, Bt as a, C as o, Ct as s, D as c, Dt as l, E as u, Et as d, G as f, Gt as p, H as m, Ht as h, It as g, J as _, Jt as v, K as y, Kt as b, Lt as x, M as S, Mt as C, N as w, Nt as T, O as E, Ot as D, P as O, Q as ee, Qt as k, Rt as A, S as te, St as j, T as ne, Tt as M, Ut as re, V as ie, Vt as ae, W as oe, Wt as se, X as ce, Xt as le, Y as ue, Yt as de, Z as fe, Zt as pe, _ as me, _t as he, a as ge, an as _e, at as ve, b as ye, bt as be, c as xe, ct as Se, d as Ce, dt as we, en as Te, f as Ee, ft as De, g as Oe, gt as ke, h as Ae, ht as je, i as Me, in as Ne, it as Pe, j as Fe, jt as Ie, k as Le, kt as Re, l as ze, lt as Be, m as Ve, mt as He, n as Ue, nn as We, nt as Ge, o as Ke, ot as qe, p as Je, pt as Ye, q as Xe, qt as Ze, r as Qe, rn as $e, s as et, st as tt, t as nt, tn as rt, tt as it, u as at, ut as ot, v as st, vt as ct, w as lt, wt as ut, x as dt, xt as ft, yt as pt, z as mt, zt as ht } from "./SolarLimb-bZE6y63S.js";
2
- import { B as gt, D as _t, E as vt, F as yt, G as N, H as bt, L as xt, M as St, N as Ct, P as wt, R as Tt, S as Et, U as Dt, V as Ot, W as kt, X as At, Z as jt, _ as Mt, a as Nt, at as Pt, b as Ft, c as It, f as Lt, g as P, h as Rt, i as zt, it as Bt, j as Vt, k as F, m as Ht, p as Ut, q as Wt, r as Gt, s as Kt, t as qt, w as Jt, z as Yt } from "./sceneCachePolicy-W5PLbzuR.js";
2
+ import { B as gt, D as _t, E as vt, F as yt, G as N, H as bt, L as xt, M as St, N as Ct, P as wt, R as Tt, S as Et, U as Dt, V as Ot, W as kt, X as At, Z as jt, _ as Mt, a as Nt, at as Pt, b as Ft, c as It, f as Lt, g as P, h as Rt, i as zt, it as Bt, j as Vt, k as F, m as Ht, p as Ut, q as Wt, r as Gt, s as Kt, t as qt, w as Jt, z as Yt } from "./sceneCachePolicy-B9w3BnaP.js";
3
3
  import { i as I, o as Xt, r as Zt } from "./Logger-dDDGj9Av.js";
4
4
  import { _ as Qt, a as $t, b as en, c as tn, d as nn, f as rn, g as an, h as on, i as sn, l as L, m as cn, n as ln, o as un, p as dn, r as fn, s as pn, t as mn, u as hn, v as gn } from "./BufferLayout-xPRH9jYD.js";
5
5
  import { n as _n, t as vn } from "./EngineIssues-CIZnXHsF.js";
@@ -6884,7 +6884,7 @@ var xl = 100, Sl = 4, Cl = class extends yi {
6884
6884
  count: this.triangleCount
6885
6885
  }), this.materialData.callbacks.onTriangleDataChanged = () => {
6886
6886
  this.triangleShadeAttr && this._uploadTriangles(0, this._triangleRecordCount, { geo: !1 });
6887
- }, this.environment = new Xa(this.scene, this.uniforms, this.renderer), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new Qa(), this._initRenderingState(), this.tempVector2 = new hi(), this.lastCameraMatrix = new $r(), this.lastProjectionMatrix = new $r(), this._seedTick = 0, this._pinSeedToFrame = !1, this.tracedFrames = 0, this.resetCount = 0, this.lastRenderMode = -1, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.lastInteractionModeState = !1, this.cameraChanged = !1, this._lastViewChangeAt = -Infinity, this.updateCompletionThreshold();
6887
+ }, this.environment = new Xa(this.scene, this.uniforms, this.renderer), this.environment.callbacks.onReset = () => this.reset(), this.environment.callbacks.getSceneTextureNodes = () => this.shaderBuilder.getSceneTextureNodes(), this.shaderBuilder = new Qa(), this._initRenderingState(), this.tempVector2 = new hi(), this.lastCameraMatrix = new $r(), this.lastProjectionMatrix = new $r(), this._seedTick = 0, this._pinSeedToFrame = !1, this.tracedFrames = 0, this.resetCount = 0, this.lastRenderMode = -1, this.renderModeChangeTimeout = null, this.renderModeChangeDelay = 50, this.pendingRenderMode = null, this.cameraChanged = !1, this._lastViewChangeAt = -Infinity, this.updateCompletionThreshold();
6888
6888
  }
6889
6889
  _initDataTextures() {
6890
6890
  this.triangleGeoAttr = null, this.triangleShadeAttr = null, this._triangleRecords = null, this._triangleFlat = null, this._triangleRecordCount = 0, this.triangleStorageNode = null, this.triangleCount = 0, this.bvhStorageAttr = null, this._bvhRecords = null, this.bvhStorageNode = null, this.bvhNodeCount = 0, this.directionalLightsData = null, this.pointLightsData = null, this.spotLightsData = null, this.areaLightsData = null, this.goboMaps = null, this.iesProfiles = null, this.blueNoiseReady = Promise.resolve(), this.lightStorageAttr = new Mn(new Float32Array(16), 4), this.lightStorageNode = xr(this.lightStorageAttr, "vec4", 1).toReadOnly(), this._lightBufferRealloc = !1, this._lbvhDataCache = null, this._emissiveDataCache = null, this._bitTrailMapCache = null, this._bitTrailOffset = 0, this._bitTrailLength = 0, this._instanceTable = null, this.spheres = [];
@@ -6939,9 +6939,7 @@ var xl = 100, Sl = 4, Cl = class extends yi {
6939
6939
  },
6940
6940
  onEnter: () => this.emit("pathtracer:interactionStart"),
6941
6941
  onExit: () => this.emit("pathtracer:interactionEnd"),
6942
- onReset: () => {
6943
- this.reset(), this.emit("pathtracer:viewpointChanged");
6944
- }
6942
+ onReset: () => this.reset()
6945
6943
  });
6946
6944
  }
6947
6945
  setupEventListeners() {
@@ -6977,7 +6975,7 @@ var xl = 100, Sl = 4, Cl = class extends yi {
6977
6975
  o > i.array.length && (i.array = new Float32Array(Xi(e, a) * r), this._lightBufferRealloc = !0), o > 0 && i.array.set(t.subarray(0, o)), i.array.fill(0, o), n.value = a;
6978
6976
  }
6979
6977
  reset() {
6980
- this.resetCount++, this.frameCount = 0, this.frame.value = 0, this.hasPreviousAccumulated.value = 0, this.storageTextures.currentTarget = 0, this.updateCompletionThreshold(), this.isComplete = !1, this.performanceMonitor?.reset(), this.lastInteractionModeState = !1, (this._pinSeedToFrame || this._lockstep) && (this._seedTick = 0), this._accumulationLockstep = !!this._lockstep;
6978
+ this.resetCount++, this.frameCount = 0, this.frame.value = 0, this.hasPreviousAccumulated.value = 0, this.storageTextures.currentTarget = 0, this.updateCompletionThreshold(), this.isComplete = !1, this.performanceMonitor?.reset(), (this._pinSeedToFrame || this._lockstep) && (this._seedTick = 0), this._accumulationLockstep = !!this._lockstep;
6981
6979
  }
6982
6980
  setSize(e, t) {
6983
6981
  this.width = e, this.height = t, this.resolution.value.set(e, t), this.createStorageTextures(e, t);
@@ -7263,10 +7261,10 @@ var xl = 100, Sl = 4, Cl = class extends yi {
7263
7261
  }
7264
7262
  _updateAccumulationUniforms(e) {
7265
7263
  let t = this.cameraOptimizer?.isInInteractionMode() ?? !1;
7266
- this.lastInteractionModeState = t, this.accumulationEnabled ? t ? (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0) : (this.accumulationAlpha.value = At(e), this.hasPreviousAccumulated.value = +(e > 0)) : (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0);
7264
+ this.accumulationEnabled ? t ? (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0) : (this.accumulationAlpha.value = At(e), this.hasPreviousAccumulated.value = +(e > 0)) : (this.accumulationAlpha.value = 1, this.hasPreviousAccumulated.value = 0);
7267
7265
  }
7268
7266
  _publishTexturesToContext(e, t) {
7269
- e.setTexture("pathtracer:color", t.color), e.setTexture("pathtracer:normalDepth", t.normalDepth), e.setTexture("pathtracer:albedo", t.albedo), e.setState("pathtracer:samples", this.frameCount), e.setState("interactionMode", this.cameraOptimizer?.isInInteractionMode() ?? !1), e.setState("renderMode", this.renderMode.value);
7267
+ e.setTexture("pathtracer:color", t.color), e.setTexture("pathtracer:normalDepth", t.normalDepth), e.setTexture("pathtracer:albedo", t.albedo), e.setState("pathtracer:samples", this.frameCount), e.setState("renderMode", this.renderMode.value);
7270
7268
  }
7271
7269
  _emitStateEvents() {
7272
7270
  this.emit("pathtracer:frameComplete", {
@@ -1,4 +1,4 @@
1
- import { n as e } from "./BidirectionalIntegrator-CqAilt2I.js";
1
+ import { n as e } from "./BidirectionalIntegrator-BvjRpbTP.js";
2
2
  import { dt as t, i as n, in as r } from "./SolarLimb-bZE6y63S.js";
3
3
  import { r as i } from "./WorkingMatrix-C6y233hT.js";
4
4
  import { StorageInstancedBufferAttribute as a } from "three/webgpu";
@@ -1,7 +1,7 @@
1
1
  import { dt as e } from "./SolarLimb-bZE6y63S.js";
2
- import { At as t, Dt as n, Et as r, ct as i, gt as a, i as o, jt as s, kt as c, lt as l, n as u, r as d, ut as f, vt as p, yt as m } from "./PathTracer-BX4sJLx7.js";
2
+ import { At as t, Dt as n, Et as r, ct as i, gt as a, i as o, jt as s, kt as c, lt as l, n as u, r as d, ut as f, vt as p, yt as m } from "./PathTracer-B9wZPPVL.js";
3
3
  import { n as h, t as g } from "./EngineEvents-CLckhYbL.js";
4
- import { $ as ee, C as te, G as _, M as ne, Q as re, T as v, W as ie, at as y, d as ae, et as oe, f as se, l as ce, nt as le, ot as ue, r as de, rt as fe, tt as pe, u as me, v as he, x as b } from "./sceneCachePolicy-W5PLbzuR.js";
4
+ import { $ as ee, C as te, G as _, M as ne, Q as re, T as v, W as ie, at as y, d as ae, et as oe, f as se, l as ce, nt as le, ot as ue, r as de, rt as fe, tt as pe, u as me, v as he, x as b } from "./sceneCachePolicy-B9w3BnaP.js";
5
5
  import { i as x, r as S } from "./Logger-dDDGj9Av.js";
6
6
  import { f as ge, r as _e } from "./BufferLayout-xPRH9jYD.js";
7
7
  import { i as ve, n as C, t as ye } from "./EngineIssues-CIZnXHsF.js";
@@ -140,7 +140,6 @@ var jt = class {
140
140
  frame: 0,
141
141
  accumulatedFrames: 0,
142
142
  renderMode: 0,
143
- interactionMode: !1,
144
143
  isComplete: !1,
145
144
  tileInfo: null,
146
145
  currentTile: 0,
@@ -1,3 +1,3 @@
1
1
  import { n as e, t } from "../ZipReader-gDSWr0I5.js";
2
- import { n, t as r } from "../ArchiveImporter-iofnC8zB.js";
2
+ import { n, t as r } from "../ArchiveImporter-DYcRXeKE.js";
3
3
  export { r as ARCHIVE_ELEMENT_PROMPT_BYTES, n as ArchiveImporter, t as openZip, e as readZipDirectory };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../BidirectionalIntegrator-CqAilt2I.js";
1
+ import { t as e } from "../BidirectionalIntegrator-BvjRpbTP.js";
2
2
  export { e as BidirectionalIntegrator };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../PhysicalSky-Biv39eTA.js";
1
+ import { t as e } from "../PhysicalSky-DcjItqKi.js";
2
2
  export { e as PhysicalSky };
@@ -1,8 +1,8 @@
1
1
  import "./SolarLimb-bZE6y63S.js";
2
- import { a as e, n as t, o as n, r, t as i } from "./RayzeeRenderer-D8XRKU3A.js";
3
- import { Et as a, ft as o } from "./PathTracer-BX4sJLx7.js";
2
+ import { a as e, n as t, o as n, r, t as i } from "./RayzeeRenderer-p-NeE6E2.js";
3
+ import { Et as a, ft as o } from "./PathTracer-B9wZPPVL.js";
4
4
  import { n as s, t as c } from "./EngineEvents-CLckhYbL.js";
5
- import { G as l, q as u, r as d, x as f, y as p } from "./sceneCachePolicy-W5PLbzuR.js";
5
+ import { G as l, q as u, r as d, x as f, y as p } from "./sceneCachePolicy-B9w3BnaP.js";
6
6
  import { i as m, n as h, r as g, t as _ } from "./Logger-dDDGj9Av.js";
7
7
  import { f as v } from "./BufferLayout-xPRH9jYD.js";
8
8
  import { i as y, n as b, r as x, t as S } from "./EngineIssues-CIZnXHsF.js";