@displayxr/inline3d 1.42.0 → 1.43.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/CHANGELOG.md +49 -0
- package/dist/call.js +4 -4
- package/js/camera/converge.js +6 -2
- package/js/camera/disparity.js +12 -3
- package/js/camera/pair-cursor.js +107 -12
- package/js/inline3d-model-entry.js +3 -0
- package/js/inline3d-model-playcanvas.js +8 -0
- package/js/inline3d-playcanvas-engine.js +2 -0
- package/js/inline3d-splat-deferred.js +7 -0
- package/js/inline3d-splat-effects.js +16 -0
- package/js/inline3d-splat-playcanvas.js +182 -27
- package/js/inline3d-splat.js +5 -0
- package/model.d.ts +8 -0
- package/package.json +1 -1
- package/splat.d.ts +28 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,55 @@ entry points (`.`, `./three`) are frozen for 1.x, while the **scene subpaths** (
|
|
|
5
5
|
`./splat`, `./model`) are a preview tier whose options may change in any release. Entries below say
|
|
6
6
|
which tier they touch, because that is what tells you whether an upgrade can move your pixels.
|
|
7
7
|
|
|
8
|
+
## 1.43.0 — 2026-10-12
|
|
9
|
+
|
|
10
|
+
### `./splat` (PlayCanvas) — `warmEffect`: no frozen frame when a reveal first plays
|
|
11
|
+
|
|
12
|
+
- **`handle.warmEffect(name, opts)`** compiles the program `playEffect(name, opts)` will need and
|
|
13
|
+
links it in idle time (`KHR_parallel_shader_compile`), so the effect's first frame no longer
|
|
14
|
+
blocks on the link. On a Windows panel `'assemble'` froze for 250–300 ms on every cold session.
|
|
15
|
+
Resolves `true` once warm, `false` when nothing could be warmed (entity scope, custom fragment
|
|
16
|
+
stage). It is also on the deferred handle, so it can be called right after `addSplat`.
|
|
17
|
+
- **`prepareSource(src, { warmEffects: [...] })`** warms effects you will play once that asset is
|
|
18
|
+
in (names or `{ name, opts }`), after its load and its transition pre-warm.
|
|
19
|
+
- docs/splat-effects.md §Warming an effect.
|
|
20
|
+
|
|
21
|
+
### `./splat` + `./model` (PlayCanvas) — `warmEntity`: a glTF's first draw without the freeze
|
|
22
|
+
|
|
23
|
+
- **`handle.warmEntity(entity)`** (splat handle: content under `handle.engine.root`; model
|
|
24
|
+
handle: defaults to the model) compiles the entity's lit programs in idle time through the
|
|
25
|
+
renderer's own `MeshInstance.getShaderInstance`, with its exact pass, light hash, lights, view
|
|
26
|
+
format and the eye cameras' live shader params. It then links them off the frame
|
|
27
|
+
(`KHR_parallel_shader_compile`, time-sliced issuing), so the first draw no longer blocks.
|
|
28
|
+
PlayCanvas links every new lit program synchronously on first draw: a 13-material car froze
|
|
29
|
+
0.8–0.95 s on a panel. On Khronos CarConcept (13 programs), headless: 0 links on show (from 13),
|
|
30
|
+
worst frame 20 ms (from 102 ms with the shader cache warm, 2.69 s cold), pixel-identical. Spark
|
|
31
|
+
and three resolve 0. docs/playcanvas-adapter.md §warmEntity.
|
|
32
|
+
|
|
33
|
+
## 1.42.1 — 2026-10-12
|
|
34
|
+
|
|
35
|
+
Touches the **preview tier** (`./call`, `./camera`) only: auto-convergence and the stereo-tile depth
|
|
36
|
+
cursor are steadier on a wide-baseline camera. No API change.
|
|
37
|
+
|
|
38
|
+
### Auto-convergence holds the face on a 120 mm-baseline camera
|
|
39
|
+
|
|
40
|
+
- Found on the SR laptop's built-in stereo camera (120 mm baseline, grayscale): auto-convergence
|
|
41
|
+
flipped between the face and the background. On a dim frame the sparse block grid (1.5 blocks
|
|
42
|
+
apart) matched ~9 blocks, 3-4 on the face, too few to form the subject mode, so the background
|
|
43
|
+
won. The grid is now one block apart (~36 blocks: the face on every frame, ±1 px instead of ±4),
|
|
44
|
+
and a mode's bin widens with its disparity (10%), so a near face's own relief stays one group.
|
|
45
|
+
- The convergence shift may now reach 20% of the eye width (was 12%): that camera sees a face at
|
|
46
|
+
0.6 m at ~22% of the eye width, ~11% per eye, which left no room to lean in.
|
|
47
|
+
|
|
48
|
+
### Stereo-tile depth cursor: steady at foreground edges
|
|
49
|
+
|
|
50
|
+
- The footprint was matched from the left eye's image only. At a foreground edge the left eye's
|
|
51
|
+
block can sit on the subject while the right eye's sits on the background, and the arrow jumped
|
|
52
|
+
out and back frame to frame. Each footprint point is now matched from BOTH eyes, every match must
|
|
53
|
+
pass a left-right consistency check (matched back, it lands within 1 px of where it started), and
|
|
54
|
+
the nearest value counts only when a second sample agrees; otherwise the arrow stays on the
|
|
55
|
+
glass. Over 20 live frames across a face edge: 200 → 35 large jumps.
|
|
56
|
+
|
|
8
57
|
## 1.42.0 — 2026-10-11
|
|
9
58
|
|
|
10
59
|
Touches the **core** `./three` (`DepthCursor`) and the **preview tier** (`./model`, `./splat`,
|