@ifc-lite/renderer 6.3.3 → 6.5.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/camera-animation.d.ts +7 -1
- package/dist/camera-animation.d.ts.map +1 -1
- package/dist/camera-animation.js +19 -3
- package/dist/camera-animation.js.map +1 -1
- package/dist/camera-fit-geometry.d.ts +47 -0
- package/dist/camera-fit-geometry.d.ts.map +1 -0
- package/dist/camera-fit-geometry.js +44 -0
- package/dist/camera-fit-geometry.js.map +1 -0
- package/dist/camera-framing.d.ts +27 -21
- package/dist/camera-framing.d.ts.map +1 -1
- package/dist/camera-framing.js +47 -44
- package/dist/camera-framing.js.map +1 -1
- package/dist/camera-preset-view.d.ts +18 -0
- package/dist/camera-preset-view.d.ts.map +1 -1
- package/dist/camera-preset-view.js +42 -0
- package/dist/camera-preset-view.js.map +1 -1
- package/dist/camera.d.ts +14 -1
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +14 -2
- package/dist/camera.js.map +1 -1
- package/dist/clip-types.d.ts +35 -0
- package/dist/clip-types.d.ts.map +1 -0
- package/dist/clip-types.js +5 -0
- package/dist/clip-types.js.map +1 -0
- package/dist/device-recovery.js +11 -1
- package/dist/device-recovery.js.map +1 -1
- package/dist/device.d.ts +4 -4
- package/dist/device.js +9 -9
- package/dist/device.js.map +1 -1
- package/dist/extra-clip-planes.d.ts +57 -0
- package/dist/extra-clip-planes.d.ts.map +1 -0
- package/dist/extra-clip-planes.js +161 -0
- package/dist/extra-clip-planes.js.map +1 -0
- package/dist/gpu-counters.d.ts +4 -2
- package/dist/gpu-counters.d.ts.map +1 -1
- package/dist/gpu-counters.js +9 -6
- package/dist/gpu-counters.js.map +1 -1
- package/dist/index.d.ts +19 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +69 -90
- package/dist/index.js.map +1 -1
- package/dist/mesh-rte-uniforms.d.ts +7 -3
- package/dist/mesh-rte-uniforms.d.ts.map +1 -1
- package/dist/mesh-rte-uniforms.js +16 -2
- package/dist/mesh-rte-uniforms.js.map +1 -1
- package/dist/opaque-visibility-commands.d.ts +3 -0
- package/dist/opaque-visibility-commands.d.ts.map +1 -0
- package/dist/opaque-visibility-commands.js +11 -0
- package/dist/opaque-visibility-commands.js.map +1 -0
- package/dist/opaque-visibility-pass.d.ts +37 -0
- package/dist/opaque-visibility-pass.d.ts.map +1 -0
- package/dist/opaque-visibility-pass.js +230 -0
- package/dist/opaque-visibility-pass.js.map +1 -0
- package/dist/pick-types.d.ts +5 -1
- package/dist/pick-types.d.ts.map +1 -1
- package/dist/picker-rte-uniforms.d.ts +1 -1
- package/dist/picker-rte-uniforms.d.ts.map +1 -1
- package/dist/picker-rte-uniforms.js +4 -2
- package/dist/picker-rte-uniforms.js.map +1 -1
- package/dist/picker-shaders.d.ts +5 -0
- package/dist/picker-shaders.d.ts.map +1 -0
- package/dist/picker-shaders.js +157 -0
- package/dist/picker-shaders.js.map +1 -0
- package/dist/picker.d.ts +3 -0
- package/dist/picker.d.ts.map +1 -1
- package/dist/picker.js +43 -133
- package/dist/picker.js.map +1 -1
- package/dist/pipeline.d.ts +5 -9
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +34 -29
- package/dist/pipeline.js.map +1 -1
- package/dist/point-picker.d.ts +2 -1
- package/dist/point-picker.d.ts.map +1 -1
- package/dist/point-picker.js +12 -4
- package/dist/point-picker.js.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.d.ts +4 -4
- package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.js +1 -1
- package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
- package/dist/pointcloud/point-cloud-uniforms.d.ts +3 -1
- package/dist/pointcloud/point-cloud-uniforms.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-uniforms.js +3 -1
- package/dist/pointcloud/point-cloud-uniforms.js.map +1 -1
- package/dist/pointcloud/point-pipeline.d.ts +3 -1
- package/dist/pointcloud/point-pipeline.d.ts.map +1 -1
- package/dist/pointcloud/point-pipeline.js +4 -1
- package/dist/pointcloud/point-pipeline.js.map +1 -1
- package/dist/pointcloud/point-shader.wgsl.d.ts +1 -1
- package/dist/pointcloud/point-shader.wgsl.d.ts.map +1 -1
- package/dist/pointcloud/point-shader.wgsl.js +8 -0
- package/dist/pointcloud/point-shader.wgsl.js.map +1 -1
- package/dist/post-pass-chain.d.ts +1 -0
- package/dist/post-pass-chain.d.ts.map +1 -1
- package/dist/post-pass-chain.js +1 -0
- package/dist/post-pass-chain.js.map +1 -1
- package/dist/quantized-lifecycle.d.ts +6 -0
- package/dist/quantized-lifecycle.d.ts.map +1 -0
- package/dist/quantized-lifecycle.js +19 -0
- package/dist/quantized-lifecycle.js.map +1 -0
- package/dist/raycast-engine.d.ts.map +1 -1
- package/dist/raycast-engine.js +3 -2
- package/dist/raycast-engine.js.map +1 -1
- package/dist/render-section-draw.d.ts +5 -0
- package/dist/render-section-draw.d.ts.map +1 -1
- package/dist/render-section-draw.js +59 -25
- package/dist/render-section-draw.js.map +1 -1
- package/dist/render-section-plane.d.ts +5 -33
- package/dist/render-section-plane.d.ts.map +1 -1
- package/dist/render-section-plane.js +8 -175
- package/dist/render-section-plane.js.map +1 -1
- package/dist/renderer-frame-timing.d.ts +1 -0
- package/dist/renderer-frame-timing.d.ts.map +1 -1
- package/dist/renderer-frame-timing.js +8 -1
- package/dist/renderer-frame-timing.js.map +1 -1
- package/dist/renderer-overlays.d.ts +8 -2
- package/dist/renderer-overlays.d.ts.map +1 -1
- package/dist/renderer-overlays.js +22 -45
- package/dist/renderer-overlays.js.map +1 -1
- package/dist/scene-raycaster.d.ts +1 -1
- package/dist/scene-raycaster.d.ts.map +1 -1
- package/dist/scene-raycaster.js +18 -44
- package/dist/scene-raycaster.js.map +1 -1
- package/dist/scene-rect-select.d.ts.map +1 -1
- package/dist/scene-rect-select.js +2 -1
- package/dist/scene-rect-select.js.map +1 -1
- package/dist/section-2d-lift.d.ts +25 -0
- package/dist/section-2d-lift.d.ts.map +1 -1
- package/dist/section-2d-lift.js +35 -0
- package/dist/section-2d-lift.js.map +1 -1
- package/dist/section-2d-overlay.d.ts +41 -12
- package/dist/section-2d-overlay.d.ts.map +1 -1
- package/dist/section-2d-overlay.js +121 -179
- package/dist/section-2d-overlay.js.map +1 -1
- package/dist/section-2d-types.d.ts +2 -0
- package/dist/section-2d-types.d.ts.map +1 -1
- package/dist/section-cap-geometry.d.ts +33 -0
- package/dist/section-cap-geometry.d.ts.map +1 -0
- package/dist/section-cap-geometry.js +137 -0
- package/dist/section-cap-geometry.js.map +1 -0
- package/dist/section-cap-set.d.ts +60 -0
- package/dist/section-cap-set.d.ts.map +1 -0
- package/dist/section-cap-set.js +212 -0
- package/dist/section-cap-set.js.map +1 -0
- package/dist/section-cap-style.d.ts +3 -0
- package/dist/section-cap-style.d.ts.map +1 -1
- package/dist/section-cap-style.js.map +1 -1
- package/dist/section-cap-upload.d.ts +16 -0
- package/dist/section-cap-upload.d.ts.map +1 -0
- package/dist/section-cap-upload.js +52 -0
- package/dist/section-cap-upload.js.map +1 -0
- package/dist/section-exclusions.d.ts +26 -0
- package/dist/section-exclusions.d.ts.map +1 -0
- package/dist/section-exclusions.js +95 -0
- package/dist/section-exclusions.js.map +1 -0
- package/dist/section-plane-frames.d.ts +48 -0
- package/dist/section-plane-frames.d.ts.map +1 -0
- package/dist/section-plane-frames.js +49 -0
- package/dist/section-plane-frames.js.map +1 -0
- package/dist/section-plane-resolve.d.ts +63 -0
- package/dist/section-plane-resolve.d.ts.map +1 -0
- package/dist/section-plane-resolve.js +200 -0
- package/dist/section-plane-resolve.js.map +1 -0
- package/dist/selection-mask-pass.d.ts +2 -0
- package/dist/selection-mask-pass.d.ts.map +1 -1
- package/dist/selection-mask-pass.js +16 -4
- package/dist/selection-mask-pass.js.map +1 -1
- package/dist/selection-mask-pipelines.d.ts +5 -1
- package/dist/selection-mask-pipelines.d.ts.map +1 -1
- package/dist/selection-mask-pipelines.js +27 -3
- package/dist/selection-mask-pipelines.js.map +1 -1
- package/dist/selection-outline-frame.d.ts +3 -1
- package/dist/selection-outline-frame.d.ts.map +1 -1
- package/dist/selection-outline-frame.js +2 -1
- package/dist/selection-outline-frame.js.map +1 -1
- package/dist/shaders/depth-nudge.wgsl.d.ts +2 -2
- package/dist/shaders/depth-nudge.wgsl.d.ts.map +1 -1
- package/dist/shaders/depth-nudge.wgsl.js +1 -18
- package/dist/shaders/depth-nudge.wgsl.js.map +1 -1
- package/dist/shaders/main.wgsl.d.ts +1 -1
- package/dist/shaders/main.wgsl.d.ts.map +1 -1
- package/dist/shaders/main.wgsl.js +9 -1
- package/dist/shaders/main.wgsl.js.map +1 -1
- package/dist/shaders/mesh-uniforms.wgsl.d.ts +1 -1
- package/dist/shaders/mesh-uniforms.wgsl.d.ts.map +1 -1
- package/dist/shaders/mesh-uniforms.wgsl.js +11 -3
- package/dist/shaders/mesh-uniforms.wgsl.js.map +1 -1
- package/dist/shaders/opaque-visibility.wgsl.d.ts +11 -0
- package/dist/shaders/opaque-visibility.wgsl.d.ts.map +1 -0
- package/dist/shaders/opaque-visibility.wgsl.js +55 -0
- package/dist/shaders/opaque-visibility.wgsl.js.map +1 -0
- package/dist/shaders/section-2d-overlay.wgsl.d.ts +11 -5
- package/dist/shaders/section-2d-overlay.wgsl.d.ts.map +1 -1
- package/dist/shaders/section-2d-overlay.wgsl.js +31 -5
- package/dist/shaders/section-2d-overlay.wgsl.js.map +1 -1
- package/dist/shaders/selection-mask.wgsl.d.ts +1 -1
- package/dist/shaders/selection-mask.wgsl.d.ts.map +1 -1
- package/dist/shaders/selection-mask.wgsl.js +10 -4
- package/dist/shaders/selection-mask.wgsl.js.map +1 -1
- package/dist/shaders/shadow.wgsl.d.ts +1 -1
- package/dist/shaders/shadow.wgsl.d.ts.map +1 -1
- package/dist/shaders/shadow.wgsl.js +22 -7
- package/dist/shaders/shadow.wgsl.js.map +1 -1
- package/dist/shaders/symbolic-overlay.wgsl.d.ts +1 -1
- package/dist/shaders/symbolic-overlay.wgsl.d.ts.map +1 -1
- package/dist/shadow-occluders.d.ts.map +1 -1
- package/dist/shadow-occluders.js +4 -0
- package/dist/shadow-occluders.js.map +1 -1
- package/dist/shadow-pass.d.ts +2 -5
- package/dist/shadow-pass.d.ts.map +1 -1
- package/dist/shadow-pass.js +17 -17
- package/dist/shadow-pass.js.map +1 -1
- package/dist/shadow-types.d.ts +7 -0
- package/dist/shadow-types.d.ts.map +1 -1
- package/dist/shadow-types.js.map +1 -1
- package/dist/source-curve-clipping.d.ts.map +1 -1
- package/dist/source-curve-clipping.js +7 -1
- package/dist/source-curve-clipping.js.map +1 -1
- package/dist/source-curve-snap.d.ts.map +1 -1
- package/dist/source-curve-snap.js +2 -1
- package/dist/source-curve-snap.js.map +1 -1
- package/dist/types.d.ts +12 -16
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,42 +1,9 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* This is the quantity a section slider has to travel over, because the plane
|
|
9
|
-
* the shader clips against is `dot(worldPos, normal) = distance`. Reading the
|
|
10
|
-
* range off one axis of the AABB instead is only the same quantity when
|
|
11
|
-
* `normal` IS that unit axis; on a rotated building it is short by up to
|
|
12
|
-
* `(1 - cos45) * extent` at each end, so the slider's 0-100% cannot reach the
|
|
13
|
-
* model's extremes (a 40 x 20 footprint cut on `side` at 45 degrees spans 40
|
|
14
|
-
* units where the true extent along the normal is 42.426).
|
|
15
|
-
*
|
|
16
|
-
* When `normal` IS a unit axis the loop collapses to that axis's extent
|
|
17
|
-
* bit-for-bit (`x * 1 + y * 0 + z * 0 === x` for finite inputs), so unrotated
|
|
18
|
-
* models are unaffected.
|
|
19
|
-
*
|
|
20
|
-
* Exported so the 2D cap upload can share the one formula instead of carrying
|
|
21
|
-
* a second copy — see `RendererOverlays.uploadSection2DOverlay`, which passes
|
|
22
|
-
* the un-rotated axis normal on purpose.
|
|
23
|
-
*/
|
|
24
|
-
export function projectedBoundsRange(boundsMin, boundsMax, normal) {
|
|
25
|
-
let min = Infinity;
|
|
26
|
-
let max = -Infinity;
|
|
27
|
-
for (const x of [boundsMin.x, boundsMax.x]) {
|
|
28
|
-
for (const y of [boundsMin.y, boundsMax.y]) {
|
|
29
|
-
for (const z of [boundsMin.z, boundsMax.z]) {
|
|
30
|
-
const d = x * normal[0] + y * normal[1] + z * normal[2];
|
|
31
|
-
if (d < min)
|
|
32
|
-
min = d;
|
|
33
|
-
if (d > max)
|
|
34
|
-
max = d;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return { min, max };
|
|
39
|
-
}
|
|
4
|
+
import { MAX_EXTRA_CLIP_PLANES } from './extra-clip-planes.js';
|
|
5
|
+
import { projectedBoundsRange, resolveExtraSectionPlanes, resolveSectionPlaneGeometry } from './section-plane-resolve.js';
|
|
6
|
+
export { projectedBoundsRange };
|
|
40
7
|
/**
|
|
41
8
|
* Resolve this frame's clip plane and the bounds it is expressed in.
|
|
42
9
|
*
|
|
@@ -58,8 +25,8 @@ export function resolveSectionPlaneFrame(input) {
|
|
|
58
25
|
enabled: true,
|
|
59
26
|
};
|
|
60
27
|
}
|
|
61
|
-
if (!options.sectionPlane) {
|
|
62
|
-
return { sectionPlaneData, bounds: null };
|
|
28
|
+
if (!options.sectionPlane && !options.extraSectionPlanes?.length) {
|
|
29
|
+
return { sectionPlaneData, bounds: null, extraPlanes: [] };
|
|
63
30
|
}
|
|
64
31
|
// Get model bounds from batched meshes. We deliberately EXCLUDE
|
|
65
32
|
// individual meshes (`this.scene.getMeshes()`) here: those are
|
|
@@ -126,147 +93,12 @@ export function resolveSectionPlaneFrame(input) {
|
|
|
126
93
|
enabled: true,
|
|
127
94
|
};
|
|
128
95
|
}
|
|
129
|
-
if (options.sectionPlane
|
|
96
|
+
if (options.sectionPlane?.enabled) {
|
|
130
97
|
// Explicit normal + distance override (face-pick / arbitrary
|
|
131
98
|
// plane, issue #243). Used verbatim: no axis mapping, no
|
|
132
99
|
// position slider, no building rotation — the caller already
|
|
133
100
|
// has the plane in world space.
|
|
134
|
-
const
|
|
135
|
-
const explicitDistance = options.sectionPlane.distance;
|
|
136
|
-
// `SectionPlane.normal` / `.distance` are caller-supplied public
|
|
137
|
-
// `RenderOptions` surface (the face-pick / arbitrary-plane path from
|
|
138
|
-
// #243), so every component has to clear finiteness before it can reach
|
|
139
|
-
// the clip uniform and `_activePickSection` (#2442). Only `distance`
|
|
140
|
-
// used to be checked: an `Infinity` component then made `len` infinite,
|
|
141
|
-
// `len > 1e-6` true, and `normal = [NaN, NaN, NaN]` was written straight
|
|
142
|
-
// into both the draw and the GPU pick. A rejected plane degrades to the
|
|
143
|
-
// cardinal-axis preset below, which is always a usable plane.
|
|
144
|
-
const hasExplicitPlane = explicitNormal !== undefined &&
|
|
145
|
-
explicitDistance !== undefined &&
|
|
146
|
-
Number.isFinite(explicitDistance) &&
|
|
147
|
-
Number.isFinite(explicitNormal[0]) &&
|
|
148
|
-
Number.isFinite(explicitNormal[1]) &&
|
|
149
|
-
Number.isFinite(explicitNormal[2]);
|
|
150
|
-
let normal;
|
|
151
|
-
let distance;
|
|
152
|
-
if (hasExplicitPlane) {
|
|
153
|
-
// Defensive renormalisation in case the caller passed a
|
|
154
|
-
// non-unit vector (e.g. mesh face normals quantised by
|
|
155
|
-
// the geometry pipeline).
|
|
156
|
-
const nx = explicitNormal[0];
|
|
157
|
-
const ny = explicitNormal[1];
|
|
158
|
-
const nz = explicitNormal[2];
|
|
159
|
-
const len = Math.sqrt(nx * nx + ny * ny + nz * nz);
|
|
160
|
-
// Finite components are not enough: `1e200` squares to `Infinity`,
|
|
161
|
-
// so `len` can still overflow and `len > 1e-6` is true for it,
|
|
162
|
-
// yielding `normal = [0, 0, 0]` and `distance = 0` (#2442). Both the
|
|
163
|
-
// overflow and the degenerate near-zero vector take the documented
|
|
164
|
-
// [0, 1, 0] fallback.
|
|
165
|
-
if (Number.isFinite(len) && len > 1e-6) {
|
|
166
|
-
normal = [nx / len, ny / len, nz / len];
|
|
167
|
-
distance = explicitDistance / len;
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
normal = [0, 1, 0];
|
|
171
|
-
distance = explicitDistance;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
// Cardinal-axis preset path (unchanged behaviour).
|
|
176
|
-
// down = Y axis (horizontal cut), front = Z axis, side = X axis
|
|
177
|
-
normal = [0, 0, 0];
|
|
178
|
-
if (options.sectionPlane.axis === 'side')
|
|
179
|
-
normal[0] = 1; // X axis
|
|
180
|
-
else if (options.sectionPlane.axis === 'down')
|
|
181
|
-
normal[1] = 1; // Y axis (horizontal)
|
|
182
|
-
else
|
|
183
|
-
normal[2] = 1; // Z axis (front)
|
|
184
|
-
// Apply building rotation if present (rotate normal around Y axis)
|
|
185
|
-
// Building rotation is in X-Y plane (Z is up in IFC, Y is up in WebGL)
|
|
186
|
-
//
|
|
187
|
-
// The angle must also be FINITE (#2442). It is model-derived, not
|
|
188
|
-
// authored by us — `rotation_angle_about_z` on the resolved IfcSite
|
|
189
|
-
// placement — and a malformed placement direction whose components
|
|
190
|
-
// overflow to Infinity (`IFCDIRECTION((0.,0.,1.0E400))`, which the
|
|
191
|
-
// STEP tokenizer parses to `inf`) normalises to a NaN matrix, so
|
|
192
|
-
// the pre-pass emits `atan2(NaN, NaN)` = NaN and nothing on the way
|
|
193
|
-
// to `RenderOptions` filters it. `Math.cos` is NaN for both NaN and
|
|
194
|
-
// Infinity, and the `rlen > 0.0001` guard below is FALSE for NaN,
|
|
195
|
-
// so it would reach `projectedBoundsRange`, `distance` and the clip
|
|
196
|
-
// uniform — the failure #2442 fixed on the explicit-plane sibling.
|
|
197
|
-
// Non-finite degrades to no rotation: the cardinal preset the axis
|
|
198
|
-
// already describes.
|
|
199
|
-
if (options.buildingRotation !== undefined &&
|
|
200
|
-
options.buildingRotation !== 0 &&
|
|
201
|
-
Number.isFinite(options.buildingRotation)) {
|
|
202
|
-
const cosR = Math.cos(options.buildingRotation);
|
|
203
|
-
const sinR = Math.sin(options.buildingRotation);
|
|
204
|
-
// Rotate normal vector around Y axis (vertical)
|
|
205
|
-
// For X-Z plane rotation: x' = x*cos - z*sin, z' = x*sin + z*cos, y' = y
|
|
206
|
-
const x = normal[0];
|
|
207
|
-
const z = normal[2];
|
|
208
|
-
normal[0] = x * cosR - z * sinR;
|
|
209
|
-
normal[2] = x * sinR + z * cosR;
|
|
210
|
-
// Normalize to maintain unit length
|
|
211
|
-
const rlen = Math.sqrt(normal[0] * normal[0] + normal[1] * normal[1] + normal[2] * normal[2]);
|
|
212
|
-
if (rlen > 0.0001) {
|
|
213
|
-
normal[0] /= rlen;
|
|
214
|
-
normal[1] /= rlen;
|
|
215
|
-
normal[2] /= rlen;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// Get the range the slider travels over. The renderer's own `boundsMin/Max`
|
|
219
|
-
// are computed from the GPU vertex buffers this frame, so
|
|
220
|
-
// they are guaranteed to be in the same Y-up world space as
|
|
221
|
-
// `input.worldPos` in the shader. `options.sectionPlane.min/max`
|
|
222
|
-
// comes from the UI via `coordinateInfo.shiftedBounds` and can
|
|
223
|
-
// be stale during streaming or outright wrong during model
|
|
224
|
-
// load (initialised to {0,0,0} before the first bounds update)
|
|
225
|
-
// — using those directly was the cause of the "slider moves
|
|
226
|
-
// 1% and the whole model disappears" bug.
|
|
227
|
-
//
|
|
228
|
-
// Policy: always use the renderer's own bounds for the Y-up
|
|
229
|
-
// range. Only honour the UI override when it is a valid,
|
|
230
|
-
// non-degenerate range that lies INSIDE the actual mesh
|
|
231
|
-
// bounds (e.g. storey filtering from the level picker).
|
|
232
|
-
//
|
|
233
|
-
// The range must be measured along the normal the plane actually
|
|
234
|
-
// cuts with, not along the cardinal axis it was derived from: the
|
|
235
|
-
// shader clips on `dot(worldPos, normal)`, so on a rotated building
|
|
236
|
-
// an axis-aligned extent leaves an unreachable wedge at each end of
|
|
237
|
-
// the slider (#2447). `projectedBoundsRange` is the axis extent
|
|
238
|
-
// exactly when the normal is still that unit axis.
|
|
239
|
-
const projected = projectedBoundsRange(boundsMin, boundsMax, normal);
|
|
240
|
-
let minVal = projected.min;
|
|
241
|
-
let maxVal = projected.max;
|
|
242
|
-
// The UI override arrives in AXIS-ALIGNED elevation units
|
|
243
|
-
// (`coordinateInfo.shiftedBounds`), while the range above is a plane
|
|
244
|
-
// distance. Those coincide only while the resolved normal is still
|
|
245
|
-
// the positive unit axis the override is expressed along — true for
|
|
246
|
-
// any unrotated model, and true for `axis: 'down'` at every rotation
|
|
247
|
-
// (a Y-axis building rotation leaves [0,1,0] fixed). Outside that,
|
|
248
|
-
// honouring the override would silently compare metres-along-Y
|
|
249
|
-
// against a distance-along-a-tilted-normal, so it is skipped and the
|
|
250
|
-
// full projected range stands (#2447).
|
|
251
|
-
const axisComponent = options.sectionPlane.axis === 'side' ? 0 : options.sectionPlane.axis === 'down' ? 1 : 2;
|
|
252
|
-
const overrideUnitsMatch = Math.abs(normal[axisComponent] - 1) <= 1e-6 &&
|
|
253
|
-
Math.abs(normal[(axisComponent + 1) % 3]) <= 1e-6 &&
|
|
254
|
-
Math.abs(normal[(axisComponent + 2) % 3]) <= 1e-6;
|
|
255
|
-
const uiMin = options.sectionPlane.min;
|
|
256
|
-
const uiMax = options.sectionPlane.max;
|
|
257
|
-
if (overrideUnitsMatch &&
|
|
258
|
-
Number.isFinite(uiMin) &&
|
|
259
|
-
Number.isFinite(uiMax) &&
|
|
260
|
-
uiMax - uiMin > 1e-6 &&
|
|
261
|
-
uiMin >= minVal - 1e-3 &&
|
|
262
|
-
uiMax <= maxVal + 1e-3) {
|
|
263
|
-
minVal = uiMin;
|
|
264
|
-
maxVal = uiMax;
|
|
265
|
-
}
|
|
266
|
-
// Calculate plane distance from position percentage
|
|
267
|
-
const range = maxVal - minVal;
|
|
268
|
-
distance = minVal + (options.sectionPlane.position / 100) * range;
|
|
269
|
-
}
|
|
101
|
+
const { normal, distance, explicit: hasExplicitPlane } = resolveSectionPlaneGeometry(options.sectionPlane, boundsMin, boundsMax, options.buildingRotation);
|
|
270
102
|
sectionPlaneData = { normal, distance, enabled: true };
|
|
271
103
|
// One-shot diagnostic: when section first becomes active,
|
|
272
104
|
// log the exact bounds + plane the shader will use. This
|
|
@@ -293,6 +125,7 @@ export function resolveSectionPlaneFrame(input) {
|
|
|
293
125
|
return {
|
|
294
126
|
sectionPlaneData,
|
|
295
127
|
bounds: { min: boundsMin, max: boundsMax },
|
|
128
|
+
extraPlanes: resolveExtraSectionPlanes(options.extraSectionPlanes, boundsMin, boundsMax, options.buildingRotation, MAX_EXTRA_CLIP_PLANES),
|
|
296
129
|
};
|
|
297
130
|
}
|
|
298
131
|
//# sourceMappingURL=render-section-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-section-plane.js","sourceRoot":"","sources":["../src/render-section-plane.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"render-section-plane.js","sourceRoot":"","sources":["../src/render-section-plane.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,6 @@ export declare function readRendererGpuTiming(owner: object): RendererGpuTimingS
|
|
|
17
17
|
export declare function beginRendererGpuTiming(owner: object, device: GPUDevice, encoder: GPUCommandEncoder): void;
|
|
18
18
|
/** Every production render-pass descriptor uses this same optional timing seam. */
|
|
19
19
|
export declare function renderPassTimestampWrites(encoder: GPUCommandEncoder, label: string): GPURenderPassTimestampWrites | undefined;
|
|
20
|
+
export declare function opaqueVisibilityTimestampWrites(main: GPUCommandEncoder, before: GPUCommandEncoder): GPURenderPassTimestampWrites | undefined;
|
|
20
21
|
export declare function submitRendererGpuTiming(owner: object, device: GPUDevice, encoder: GPUCommandEncoder): void;
|
|
21
22
|
//# sourceMappingURL=renderer-frame-timing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-frame-timing.d.ts","sourceRoot":"","sources":["../src/renderer-frame-timing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer-frame-timing.d.ts","sourceRoot":"","sources":["../src/renderer-frame-timing.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,aAAa,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;CACnE;AAgBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAIhF;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ5D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAK9E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAezG;AAED,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,4BAA4B,GAAG,SAAS,CAU7H;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,GAAG,4BAA4B,GAAG,SAAS,CAI5I;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAI1G"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
/** Bounded, opt-in renderer timing ownership (#6975). No instrumentation globals. */
|
|
5
5
|
import { GpuFrameTimingRecorder } from './frame-timing-gpu.js';
|
|
6
6
|
import { passDurationsMs } from './frame-timing.js';
|
|
7
|
+
import { takeOpaqueVisibilityCommands } from './opaque-visibility-commands.js';
|
|
7
8
|
const MAX_SAMPLES = 256;
|
|
8
9
|
const MAX_PASSES = 16;
|
|
9
10
|
const owners = new WeakMap();
|
|
@@ -64,9 +65,15 @@ export function renderPassTimestampWrites(encoder, label) {
|
|
|
64
65
|
}
|
|
65
66
|
return writes ?? undefined;
|
|
66
67
|
}
|
|
68
|
+
export function opaqueVisibilityTimestampWrites(main, before) {
|
|
69
|
+
const frame = encoders.get(main);
|
|
70
|
+
if (frame)
|
|
71
|
+
encoders.set(before, frame);
|
|
72
|
+
return renderPassTimestampWrites(before, 'opaque-visibility');
|
|
73
|
+
}
|
|
67
74
|
export function submitRendererGpuTiming(owner, device, encoder) {
|
|
68
75
|
encoders.get(encoder)?.recorder.endFrame(encoder);
|
|
69
|
-
device.queue.submit([encoder.finish()]);
|
|
76
|
+
device.queue.submit([...takeOpaqueVisibilityCommands(encoder), encoder.finish()]);
|
|
70
77
|
settleRendererGpuTiming(owner, encoder);
|
|
71
78
|
}
|
|
72
79
|
/** Call immediately after submit; does not wait for readback on the render path. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-frame-timing.js","sourceRoot":"","sources":["../src/renderer-frame-timing.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,qFAAqF;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer-frame-timing.js","sourceRoot":"","sources":["../src/renderer-frame-timing.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ import type { SymbolicFillInput, SymbolicTextInput } from './symbolic-overlay-pi
|
|
|
42
42
|
import { type ModelBounds } from './render-section-draw.js';
|
|
43
43
|
import type { RelativeToEyeFrame } from './relative-to-eye.js';
|
|
44
44
|
import type { RenderOptions } from './types.js';
|
|
45
|
+
import type { ExtraClipPlane } from './clip-types.js';
|
|
45
46
|
import type { DeviceRecoveryOmission } from './device-recovery.js';
|
|
46
47
|
import { type LineVertices } from './section-2d-line-buffer.js';
|
|
47
48
|
import type { OverlayTheme } from './overlay-theme.js';
|
|
@@ -77,6 +78,9 @@ export interface OverlayDrawContext {
|
|
|
77
78
|
relativeToEyeFrame?: RelativeToEyeFrame;
|
|
78
79
|
rteViewProj?: Float32Array;
|
|
79
80
|
rteCamera?: readonly [number, number, number];
|
|
81
|
+
/** See `SectionDrawContext`: the cutting planes beyond the first, and the primary as a clip. */
|
|
82
|
+
extraPlanes?: readonly ExtraClipPlane[];
|
|
83
|
+
primaryPlane?: ExtraClipPlane | null;
|
|
80
84
|
}
|
|
81
85
|
export declare class RendererOverlays {
|
|
82
86
|
private readonly host;
|
|
@@ -110,9 +114,11 @@ export declare class RendererOverlays {
|
|
|
110
114
|
origin: [number, number, number];
|
|
111
115
|
tangent: [number, number, number];
|
|
112
116
|
bitangent: [number, number, number];
|
|
113
|
-
}): void;
|
|
117
|
+
}, planeId?: string): void;
|
|
114
118
|
/** See `Renderer.clearSection2DOverlay` for the published contract. */
|
|
115
|
-
clearSection2DOverlay(): void;
|
|
119
|
+
clearSection2DOverlay(planeId?: string): void;
|
|
120
|
+
/** Drop the caps of every cutting plane beyond the first whose id is not in `keep` (#7545). */
|
|
121
|
+
clearSection2DExtraOverlays(keep?: readonly string[]): void;
|
|
116
122
|
/** See `Renderer.setOverlayTheme` for the published contract. */
|
|
117
123
|
setTheme(theme: OverlayTheme): void;
|
|
118
124
|
/** See `Renderer.setLineOverlay` for the published contract. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-overlays.d.ts","sourceRoot":"","sources":["../src/renderer-overlays.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAGH,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAI5F,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,qEAAqE;IACrE,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,sEAAsE;IACtE,iCAAiC,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjF,uEAAuE;IACvE,yCAAyC,CACrC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,MAAM,GACf,IAAI,CAAC;IACR,gEAAgE;IAChE,qBAAqB,IAAI,IAAI,CAAC;IAC9B,4DAA4D;IAC5D,aAAa,IAAI,IAAI,CAAC;CACzB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,iEAAiE;IACjE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer-overlays.d.ts","sourceRoot":"","sources":["../src/renderer-overlays.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { Section2DOverlayRenderer, LINE_OVERLAY_CHANNELS, } from './section-2d-o
|
|
|
6
6
|
import { SymbolicOverlays } from './renderer-symbolic-overlays.js';
|
|
7
7
|
import { ClashSolidPipeline } from './clash-solid-pipeline.js';
|
|
8
8
|
import { anchoredAabbEdgeLineList } from './aabb-edges.js';
|
|
9
|
-
import {
|
|
9
|
+
import { uploadSectionCap } from './section-cap-upload.js';
|
|
10
10
|
import { drawSectionOverlays } from './render-section-draw.js';
|
|
11
11
|
import { lineVertexFloatCount } from './section-2d-line-buffer.js';
|
|
12
12
|
import { OverlayThemeApplier } from './overlay-theme-uniforms.js';
|
|
@@ -136,55 +136,32 @@ export class RendererOverlays {
|
|
|
136
136
|
/** See `Renderer.uploadSection2DOverlay` for the published contract. */
|
|
137
137
|
uploadSection2DOverlay(polygons, lines, axis, position, // 0-100 percentage
|
|
138
138
|
sectionRange, // Same storey-based range as section plane
|
|
139
|
-
flipped = false, customPlane) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// The two early returns below leave the geometry untouched, so they
|
|
144
|
-
// correctly ask for nothing — matching `setLineOverlay` before init.
|
|
145
|
-
if (!this.section2DOverlayRenderer)
|
|
146
|
-
return;
|
|
147
|
-
if (customPlane) {
|
|
148
|
-
// Custom-plane path: planePosition / axis are unused — the
|
|
149
|
-
// basis the cap shader needs travels in `customPlane`. We pass
|
|
150
|
-
// 0 for `planePosition` and the existing `axis` so the cardinal
|
|
151
|
-
// shader code path that callers depend on (e.g. legacy SVG
|
|
152
|
-
// export) keeps working when customPlane is omitted.
|
|
153
|
-
this.section2DOverlayRenderer.uploadDrawing(polygons, lines, axis, 0, flipped, customPlane);
|
|
139
|
+
flipped = false, customPlane, planeId) {
|
|
140
|
+
const overlay = this.section2DOverlayRenderer;
|
|
141
|
+
if (overlay && uploadSectionCap(overlay, this.host.getModelBounds(), planeId, polygons, lines, axis, position, sectionRange, flipped, customPlane)) {
|
|
142
|
+
// Dirty-flag gated rendering: a change to overlay geometry must ask for a frame (#2442).
|
|
154
143
|
this.host.requestRender();
|
|
155
|
-
return;
|
|
156
144
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
// `planePosition` is not a plane distance here: `transform2Dto3D` lifts
|
|
163
|
-
// the cardinal drawing onto an AXIS-ALIGNED plane at that world
|
|
164
|
-
// coordinate (`side` -> `[planePosition, y, x]`), and the polygons it
|
|
165
|
-
// lifts were cut on that same axis-aligned plane upstream. Feeding it
|
|
166
|
-
// the rotated plane's distance would move the cap off the geometry it
|
|
167
|
-
// was cut from. A rotated or face-picked plane reaches the cap through
|
|
168
|
-
// `customPlane` above, which carries its own basis.
|
|
169
|
-
const axisNormal = axis === 'side' ? [1, 0, 0] : axis === 'down' ? [0, 1, 0] : [0, 0, 1];
|
|
170
|
-
const modelBounds = this.host.getModelBounds();
|
|
171
|
-
// Allow upload if either sectionRange has both values, or modelBounds exists as fallback
|
|
172
|
-
const hasFullRange = sectionRange?.min !== undefined && sectionRange?.max !== undefined;
|
|
173
|
-
if (!hasFullRange && !modelBounds)
|
|
145
|
+
}
|
|
146
|
+
/** See `Renderer.clearSection2DOverlay` for the published contract. */
|
|
147
|
+
clearSection2DOverlay(planeId) {
|
|
148
|
+
const overlay = this.section2DOverlayRenderer;
|
|
149
|
+
if (!overlay)
|
|
174
150
|
return;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
this.section2DOverlayRenderer.uploadDrawing(polygons, lines, axis, planePosition, flipped);
|
|
151
|
+
if (planeId === undefined)
|
|
152
|
+
overlay.clearGeometry();
|
|
153
|
+
else
|
|
154
|
+
overlay.clearExtraGeometry(new Set(overlay.extraGeometryKeys().filter((key) => key !== planeId)));
|
|
180
155
|
this.host.requestRender();
|
|
181
156
|
}
|
|
182
|
-
/**
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
157
|
+
/** Drop the caps of every cutting plane beyond the first whose id is not in `keep` (#7545). */
|
|
158
|
+
clearSection2DExtraOverlays(keep = []) {
|
|
159
|
+
const overlay = this.section2DOverlayRenderer;
|
|
160
|
+
// Any held key, not only keys with geometry: an upload that built nothing still holds one of the seven slots.
|
|
161
|
+
if (!overlay || overlay.extraGeometryKeys().length === 0)
|
|
162
|
+
return;
|
|
163
|
+
overlay.clearExtraGeometry(new Set(keep));
|
|
164
|
+
this.host.requestRender();
|
|
188
165
|
}
|
|
189
166
|
/** See `Renderer.setOverlayTheme` for the published contract. */
|
|
190
167
|
setTheme(theme) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-overlays.js","sourceRoot":"","sources":["../src/renderer-overlays.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0C/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACH,wBAAwB,EACxB,qBAAqB,GAIxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"renderer-overlays.js","sourceRoot":"","sources":["../src/renderer-overlays.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export interface BoundingBox {
|
|
|
14
14
|
* never re-spelled inline: an ad-hoc structural copy is why `geometryItemId`
|
|
15
15
|
* was invisible here in the first place (#2985), after two hand-widenings. */
|
|
16
16
|
export type RaycastPiece = Pick<MeshData, 'positions' | 'indices' | 'entityIds' | 'modelIndex' | 'origin' | 'geometryItemId'>;
|
|
17
|
-
/** True when `clip` actually clips anything (a section plane or an enabled box). */
|
|
17
|
+
/** True when `clip` actually clips anything (a section plane, an extra plane or an enabled box). */
|
|
18
18
|
export declare function clipIsActive(clip?: PickClipState | null): boolean;
|
|
19
19
|
/**
|
|
20
20
|
* Is world point (x,y,z) clipped away (invisible) by the section plane or crop
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-raycaster.d.ts","sourceRoot":"","sources":["../src/scene-raycaster.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scene-raycaster.d.ts","sourceRoot":"","sources":["../src/scene-raycaster.ts"],"names":[],"mappings":"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"}
|