rayzee 9.3.3 → 9.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -831,6 +831,7 @@ surface** — pin a version and branch on the strings; they are never renamed or
831
831
  | `refit.shared_geometry` | a deform was asked for on a mesh that shares its triangles, and was skipped |
832
832
  | `denoiser.unavailable` | a requested denoise or upscale produced nothing — the denoiser was not built, OIDN was off while accumulating, or the pass needs a canvas in a document |
833
833
  | `output.source_fallback` | `renderToBuffer( { source: 'display' } )` found no denoised picture and returned the raw accumulation |
834
+ | `output.tonemap_fallback` | `renderToBuffer`'s `'srgb'` bytes were tone-mapped on the CPU, not the GPU — the picture is the same within a level, only slower (a warning: strict does not throw) |
834
835
  | `light.placeholder_skipped` | a `RectAreaLightPlaceholder` node lacked `userData.name` or `userData.type: 'RectAreaLight'`, so no light was made for it |
835
836
 
836
837
  `asset.unreachable` also covers what the engine fetches for itself: OIDN weights, IES profiles and
@@ -1045,7 +1046,9 @@ it back with `renderToBuffer( { source: 'display' } )`. Driving it yourself is t
1045
1046
  `'display'` was asked for, a denoiser is in use, and nothing had published — so a strict host cannot
1046
1047
  ship a noisy image by mistake. Its `'srgb'` bytes are tone-mapped on the GPU — 9 ms at 4096×2160,
1047
1048
  where the CPU pass it replaced took 1.4 s on an M-series Mac and 10 s on a cloud host — and match the
1048
- canvas to within one level (it rounds half a level up); `'linear'` is exact.
1049
+ canvas to within one level (it rounds half a level up); `'linear'` is exact. When the GPU pass is
1050
+ unavailable or fails, the CPU does it instead: the result's `toneMappedOn` says `'cpu'` rather than
1051
+ `'gpu'`, and `output.tonemap_fallback` is recorded with the reason.
1049
1052
 
1050
1053
  Constructing `PathTracerApp` yourself instead: pass `strict: true`; storage is then off unless you
1051
1054
  set it. Outside Chrome, pass `hostMemoryGB`.
@@ -1053,8 +1056,10 @@ set it. Outside Chrome, pass `hostMemoryGB`.
1053
1056
  **Provenance.** `engine.getProvenance()` — also `frame.provenance` from `captureHeadless` — is plain
1054
1057
  JSON naming what produced the image: engine and three.js versions, the profile by name *and* by
1055
1058
  value, the adapter, every live setting with its source, the colour pipeline, the render size and
1056
- samples, and whether it ran headless, strict, deterministic or lockstepped. Store it beside each
1057
- render and "what made this?" has an answer without rendering again.
1059
+ samples, and whether it ran headless, strict, deterministic or lockstepped. `mode.lockstep` says
1060
+ whether the current image was traced in lockstep, so it stays true after `renderUntilComplete` turns
1061
+ lockstep back off. Store it beside each render and "what made this?" has an answer without rendering
1062
+ again.
1058
1063
 
1059
1064
  **Pinning a look.** A change to what a render looks like when a host sets nothing — a default
1060
1065
  setting, a mode preset, a profile's values, light units — is released as a **major**, with the