@vitreajs/vitrea 0.20.0 → 0.22.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.
package/dist/index.d.ts CHANGED
@@ -3266,6 +3266,60 @@ interface MaterialProfile {
3266
3266
  * it at every ratio and this anchor is the identity on the landed material.
3267
3267
  */
3268
3268
  readonly collapseTransmission2x: number;
3269
+ /**
3270
+ * **How much of the blurred backdrop's CHROMATICITY the body restores** (W31;
3271
+ * claims §5.161 §5, fitted in §5.164) — a fraction in [0, 1], inert at 0.
3272
+ *
3273
+ * The body is a neutral plate composited over the blurred backdrop, so what a
3274
+ * photograph's hues survive the composite at is `1 − sizedAlpha` — 0.513 on the
3275
+ * macOS 27 light document and 0.095 on the dark one, against a reference that
3276
+ * reads 0.90–0.97 of its own backdrop's chroma on the same cells. Apple's body
3277
+ * at the same LEVEL keeps the hue, which is what a darkening acting on the
3278
+ * backdrop's luma while leaving its chromaticity alone does and what a plate
3279
+ * does not. No constant the material had could close that (W29 Decision Log
3280
+ * 6 (c)): it is a mechanism, and this is the one leaf that adds it.
3281
+ *
3282
+ * Applied immediately after `colour = mix(backdrop, adapted, presentAlpha)`
3283
+ * and before the tint composition, so an author's tint still displaces the
3284
+ * result. The colour is mixed toward `backdrop · (Y / Y_backdrop)` — the
3285
+ * backdrop's chromaticity carried to the colour's OWN linear luma — by this
3286
+ * fraction, so **luma is preserved by construction rather than by
3287
+ * correction**: both endpoints of the mix have linear luma exactly `Y`,
3288
+ * `dot(rgb, (0.2126, 0.7152, 0.0722))` is a linear functional, and the mix has
3289
+ * luma `Y` in exact arithmetic. (OKLab `L` is NOT linear luma, which is why the
3290
+ * formulation is in linear RGB: holding `L` while moving toward a saturated
3291
+ * chromaticity moves `Y` by −22 % at sRGB blue and +10 % at green.) Gamut is
3292
+ * taken by scaling chroma toward the neutral at fixed luma, never by clipping
3293
+ * per channel.
3294
+ *
3295
+ * **No `toneAdapt` gate**, and the reason is measured rather than assumed
3296
+ * (claims §5.161 §11, finding N1). A retention toward the backdrop's
3297
+ * chromaticity is the identity wherever the backdrop is achromatic, and the
3298
+ * only region `backdropToneAdaptation` can fire in on the macOS 27 documents
3299
+ * is `x < backdropToneHigh` = 1e-4 of linear light — achromatic to within the
3300
+ * capture's own quantisation. A future document that re-opens
3301
+ * `backdropToneHigh` must re-examine that, and must read it at a span at or
3302
+ * below `sizeSpanMin` where `backdropToneSizeBias` is not there to help.
3303
+ *
3304
+ * Conditioned by SCHEME (two values across the light and dark documents) and
3305
+ * by POSE: each receded document carries its own, read on the inactive cells,
3306
+ * because the recede's untinted body has no chroma law at all otherwise —
3307
+ * W27c's collapse acts on the tint SEED inside `if (tintK > 0.0)`. The
3308
+ * accessibility documents inherit the light value.
3309
+ *
3310
+ * **Ships at 0, a multiplied zero**: the mix's second term is `0 · (target −
3311
+ * colour)` and `colour` leaves the composite exactly as
3312
+ * `mix(backdrop, adapted, presentAlpha)` produced it, which is why the 34
3313
+ * renderer goldens are byte-identical across the commit that added it and why
3314
+ * `MATERIAL_IDENTITY_TABLE` can drop it from the fingerprint.
3315
+ *
3316
+ * One place it cannot act, declared rather than discovered: on the unsampled
3317
+ * layer path (`flags.x <= 0.5` and not `domMaterial`) the shader overwrites
3318
+ * `colour` with `adapted` and writes a layer for the browser to composite, so
3319
+ * there is no backdrop in hand and no chromaticity to restore toward. The
3320
+ * retention is silently the identity there.
3321
+ */
3322
+ readonly bodyChromaRetention: number;
3269
3323
  /**
3270
3324
  * **The rim that survives the collapse (W23)** — the one mark the collapsed
3271
3325
  * appearance keeps.
@@ -3516,6 +3570,7 @@ interface MaterialProfilePatch {
3516
3570
  readonly backdropToneSizeBias?: number;
3517
3571
  readonly collapseTransmission?: number;
3518
3572
  readonly collapseTransmission2x?: number;
3573
+ readonly bodyChromaRetention?: number;
3519
3574
  readonly rimCollapsed?: number;
3520
3575
  readonly rimCollapsedTinted?: number;
3521
3576
  readonly rimTintChroma?: number;
package/dist/index.js CHANGED
@@ -1092,7 +1092,7 @@ function isHealthy(state) {
1092
1092
 
1093
1093
  // src/renderer-seam.ts
1094
1094
  async function loadWebGPURendererModule() {
1095
- return import('./dist-RJXMCDIH.js');
1095
+ return import('./dist-N437MSRG.js');
1096
1096
  }
1097
1097
  async function loadWebGPURenderer() {
1098
1098
  const { createWebGPURenderer } = await loadWebGPURendererModule();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitreajs/vitrea",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "Framework-agnostic Liquid Glass material runtime: scene model, capability resolution, material policy, accessibility policy.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/SSFSKIM/designer",