@ifc-lite/renderer 6.4.0 → 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 +18 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -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
package/dist/picker.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
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
|
+
import { sectionExclusions, withSectionExclusions } from './section-exclusions.js';
|
|
4
5
|
import { resolvePickSample, resolvePickedExpressId } from './pick-resolve.js';
|
|
5
6
|
import { PointPicker, decodePickSample } from './point-picker.js';
|
|
6
7
|
import { restoreRtePickWorld, unprojectPickSample } from './pick-world-position.js';
|
|
7
8
|
import { writeFlatPickUniform, writeInstancedPickUniforms, writePickUniforms, } from './picker-rte-uniforms.js';
|
|
8
9
|
import { isReadbackAbort, PickerReadbackOwner } from './picker-readbacks.js';
|
|
9
10
|
import { PickDepthSample } from './picker-depth-sample.js';
|
|
10
|
-
import { relativeToEyeWgsl } from './shaders/relative-to-eye.wgsl.js';
|
|
11
11
|
import { drawInstanceRuns, uploadInstancedRteDeltas } from './instanced-rte.js';
|
|
12
12
|
import { INSTANCED_RTE_DELTA_SLOT, INSTANCED_VERTEX_BUFFERS } from './instanced-vertex-layout.js';
|
|
13
|
+
import { EXTRA_CLIP_BYTES, EXTRA_CLIP_FLOATS, packExtraClip } from './extra-clip-planes.js';
|
|
14
|
+
import { flatPickShaderWgsl, instancedPickShaderWgsl } from './picker-shaders.js';
|
|
13
15
|
export class Picker {
|
|
14
16
|
device;
|
|
15
17
|
webgpuDevice;
|
|
@@ -17,6 +19,9 @@ export class Picker {
|
|
|
17
19
|
instancedPickPipeline = null; // GPU-instancing: pick pass for instanced occurrences; null if the backend rejected it
|
|
18
20
|
instancedPickBindGroup = null;
|
|
19
21
|
instancedUniformBuffer;
|
|
22
|
+
/** Extra cutting planes (#7545), one block shared by every pick draw; rewritten per pass. */
|
|
23
|
+
extraClipBuffer;
|
|
24
|
+
extraClipScratch = new Float32Array(EXTRA_CLIP_FLOATS);
|
|
20
25
|
depthTexture;
|
|
21
26
|
depthSample;
|
|
22
27
|
colorTexture;
|
|
@@ -40,6 +45,7 @@ export class Picker {
|
|
|
40
45
|
this.device = device.getDevice();
|
|
41
46
|
this.readbacks = new PickerReadbackOwner(this.device);
|
|
42
47
|
this.depthSample = new PickDepthSample(this.device);
|
|
48
|
+
sectionExclusions(this.device).retain();
|
|
43
49
|
// Create textures for picking
|
|
44
50
|
this.colorTexture = this.device.createTexture({
|
|
45
51
|
size: { width, height },
|
|
@@ -58,6 +64,10 @@ export class Picker {
|
|
|
58
64
|
size: this.maxMeshes * 256,
|
|
59
65
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
60
66
|
});
|
|
67
|
+
this.extraClipBuffer = this.device.createBuffer({
|
|
68
|
+
size: EXTRA_CLIP_BYTES,
|
|
69
|
+
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
70
|
+
});
|
|
61
71
|
this.instancedUniformBuffer = this.device.createBuffer({
|
|
62
72
|
size: 160,
|
|
63
73
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
@@ -70,73 +80,16 @@ export class Picker {
|
|
|
70
80
|
});
|
|
71
81
|
// Create picker shader that uses storage buffer for per-object expressId
|
|
72
82
|
const shaderModule = this.device.createShaderModule({
|
|
73
|
-
code:
|
|
74
|
-
${relativeToEyeWgsl}
|
|
75
|
-
struct Uniforms {
|
|
76
|
-
viewProj: mat4x4<f32>, // translation-free RTE projection
|
|
77
|
-
model: mat4x4<f32>, // linear transform; translation lives in originHigh/Low
|
|
78
|
-
clipBoxMin: vec4<f32>, // xyz = min corner (world), w = pad
|
|
79
|
-
clipBoxMax: vec4<f32>, // xyz = max corner (world), w = pad
|
|
80
|
-
sectionPlane: vec4<f32>, // xyz = plane normal, w = plane distance
|
|
81
|
-
clipFlags: vec4<u32>, // x: bit0 sectionEnabled, bit1 flipped, bit2 clipBox
|
|
82
|
-
originHigh: vec4<f32>,
|
|
83
|
-
originLow: vec4<f32>,
|
|
84
|
-
}
|
|
85
|
-
@binding(0) @group(0) var<uniform> uniforms: Uniforms;
|
|
86
|
-
@binding(1) @group(0) var<storage, read> expressIds: array<u32>;
|
|
87
|
-
|
|
88
|
-
struct VertexInput {
|
|
89
|
-
@location(0) position: vec3<f32>,
|
|
90
|
-
@location(1) normal: vec3<f32>,
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
struct VertexOutput {
|
|
94
|
-
@builtin(position) position: vec4<f32>,
|
|
95
|
-
@location(0) @interpolate(flat) objectId: u32,
|
|
96
|
-
@location(1) worldPos: vec3<f32>,
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
@vertex
|
|
100
|
-
fn vs_main(input: VertexInput, @builtin(instance_index) instanceIndex: u32) -> VertexOutput {
|
|
101
|
-
var output: VertexOutput;
|
|
102
|
-
let linear = (uniforms.model * vec4<f32>(input.position, 0.0)).xyz;
|
|
103
|
-
let relative = rteWorldPosition(linear, RteDrawableUniform(uniforms.originHigh, uniforms.originLow)).xyz;
|
|
104
|
-
output.position = uniforms.viewProj * vec4<f32>(relative, 1.0);
|
|
105
|
-
output.worldPos = relative;
|
|
106
|
-
// Look up expressId from storage buffer using instance index
|
|
107
|
-
output.objectId = expressIds[instanceIndex];
|
|
108
|
-
return output;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
@fragment
|
|
112
|
-
fn fs_main(input: VertexOutput) -> @location(0) u32 {
|
|
113
|
-
// Mirror the main render's clip discards so a click can't select a
|
|
114
|
-
// fragment the user has sectioned or cropped out of view.
|
|
115
|
-
if ((uniforms.clipFlags.x & 1u) != 0u) { // section plane enabled
|
|
116
|
-
let flipped = (uniforms.clipFlags.x & 2u) != 0u;
|
|
117
|
-
let side = select(1.0, -1.0, flipped);
|
|
118
|
-
let distToPlane = (dot(input.worldPos, uniforms.sectionPlane.xyz) - uniforms.sectionPlane.w) * side;
|
|
119
|
-
if (distToPlane > 0.0) {
|
|
120
|
-
discard;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if ((uniforms.clipFlags.x & 4u) != 0u) { // clip box enabled
|
|
124
|
-
let p = input.worldPos;
|
|
125
|
-
if (any(p < uniforms.clipBoxMin.xyz) || any(p > uniforms.clipBoxMax.xyz)) {
|
|
126
|
-
discard;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return input.objectId;
|
|
130
|
-
}
|
|
131
|
-
`,
|
|
83
|
+
code: flatPickShaderWgsl,
|
|
132
84
|
});
|
|
133
85
|
this.pipeline = this.device.createRenderPipeline({
|
|
134
|
-
layout: this.device.createPipelineLayout({ bindGroupLayouts: [this.device.createBindGroupLayout({
|
|
86
|
+
layout: this.device.createPipelineLayout({ bindGroupLayouts: withSectionExclusions(this.device, [this.device.createBindGroupLayout({
|
|
135
87
|
entries: [
|
|
136
88
|
{ binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: 'uniform', hasDynamicOffset: true, minBindingSize: 224 } },
|
|
137
89
|
{ binding: 1, visibility: GPUShaderStage.VERTEX, buffer: { type: 'read-only-storage' } },
|
|
90
|
+
{ binding: 2, visibility: GPUShaderStage.FRAGMENT, buffer: { type: 'uniform', minBindingSize: EXTRA_CLIP_BYTES } },
|
|
138
91
|
],
|
|
139
|
-
})] }),
|
|
92
|
+
})]) }),
|
|
140
93
|
vertex: {
|
|
141
94
|
module: shaderModule,
|
|
142
95
|
entryPoint: 'vs_main',
|
|
@@ -180,6 +133,10 @@ export class Picker {
|
|
|
180
133
|
binding: 1,
|
|
181
134
|
resource: { buffer: this.expressIdBuffer },
|
|
182
135
|
},
|
|
136
|
+
{
|
|
137
|
+
binding: 2,
|
|
138
|
+
resource: { buffer: this.extraClipBuffer },
|
|
139
|
+
},
|
|
183
140
|
],
|
|
184
141
|
});
|
|
185
142
|
// ── Instanced pick pipeline ──
|
|
@@ -189,73 +146,7 @@ export class Picker {
|
|
|
189
146
|
// from a flat mesh-index (bit 30 clear) or a point (bit 31). No expressId
|
|
190
147
|
// storage buffer — the id rides the instance buffer per occurrence.
|
|
191
148
|
const instancedPickModule = this.device.createShaderModule({
|
|
192
|
-
code:
|
|
193
|
-
${relativeToEyeWgsl}
|
|
194
|
-
struct Uniforms {
|
|
195
|
-
viewProj: mat4x4<f32>,
|
|
196
|
-
clipBoxMin: vec4<f32>, // xyz = min corner (world), w = pad
|
|
197
|
-
clipBoxMax: vec4<f32>, // xyz = max corner (world), w = pad
|
|
198
|
-
sectionPlane: vec4<f32>, // xyz = plane normal, w = plane distance
|
|
199
|
-
clipFlags: vec4<u32>, // x: bit0 sectionEnabled, bit1 flipped, bit2 clipBox
|
|
200
|
-
cameraHigh: vec4<f32>,
|
|
201
|
-
cameraLow: vec4<f32>,
|
|
202
|
-
}
|
|
203
|
-
@binding(0) @group(0) var<uniform> uniforms: Uniforms;
|
|
204
|
-
struct VertexInput { @location(0) position: vec3<f32> }
|
|
205
|
-
struct InstanceInput {
|
|
206
|
-
@location(3) m0: vec4<f32>,
|
|
207
|
-
@location(4) m1: vec4<f32>,
|
|
208
|
-
@location(5) m2: vec4<f32>,
|
|
209
|
-
@location(6) m3: vec4<f32>,
|
|
210
|
-
@location(7) instEntityId: u32,
|
|
211
|
-
@location(9) instFlags: u32,
|
|
212
|
-
@location(10) anchorHigh: vec4<f32>,
|
|
213
|
-
@location(11) anchorLow: vec4<f32>,
|
|
214
|
-
}
|
|
215
|
-
struct VertexOutput {
|
|
216
|
-
@builtin(position) position: vec4<f32>,
|
|
217
|
-
@location(0) @interpolate(flat) objectId: u32,
|
|
218
|
-
@location(1) @interpolate(flat) instFlags: u32,
|
|
219
|
-
@location(2) worldPos: vec3<f32>,
|
|
220
|
-
}
|
|
221
|
-
@vertex
|
|
222
|
-
fn vs_main(input: VertexInput, inst: InstanceInput) -> VertexOutput {
|
|
223
|
-
var output: VertexOutput;
|
|
224
|
-
let m = mat4x4<f32>(inst.m0, inst.m1, inst.m2, inst.m3);
|
|
225
|
-
let linear = (m * vec4<f32>(input.position, 0.0)).xyz;
|
|
226
|
-
let relative = rteWorldPosition(linear, RteDrawableUniform(inst.anchorHigh, inst.anchorLow)).xyz;
|
|
227
|
-
output.position = uniforms.viewProj * vec4<f32>(relative, 1.0);
|
|
228
|
-
output.worldPos = relative;
|
|
229
|
-
// bit 30 = instanced marker; express id in the low 30 bits.
|
|
230
|
-
output.objectId = 0x40000000u | (inst.instEntityId & 0x3FFFFFFFu);
|
|
231
|
-
output.instFlags = inst.instFlags;
|
|
232
|
-
return output;
|
|
233
|
-
}
|
|
234
|
-
@fragment
|
|
235
|
-
fn fs_main(input: VertexOutput) -> @location(0) u32 {
|
|
236
|
-
// Hidden occurrences (flags bit 1) are not pickable — mirror the render-pass
|
|
237
|
-
// discard so a hidden instanced element can't be selected through the picker.
|
|
238
|
-
if ((input.instFlags & 2u) != 0u) {
|
|
239
|
-
discard;
|
|
240
|
-
}
|
|
241
|
-
// Mirror the main render's section + crop-box discards for occurrences.
|
|
242
|
-
if ((uniforms.clipFlags.x & 1u) != 0u) { // section plane enabled
|
|
243
|
-
let flipped = (uniforms.clipFlags.x & 2u) != 0u;
|
|
244
|
-
let side = select(1.0, -1.0, flipped);
|
|
245
|
-
let distToPlane = (dot(input.worldPos, uniforms.sectionPlane.xyz) - uniforms.sectionPlane.w) * side;
|
|
246
|
-
if (distToPlane > 0.0) {
|
|
247
|
-
discard;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if ((uniforms.clipFlags.x & 4u) != 0u) { // clip box enabled
|
|
251
|
-
let p = input.worldPos;
|
|
252
|
-
if (any(p < uniforms.clipBoxMin.xyz) || any(p > uniforms.clipBoxMax.xyz)) {
|
|
253
|
-
discard;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return input.objectId;
|
|
257
|
-
}
|
|
258
|
-
`,
|
|
149
|
+
code: instancedPickShaderWgsl,
|
|
259
150
|
});
|
|
260
151
|
// NON-FATAL: the instanced pick pipeline is an add-on (instanced occurrences are
|
|
261
152
|
// also resolvable via the GPU/CPU flat paths). A degraded WebGPU backend (e.g.
|
|
@@ -264,7 +155,10 @@ export class Picker {
|
|
|
264
155
|
// renderPickPass skips the instanced pick draw.
|
|
265
156
|
try {
|
|
266
157
|
this.instancedPickPipeline = this.device.createRenderPipeline({
|
|
267
|
-
layout:
|
|
158
|
+
layout: this.device.createPipelineLayout({ bindGroupLayouts: withSectionExclusions(this.device, [this.device.createBindGroupLayout({ entries: [
|
|
159
|
+
{ binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: 'uniform' } },
|
|
160
|
+
{ binding: 1, visibility: GPUShaderStage.FRAGMENT, buffer: { type: 'uniform' } },
|
|
161
|
+
] })]) }),
|
|
268
162
|
vertex: {
|
|
269
163
|
module: instancedPickModule,
|
|
270
164
|
entryPoint: 'vs_main',
|
|
@@ -278,7 +172,10 @@ export class Picker {
|
|
|
278
172
|
});
|
|
279
173
|
this.instancedPickBindGroup = this.device.createBindGroup({
|
|
280
174
|
layout: this.instancedPickPipeline.getBindGroupLayout(0),
|
|
281
|
-
entries: [
|
|
175
|
+
entries: [
|
|
176
|
+
{ binding: 0, resource: { buffer: this.instancedUniformBuffer } },
|
|
177
|
+
{ binding: 1, resource: { buffer: this.extraClipBuffer } },
|
|
178
|
+
],
|
|
282
179
|
});
|
|
283
180
|
}
|
|
284
181
|
catch (err) {
|
|
@@ -491,7 +388,13 @@ export class Picker {
|
|
|
491
388
|
meshIndexArray[i] = i + 1; // +1 so 0 means no hit
|
|
492
389
|
}
|
|
493
390
|
this.device.queue.writeBuffer(this.expressIdBuffer, 0, meshIndexArray);
|
|
391
|
+
// One block for every draw of this pass: the cutting planes beyond the first,
|
|
392
|
+
// in the frame the pass rasterises (eye-relative when an RTE snapshot drives it).
|
|
393
|
+
packExtraClip(clip?.extraPlanes, pointRteSnapshot?.getCameraWorld() ?? null, this.extraClipScratch, 0);
|
|
394
|
+
this.device.queue.writeBuffer(this.extraClipBuffer, 0, this.extraClipScratch);
|
|
395
|
+
sectionExclusions(this.device).update(clip?.sectionExcludedIds);
|
|
494
396
|
pass.setPipeline(this.pipeline);
|
|
397
|
+
pass.setBindGroup(3, sectionExclusions(this.device).bindGroup);
|
|
495
398
|
for (let i = 0; i < meshes.length; i++) {
|
|
496
399
|
const mesh = meshes[i];
|
|
497
400
|
if (!mesh)
|
|
@@ -505,7 +408,7 @@ export class Picker {
|
|
|
505
408
|
// Compatibility for direct Picker callers that predate RTE snapshots.
|
|
506
409
|
// Renderer/PickingManager always supplies one so production draws use
|
|
507
410
|
// the per-mesh immutable RTE slots above.
|
|
508
|
-
writePickUniforms(this.device, this.uniformBuffer, this.uniformScratch, this.clipFlags, viewProj, clip);
|
|
411
|
+
writePickUniforms(this.device, this.uniformBuffer, this.uniformScratch, this.clipFlags, viewProj, clip, mesh.expressId, i);
|
|
509
412
|
}
|
|
510
413
|
pass.setBindGroup(0, this.bindGroup, [i * 256]);
|
|
511
414
|
pass.setVertexBuffer(0, mesh.vertexBuffer);
|
|
@@ -519,6 +422,7 @@ export class Picker {
|
|
|
519
422
|
const instanceRuns = uploadInstancedRteDeltas(this.device, instancedTemplates, pointRteSnapshot.getCameraWorld());
|
|
520
423
|
writeInstancedPickUniforms(this.device, this.instancedUniformBuffer, this.instancedUniformScratch, this.instancedClipFlags, pointRteSnapshot, clip);
|
|
521
424
|
pass.setPipeline(this.instancedPickPipeline);
|
|
425
|
+
pass.setBindGroup(3, sectionExclusions(this.device).bindGroup);
|
|
522
426
|
pass.setBindGroup(0, this.instancedPickBindGroup);
|
|
523
427
|
for (const [i, it] of instancedTemplates.entries()) {
|
|
524
428
|
pass.setVertexBuffer(0, it.vertexBuffer);
|
|
@@ -539,7 +443,7 @@ export class Picker {
|
|
|
539
443
|
worldRadius: sz.worldRadius,
|
|
540
444
|
pointSizePx: sz.pointSizePx,
|
|
541
445
|
clickTolerancePx: sz.clickTolerancePx ?? 2,
|
|
542
|
-
}, clip?.sectionPlane ?? null, pointRteSnapshot, clip?.clipBox ?? null);
|
|
446
|
+
}, clip?.sectionPlane ?? null, pointRteSnapshot, clip?.clipBox ?? null, clip?.extraPlanes ?? null);
|
|
543
447
|
}
|
|
544
448
|
pass.end();
|
|
545
449
|
return encoder;
|
|
@@ -574,6 +478,10 @@ export class Picker {
|
|
|
574
478
|
binding: 1,
|
|
575
479
|
resource: { buffer: this.expressIdBuffer },
|
|
576
480
|
},
|
|
481
|
+
{
|
|
482
|
+
binding: 2,
|
|
483
|
+
resource: { buffer: this.extraClipBuffer },
|
|
484
|
+
},
|
|
577
485
|
],
|
|
578
486
|
});
|
|
579
487
|
}
|
|
@@ -587,10 +495,12 @@ export class Picker {
|
|
|
587
495
|
return;
|
|
588
496
|
this.destroyed = true;
|
|
589
497
|
this.readbacks.destroy();
|
|
498
|
+
sectionExclusions(this.device).release();
|
|
590
499
|
this.colorTexture.destroy();
|
|
591
500
|
this.depthTexture.destroy();
|
|
592
501
|
this.uniformBuffer.destroy();
|
|
593
502
|
this.instancedUniformBuffer.destroy();
|
|
503
|
+
this.extraClipBuffer.destroy();
|
|
594
504
|
this.expressIdBuffer.destroy();
|
|
595
505
|
this.pointPicker?.destroy();
|
|
596
506
|
this.pointPicker = null;
|
package/dist/picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAOnF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAsB,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAWlF,MAAM,OAAO,MAAM;IACT,MAAM,CAAY;IAClB,YAAY,CAAe;IAC3B,QAAQ,CAAoB;IAC5B,qBAAqB,GAA6B,IAAI,CAAC,CAAE,uFAAuF;IAChJ,sBAAsB,GAAwB,IAAI,CAAC;IACnD,sBAAsB,CAAY;IAC1C,6FAA6F;IACrF,eAAe,CAAY;IAClB,gBAAgB,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAChE,YAAY,CAAa;IACzB,WAAW,CAAkB;IAC7B,YAAY,CAAa;IACzB,aAAa,CAAY;IACzB,eAAe,CAAY;IAC3B,SAAS,CAAe;IACxB,SAAS,GAAW,MAAM,CAAC,CAAC,sCAAsC;IAC1E,uFAAuF;IAC/E,SAAS,GAAG,KAAK,CAAC;IACT,SAAS,CAAsB;IACxC,WAAW,GAAuB,IAAI,CAAC;IAC/C,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC1D,cAAc,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IACtC,SAAS,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,uBAAuB,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/C,kBAAkB,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAEnG,YAAY,MAAoB,EAAE,QAAgB,CAAC,EAAE,SAAiB,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QAExC,8BAA8B;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,QAAQ;SACpE,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;SAC3E,CAAC,CAAC;QAEH,wEAAwE;QACxE,0EAA0E;QAC1E,uDAAuD;QACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG;YAC1B,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9C,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YACrD,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,uEAAuE;QACvE,+EAA+E;QAC/E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,kBAAkB;YAC5C,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,yEAAyE;QACzE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAClD,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;wBACjI,OAAO,EAAE;4BACP,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE;4BACrJ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;4BACxF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE;yBACnH;qBACF,CAAC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACP;wBACE,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACV,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;4BACrD,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;yBACvD;qBACF;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACjC;YACD,SAAS,EAAE;gBACT,QAAQ,EAAE,eAAe;gBACzB,kEAAkE;gBAClE,iEAAiE;gBACjE,oEAAoE;gBACpE,QAAQ,EAAE,MAAM;aACjB;YACD,YAAY,EAAE;gBACZ,MAAM,EAAE,cAAc;gBACtB,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,SAAS,EAAG,qCAAqC;aAChE;SACF,CAAC,CAAC;QAEH,yEAAyE;QACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3C,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE;iBACpD;gBACD;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;iBAC3C;gBACD;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;iBAC3C;aACF;SACF,CAAC,CAAC;QAEH,gCAAgC;QAChC,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YACzD,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QACH,iFAAiF;QACjF,+EAA+E;QAC/E,+EAA+E;QAC/E,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC5D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE;gCAC5I,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gCACxG,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;6BACjF,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,EAAE;oBACN,MAAM,EAAE,mBAAmB;oBAC3B,UAAU,EAAE,SAAS;oBACrB,sEAAsE;oBACtE,kEAAkE;oBAClE,OAAO,EAAE,wBAAwB;iBAClC;gBACD,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;gBAClG,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAC1D,YAAY,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE;aAC3F,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBACxD,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACxD,OAAO,EAAE;oBACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE;oBACjE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE;iBAC3D;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oGAAoG,EAAE,GAAG,CAAC,CAAC;YACxH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,IAAI,CACR,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,MAAc,EACd,QAAsB,EACtB,UAAyC,EACzC,WAA6B,EAC7B,kBAAoD,EACpD,IAA2B,EAC3B,gBAAwC;QAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CACjC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,CACrG,CAAC;QAEF,gFAAgF;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,oEAAoE;QACpE,gEAAgE;QAChE,MAAM,aAAa,GAAG,GAAG,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ;SACzD,CAAC,CAAC;QAEH,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,cAAc,GAAyB,EAAE,CAAC;QAC9C,IAAI,MAAc,CAAC;QACnB,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,CAAC,mBAAmB,CACzB;gBACE,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;aACzC,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,EAAE,EACnE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CACxB,CAAC;YACF,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACtC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAC5D,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzC,8EAA8E;QAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;QACvG,MAAM,cAAc,GAAG,mBAAmB,CACxC,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAClF,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,IAAI,gBAAgB;YAC7C,CAAC,CAAC,mBAAmB,CAAC,cAAc,EAAE,gBAAgB,CAAC;YACvD,CAAC,CAAC,cAAc,CAAC;QAEnB,yEAAyE;QACzE,uCAAuC;QACvC,OAAO,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,cAAc,CAAC,QAAsB,EAAE,IAA2B;QAChE,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1G,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CACZ,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACb,MAAc,EACd,MAAc,EACd,QAAsB,EACtB,UAAyC,EACzC,WAA6B,EAC7B,kBAAoD,EACpD,IAA2B,EAC3B,gBAAwC;QAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAClE,2CAA2C;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CACjC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,CACrG,CAAC;QAEF,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,SAAS,GAAG,KAAK;YACvB,KAAK,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,OAAO,CAAC,mBAAmB,CACzB;gBACE,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;aAC/B,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EACnE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAChC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,OAAO,IAAI,GAAG,EAAE,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;YAC9B,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBAC7B,IAAI,MAAM,KAAK,CAAC;wBAAE,SAAS;oBAC3B,oEAAoE;oBACpE,uEAAuE;oBACvE,uEAAuE;oBACvE,mCAAmC;oBACnC,EAAE;oBACF,sEAAsE;oBACtE,sEAAsE;oBACtE,iEAAiE;oBACjE,sEAAsE;oBACtE,6CAA6C;oBAC7C,EAAE;oBACF,kEAAkE;oBAClE,yEAAyE;oBACzE,MAAM,SAAS,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC3E,IAAI,SAAS,KAAK,IAAI;wBAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACnE,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CACpB,KAAa,EACb,MAAc,EACd,MAAc,EACd,QAAsB,EACtB,UAAyC,EACzC,WAA6B,EAC7B,kBAAoD,EACpD,IAA2B,EAC3B,gBAAwC;QAExC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7E,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,QAAQ;aACpE,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;aAC3E,CAAC,CAAC;QACL,CAAC;QACD,0EAA0E;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;YACnC,gBAAgB,EAAE,CAAC;oBACjB,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;oBACtC,OAAO,EAAE,OAAO;iBACjB,CAAC;YACF,sBAAsB,EAAE;gBACtB,IAAI,EAAE,SAAS;gBACf,eAAe,EAAE,GAAG,EAAG,sCAAsC;gBAC7D,WAAW,EAAE,OAAO;gBACpB,YAAY,EAAE,OAAO;aACtB;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,uBAAuB;QACpE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QAEvE,8EAA8E;QAC9E,kFAAkF;QAClF,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9E,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,oBAAoB,CACnC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,EACd,IAAI,EACJ,gBAAgB,EAChB,IAAI,EACJ,CAAC,CACF,CAAC;gBACF,IAAI,CAAC,QAAQ;oBAAE,SAAS;YAC1B,CAAC;iBAAM,CAAC;gBACN,sEAAsE;gBACtE,sEAAsE;gBACtE,0CAA0C;gBAC1C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7H,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,4EAA4E;QAC5E,iEAAiE;QACjE,uEAAuE;QACvE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,sBAAsB,IAAI,gBAAgB,EAAE,CAAC;YACzI,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC;YAClH,0BAA0B,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,kBAAkB,EACvB,gBAAgB,EAChB,IAAI,CACL,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;gBACzC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC3C,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC9C,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,EAAE,GAAG,WAAW,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAC7E,gFAAgF;YAChF,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC3E,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,IAAI,CAAC;aAC3C,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,OAAe;QAC3C,qBAAqB;QACrB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAE7B,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;QAE1C,oBAAoB;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,kBAAkB;YAC5C,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG;YAC1B,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SACxD,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3C,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE;iBACpD;gBACD;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;iBAC3C;gBACD;oBACE,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;iBAC3C;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF"}
|
package/dist/pipeline.d.ts
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* WebGPU render pipeline setup
|
|
3
3
|
*/
|
|
4
4
|
import { WebGPUDevice } from './device.js';
|
|
5
|
+
import { OpaqueVisibilityPass } from './opaque-visibility-pass.js';
|
|
5
6
|
import { type LightingEnvironment } from './environment.js';
|
|
6
7
|
import { SelectionColorUniform } from './overlay-theme-uniforms.js';
|
|
7
8
|
export declare class RenderPipeline {
|
|
9
|
+
readonly visibility: OpaqueVisibilityPass;
|
|
8
10
|
private device;
|
|
9
11
|
private webgpuDevice;
|
|
10
12
|
private pipeline;
|
|
@@ -68,15 +70,9 @@ export declare class RenderPipeline {
|
|
|
68
70
|
max: [number, number, number];
|
|
69
71
|
enabled: boolean;
|
|
70
72
|
}): void;
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
*
|
|
74
|
-
* createRenderPipelineAsync so WebGPU's asynchronous validation completes
|
|
75
|
-
* before anything is cached — a sync createRenderPipeline can hand back a
|
|
76
|
-
* pipeline whose validation later fails on the device, and caching that
|
|
77
|
-
* would make every quantized draw error. This is the ONLY creator; the
|
|
78
|
-
* sync getter below reads the cache. Returns whether all variants exist.
|
|
79
|
-
*/
|
|
73
|
+
/** Validate BOTH variants before admitting quantized batches. A synchronous
|
|
74
|
+
* createRenderPipeline result is not proof that GPU validation succeeded.
|
|
75
|
+
* #7655: an async completion belongs only to this live device lifetime. */
|
|
80
76
|
ensureQuantizedPipelines(): Promise<boolean>;
|
|
81
77
|
/** Cache-only reader for the quantized variants (see ensureQuantizedPipelines); `'overlay'` is never built since #6076. */
|
|
82
78
|
getQuantizedPipelineVariant(kind: 'opaque' | 'transparent' | 'overlay'): GPURenderPipeline | null;
|
package/dist/pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
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
|
+
import { sectionExclusions, withSectionExclusions } from './section-exclusions.js';
|
|
5
|
+
import { OpaqueVisibilityPass } from './opaque-visibility-pass.js';
|
|
4
6
|
import { mainShaderSource } from './shaders/main.wgsl.js';
|
|
5
7
|
import { ghostShaderSource } from './shaders/ghost.wgsl.js';
|
|
6
8
|
import { INSTANCED_VERTEX_BUFFERS } from './instanced-vertex-layout.js';
|
|
@@ -17,6 +19,7 @@ import { SelectionColorUniform } from './overlay-theme-uniforms.js';
|
|
|
17
19
|
*/
|
|
18
20
|
const SHADOW_UNIFORM_SIZE = 96;
|
|
19
21
|
export class RenderPipeline {
|
|
22
|
+
visibility;
|
|
20
23
|
device;
|
|
21
24
|
webgpuDevice;
|
|
22
25
|
pipeline;
|
|
@@ -90,6 +93,7 @@ export class RenderPipeline {
|
|
|
90
93
|
// 4x MSAA provides good anti-aliasing for thin geometry
|
|
91
94
|
const maxSampleCount = this.device.limits?.maxSampleCount ?? 4;
|
|
92
95
|
this.sampleCount = Math.min(4, maxSampleCount);
|
|
96
|
+
this.visibility = new OpaqueVisibilityPass(this.device, this.sampleCount, () => sectionExclusions(this.device).bindGroup);
|
|
93
97
|
// Create depth texture with MSAA support
|
|
94
98
|
this.depthTexture = this.device.createTexture({
|
|
95
99
|
size: { width, height },
|
|
@@ -191,15 +195,14 @@ export class RenderPipeline {
|
|
|
191
195
|
this.currentShadowView = this.dummyShadowView;
|
|
192
196
|
this.emptyEntityColorTable = this.device.createBuffer({ label: 'entity-color-table-empty', size: 16, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });
|
|
193
197
|
this.entityColorTableBuffer = this.emptyEntityColorTable;
|
|
198
|
+
sectionExclusions(this.device).retain();
|
|
194
199
|
this.environmentBindGroup = this.buildEnvironmentBindGroup();
|
|
195
200
|
this.updateEnvironment();
|
|
196
|
-
// Create shader module with PBR lighting, section plane clipping, and selection outline
|
|
197
201
|
const shaderModule = this.device.createShaderModule({
|
|
198
202
|
code: mainShaderSource,
|
|
199
203
|
});
|
|
200
|
-
// Create explicit pipeline layout (shared between main and selection pipelines)
|
|
201
204
|
const pipelineLayout = this.device.createPipelineLayout({
|
|
202
|
-
bindGroupLayouts: [this.bindGroupLayout, this.environmentBindGroupLayout],
|
|
205
|
+
bindGroupLayouts: withSectionExclusions(this.device, [this.bindGroupLayout, this.environmentBindGroupLayout]),
|
|
203
206
|
});
|
|
204
207
|
// Create render pipeline descriptor
|
|
205
208
|
const pipelineDescriptor = {
|
|
@@ -241,7 +244,7 @@ export class RenderPipeline {
|
|
|
241
244
|
count: this.sampleCount,
|
|
242
245
|
},
|
|
243
246
|
};
|
|
244
|
-
this.pipeline = this.
|
|
247
|
+
this.pipeline = this.visibility.create(pipelineDescriptor);
|
|
245
248
|
// GPU-instancing pipeline: same fragment/targets/depth/MSAA as the opaque
|
|
246
249
|
// pipeline, but vs_instanced + a SECOND vertex buffer (slot 1, stepMode
|
|
247
250
|
// 'instance') carrying the per-occurrence record. The layout is shared
|
|
@@ -252,7 +255,7 @@ export class RenderPipeline {
|
|
|
252
255
|
entryPoint: 'vs_instanced',
|
|
253
256
|
buffers: INSTANCED_VERTEX_BUFFERS,
|
|
254
257
|
};
|
|
255
|
-
this.instancedPipeline = this.
|
|
258
|
+
this.instancedPipeline = this.visibility.create({
|
|
256
259
|
...pipelineDescriptor,
|
|
257
260
|
vertex: instancedVertex,
|
|
258
261
|
});
|
|
@@ -289,9 +292,8 @@ export class RenderPipeline {
|
|
|
289
292
|
format: this.depthFormat,
|
|
290
293
|
depthWriteEnabled: false, // Don't overwrite depth - selected objects render on top of existing depth
|
|
291
294
|
depthCompare: 'greater-equal', // Allow rendering at same depth, but still respect objects in front
|
|
292
|
-
// No
|
|
293
|
-
//
|
|
294
|
-
// origin + same f32 relativization — see createMeshFromData), so
|
|
295
|
+
// No extra highlight bias. Its canonical upload matches the base.
|
|
296
|
+
// Same shared origin and f32 reconstruction as its base, so
|
|
295
297
|
// it sits exactly coincident and 'greater-equal' draws it on top
|
|
296
298
|
// without a bias. A bias here would x-ray the highlight through
|
|
297
299
|
// neighbouring geometry and spike at grazing angles.
|
|
@@ -303,7 +305,7 @@ export class RenderPipeline {
|
|
|
303
305
|
count: this.sampleCount,
|
|
304
306
|
},
|
|
305
307
|
};
|
|
306
|
-
this.selectionPipeline = this.
|
|
308
|
+
this.selectionPipeline = this.visibility.create(selectionPipelineDescriptor);
|
|
307
309
|
// Create transparent pipeline descriptor (same shader, but with alpha blending)
|
|
308
310
|
const transparentPipelineDescriptor = {
|
|
309
311
|
layout: pipelineLayout,
|
|
@@ -352,7 +354,7 @@ export class RenderPipeline {
|
|
|
352
354
|
count: this.sampleCount,
|
|
353
355
|
},
|
|
354
356
|
};
|
|
355
|
-
this.transparentPipeline = this.
|
|
357
|
+
this.transparentPipeline = this.visibility.create(transparentPipelineDescriptor);
|
|
356
358
|
// Transparent instanced pipeline: the transparent descriptor (src-alpha blend,
|
|
357
359
|
// no depth write) but with the instanced vertex stage. Drives the second
|
|
358
360
|
// instanced sub-pass that draws occurrences whose per-instance alpha dropped
|
|
@@ -365,7 +367,7 @@ export class RenderPipeline {
|
|
|
365
367
|
// Deferring it keeps init at the minimal pipeline set that backend tolerates;
|
|
366
368
|
// real WebGPU builds it on demand when an overlay first needs it. A creation
|
|
367
369
|
// failure leaves it null and the renderer skips the transparent instanced pass.
|
|
368
|
-
this.makeInstancedTransparentPipeline = () => this.
|
|
370
|
+
this.makeInstancedTransparentPipeline = () => this.visibility.create({
|
|
369
371
|
...transparentPipelineDescriptor,
|
|
370
372
|
vertex: instancedVertexStage,
|
|
371
373
|
});
|
|
@@ -414,7 +416,7 @@ export class RenderPipeline {
|
|
|
414
416
|
count: this.sampleCount,
|
|
415
417
|
},
|
|
416
418
|
};
|
|
417
|
-
this.makeOverlayPipeline = () => this.
|
|
419
|
+
this.makeOverlayPipeline = () => this.visibility.create(overlayPipelineDescriptor);
|
|
418
420
|
// ── Quantized-vertex pipeline variants (issue #1682 phase 6) ──
|
|
419
421
|
// Same fragment/blend/depth state as their f32 bases, but the
|
|
420
422
|
// 12-byte lattice-quantized vertex layout + vs_main_quantized.
|
|
@@ -436,15 +438,15 @@ export class RenderPipeline {
|
|
|
436
438
|
};
|
|
437
439
|
this.makeQuantizedPipelineAsync = (kind) => {
|
|
438
440
|
const base = kind === 'opaque' ? pipelineDescriptor : transparentPipelineDescriptor;
|
|
439
|
-
return this.
|
|
441
|
+
return this.visibility.createAsync({ ...base, vertex: quantizedVertex });
|
|
440
442
|
};
|
|
441
443
|
// X-Ray ghosts: the transparent descriptor with the ghost fragment stage
|
|
442
444
|
// (ghost.wgsl.ts). Built on first use, like the instanced transparent pipeline.
|
|
443
|
-
this.makeGhostPipelineAsync = (quantized) => this.
|
|
445
|
+
this.makeGhostPipelineAsync = (quantized) => this.visibility.createAsync({
|
|
444
446
|
...transparentPipelineDescriptor,
|
|
445
447
|
...(quantized && { vertex: quantizedVertex }),
|
|
446
448
|
fragment: { ...transparentPipelineDescriptor.fragment, module: this.device.createShaderModule({ code: ghostShaderSource }) },
|
|
447
|
-
});
|
|
449
|
+
}, ghostShaderSource);
|
|
448
450
|
// ── Textured pipeline (#961) ──
|
|
449
451
|
// A separate pipeline for meshes carrying an IFC surface texture. It
|
|
450
452
|
// adds a UV vertex lane and an albedo texture+sampler at group(0)
|
|
@@ -469,10 +471,10 @@ export class RenderPipeline {
|
|
|
469
471
|
label: 'textured-shader',
|
|
470
472
|
code: texturedShaderSource,
|
|
471
473
|
});
|
|
472
|
-
this.texturedPipeline = this.
|
|
474
|
+
this.texturedPipeline = this.visibility.create({
|
|
473
475
|
label: 'textured-pipeline',
|
|
474
476
|
layout: this.device.createPipelineLayout({
|
|
475
|
-
bindGroupLayouts: [this.texturedBindGroupLayout, this.environmentBindGroupLayout],
|
|
477
|
+
bindGroupLayouts: withSectionExclusions(this.device, [this.texturedBindGroupLayout, this.environmentBindGroupLayout]),
|
|
476
478
|
}),
|
|
477
479
|
vertex: {
|
|
478
480
|
module: texturedModule,
|
|
@@ -506,7 +508,7 @@ export class RenderPipeline {
|
|
|
506
508
|
depthCompare: 'greater', // Reverse-Z, matches the opaque pipeline
|
|
507
509
|
},
|
|
508
510
|
multisample: { count: this.sampleCount },
|
|
509
|
-
});
|
|
511
|
+
}, texturedShaderSource);
|
|
510
512
|
// Create bind group using the explicit bind group layout
|
|
511
513
|
this.bindGroup = this.device.createBindGroup({
|
|
512
514
|
layout: this.bindGroupLayout,
|
|
@@ -563,29 +565,28 @@ export class RenderPipeline {
|
|
|
563
565
|
// Write the buffer
|
|
564
566
|
this.device.queue.writeBuffer(this.uniformBuffer, 0, buffer);
|
|
565
567
|
}
|
|
566
|
-
/**
|
|
567
|
-
|
|
568
|
-
*
|
|
569
|
-
* createRenderPipelineAsync so WebGPU's asynchronous validation completes
|
|
570
|
-
* before anything is cached — a sync createRenderPipeline can hand back a
|
|
571
|
-
* pipeline whose validation later fails on the device, and caching that
|
|
572
|
-
* would make every quantized draw error. This is the ONLY creator; the
|
|
573
|
-
* sync getter below reads the cache. Returns whether all variants exist.
|
|
574
|
-
*/
|
|
568
|
+
/** Validate BOTH variants before admitting quantized batches. A synchronous
|
|
569
|
+
* createRenderPipeline result is not proof that GPU validation succeeded.
|
|
570
|
+
* #7655: an async completion belongs only to this live device lifetime. */
|
|
575
571
|
async ensureQuantizedPipelines() {
|
|
576
572
|
const factory = this.makeQuantizedPipelineAsync;
|
|
577
|
-
if (!factory)
|
|
573
|
+
if (this.destroyed || !factory)
|
|
578
574
|
return false;
|
|
579
575
|
const kinds = ['opaque', 'transparent'];
|
|
580
576
|
try {
|
|
581
577
|
for (const kind of kinds) {
|
|
582
578
|
if (!this.quantizedPipelines[kind]) {
|
|
583
|
-
|
|
579
|
+
const pipeline = await factory(kind);
|
|
580
|
+
if (this.destroyed)
|
|
581
|
+
return false;
|
|
582
|
+
this.quantizedPipelines[kind] = pipeline;
|
|
584
583
|
}
|
|
585
584
|
}
|
|
586
585
|
return true;
|
|
587
586
|
}
|
|
588
587
|
catch (err) {
|
|
588
|
+
if (this.destroyed)
|
|
589
|
+
return false;
|
|
589
590
|
console.warn('[Pipeline] quantized pipeline validation failed; staying on f32 vertices:', err);
|
|
590
591
|
this.makeQuantizedPipelineAsync = null;
|
|
591
592
|
return false;
|
|
@@ -838,9 +839,12 @@ export class RenderPipeline {
|
|
|
838
839
|
* Safe to call multiple times.
|
|
839
840
|
*/
|
|
840
841
|
destroy() {
|
|
842
|
+
this.visibility.destroy();
|
|
841
843
|
if (this.destroyed)
|
|
842
844
|
return;
|
|
843
845
|
this.destroyed = true;
|
|
846
|
+
this.makeQuantizedPipelineAsync = null;
|
|
847
|
+
this.quantizedPipelines = {};
|
|
844
848
|
this.depthTexture.destroy();
|
|
845
849
|
this.objectIdTexture.destroy();
|
|
846
850
|
this.multisampleTexture?.destroy();
|
|
@@ -852,6 +856,7 @@ export class RenderPipeline {
|
|
|
852
856
|
this.selectionColorUniform.destroy();
|
|
853
857
|
this.dummyShadowTexture.destroy();
|
|
854
858
|
this.emptyEntityColorTable.destroy();
|
|
859
|
+
sectionExclusions(this.device).release();
|
|
855
860
|
}
|
|
856
861
|
}
|
|
857
862
|
//# sourceMappingURL=pipeline.js.map
|