@ifc-lite/renderer 1.17.0 → 1.18.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.
Files changed (39) hide show
  1. package/dist/edl-pass.d.ts +52 -0
  2. package/dist/edl-pass.d.ts.map +1 -0
  3. package/dist/edl-pass.js +204 -0
  4. package/dist/edl-pass.js.map +1 -0
  5. package/dist/index.d.ts +77 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +314 -19
  8. package/dist/index.js.map +1 -1
  9. package/dist/picker.d.ts +22 -3
  10. package/dist/picker.d.ts.map +1 -1
  11. package/dist/picker.js +48 -8
  12. package/dist/picker.js.map +1 -1
  13. package/dist/picking-manager.d.ts +14 -1
  14. package/dist/picking-manager.d.ts.map +1 -1
  15. package/dist/picking-manager.js +13 -1
  16. package/dist/picking-manager.js.map +1 -1
  17. package/dist/point-picker.d.ts +61 -0
  18. package/dist/point-picker.d.ts.map +1 -0
  19. package/dist/point-picker.js +223 -0
  20. package/dist/point-picker.js.map +1 -0
  21. package/dist/pointcloud/point-cloud-node.d.ts +56 -0
  22. package/dist/pointcloud/point-cloud-node.d.ts.map +1 -0
  23. package/dist/pointcloud/point-cloud-node.js +112 -0
  24. package/dist/pointcloud/point-cloud-node.js.map +1 -0
  25. package/dist/pointcloud/point-cloud-renderer.d.ts +135 -0
  26. package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -0
  27. package/dist/pointcloud/point-cloud-renderer.js +296 -0
  28. package/dist/pointcloud/point-cloud-renderer.js.map +1 -0
  29. package/dist/pointcloud/point-pipeline.d.ts +25 -0
  30. package/dist/pointcloud/point-pipeline.d.ts.map +1 -0
  31. package/dist/pointcloud/point-pipeline.js +111 -0
  32. package/dist/pointcloud/point-pipeline.js.map +1 -0
  33. package/dist/pointcloud/point-shader.wgsl.d.ts +22 -0
  34. package/dist/pointcloud/point-shader.wgsl.d.ts.map +1 -0
  35. package/dist/pointcloud/point-shader.wgsl.js +212 -0
  36. package/dist/pointcloud/point-shader.wgsl.js.map +1 -0
  37. package/dist/types.d.ts +15 -4
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +3 -3
@@ -0,0 +1,212 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * WGSL for the point cloud splat pipeline.
6
+ *
7
+ * Draws each point as an instanced quad (6 verts per point, triangle-list
8
+ * topology) so we can give it a real on-screen size — `point-list` has
9
+ * no `gl_PointSize` equivalent in WebGPU, which is why a 1-px point cloud
10
+ * looks like a halftone screen as you zoom in.
11
+ *
12
+ * Three size modes (uniforms.sizing.x):
13
+ * 0 = fixed-px — every point renders at `pointSizePx` pixels
14
+ * 1 = adaptive-world — splat covers `worldRadius` metres, projected
15
+ * 2 = attenuated — adaptive but clamped to [1, pointSizePx] px
16
+ *
17
+ * Color modes (uniforms.colorModeAndExtras.x):
18
+ * 0 = per-vertex RGB, 1 = classification, 2 = intensity ramp,
19
+ * 3 = height ramp, 4 = fixed override.
20
+ *
21
+ * Round shape: fragment discards corners outside the unit disc, so
22
+ * splats render as circles (not squares) at any size > ~3 px.
23
+ */
24
+ export const pointShaderSource = `
25
+ struct PointUniforms {
26
+ viewProj: mat4x4<f32>,
27
+ model: mat4x4<f32>,
28
+ colorOverride: vec4<f32>,
29
+ // x = colorMode, y = pointSizePx, z = heightMin, w = heightMax
30
+ colorModeAndExtras: vec4<f32>,
31
+ // x = sizeMode, y = worldRadius (m), z = viewportWidth, w = viewportHeight
32
+ sizing: vec4<f32>,
33
+ sectionPlane: vec4<f32>,
34
+ // x = assetExpressId (federation-aware globalId), y = sectionEnabled,
35
+ // z = roundShape, w = unused
36
+ flags: vec4<u32>,
37
+ }
38
+ @binding(0) @group(0) var<uniform> uniforms: PointUniforms;
39
+
40
+ struct VertexInput {
41
+ @location(0) position: vec3<f32>,
42
+ @location(1) rgbAndClass: vec4<f32>, // unorm8x4 → 0..1 each
43
+ @location(2) intensityPacked: u32, // low 16 bits = intensity
44
+ @location(3) entityId: u32,
45
+ }
46
+
47
+ struct VertexOutput {
48
+ @builtin(position) position: vec4<f32>,
49
+ @location(0) color: vec4<f32>,
50
+ @location(1) worldPos: vec3<f32>,
51
+ @location(2) @interpolate(flat) entityId: u32,
52
+ @location(3) quadUv: vec2<f32>,
53
+ }
54
+
55
+ fn classification_color(class_id: u32) -> vec3<f32> {
56
+ switch (class_id) {
57
+ case 0u, 1u: { return vec3<f32>(0.65, 0.65, 0.65); }
58
+ case 2u: { return vec3<f32>(0.55, 0.40, 0.25); }
59
+ case 3u: { return vec3<f32>(0.55, 0.85, 0.45); }
60
+ case 4u: { return vec3<f32>(0.30, 0.75, 0.30); }
61
+ case 5u: { return vec3<f32>(0.10, 0.45, 0.15); }
62
+ case 6u: { return vec3<f32>(0.95, 0.55, 0.20); }
63
+ case 7u: { return vec3<f32>(0.95, 0.20, 0.20); }
64
+ case 8u: { return vec3<f32>(0.20, 0.85, 0.95); }
65
+ case 9u: { return vec3<f32>(0.20, 0.40, 0.95); }
66
+ case 10u: { return vec3<f32>(0.55, 0.20, 0.85); }
67
+ case 11u: { return vec3<f32>(0.30, 0.30, 0.30); }
68
+ case 13u: { return vec3<f32>(0.95, 0.85, 0.20); }
69
+ case 14u: { return vec3<f32>(0.95, 0.95, 0.50); }
70
+ case 15u: { return vec3<f32>(0.20, 0.20, 0.55); }
71
+ case 16u: { return vec3<f32>(0.30, 0.65, 0.65); }
72
+ case 17u: { return vec3<f32>(0.85, 0.70, 0.50); }
73
+ case 18u: { return vec3<f32>(0.95, 0.20, 0.20); }
74
+ default: { return vec3<f32>(0.65, 0.65, 0.65); }
75
+ }
76
+ }
77
+
78
+ fn height_ramp(t: f32) -> vec3<f32> {
79
+ let s = clamp(t, 0.0, 1.0);
80
+ if (s < 0.25) {
81
+ let k = s / 0.25;
82
+ return mix(vec3<f32>(0.10, 0.20, 0.85), vec3<f32>(0.10, 0.85, 0.85), k);
83
+ } else if (s < 0.5) {
84
+ let k = (s - 0.25) / 0.25;
85
+ return mix(vec3<f32>(0.10, 0.85, 0.85), vec3<f32>(0.20, 0.85, 0.20), k);
86
+ } else if (s < 0.75) {
87
+ let k = (s - 0.5) / 0.25;
88
+ return mix(vec3<f32>(0.20, 0.85, 0.20), vec3<f32>(0.95, 0.95, 0.20), k);
89
+ } else {
90
+ let k = (s - 0.75) / 0.25;
91
+ return mix(vec3<f32>(0.95, 0.95, 0.20), vec3<f32>(0.95, 0.20, 0.10), k);
92
+ }
93
+ }
94
+
95
+ @vertex
96
+ fn vs_main(input: VertexInput, @builtin(vertex_index) vId: u32) -> VertexOutput {
97
+ // Quad corners (two triangles, CCW) in unit disc coords:
98
+ // tri 1: (-1,-1)(1,-1)(1,1)
99
+ // tri 2: (-1,-1)(1, 1)(-1,1)
100
+ var corners = array<vec2<f32>, 6>(
101
+ vec2<f32>(-1.0, -1.0),
102
+ vec2<f32>( 1.0, -1.0),
103
+ vec2<f32>( 1.0, 1.0),
104
+ vec2<f32>(-1.0, -1.0),
105
+ vec2<f32>( 1.0, 1.0),
106
+ vec2<f32>(-1.0, 1.0),
107
+ );
108
+ let corner = corners[vId];
109
+
110
+ let worldPos4 = uniforms.model * vec4<f32>(input.position, 1.0);
111
+ var clipPos = uniforms.viewProj * worldPos4;
112
+
113
+ // Compute splat half-extent in pixels for the active size mode.
114
+ let sizeMode = u32(uniforms.sizing.x);
115
+ let worldRadius = uniforms.sizing.y;
116
+ let viewport = uniforms.sizing.zw;
117
+ let pointSizePx = uniforms.colorModeAndExtras.y;
118
+
119
+ // halfPx is the splat RADIUS in pixels. The user-facing
120
+ // pointSizePx is the diameter ("8 px point"), so divide by 2
121
+ // when feeding it to the pipeline. Without this the fixed and
122
+ // attenuated branches render splats at ~2x their requested size.
123
+ var halfPx: f32;
124
+ if (sizeMode == 0u) {
125
+ halfPx = max(0.5, pointSizePx * 0.5);
126
+ } else {
127
+ // Project a world-radius offset to clip space, take pixel delta.
128
+ // worldRadius is already a radius — no /2 needed here.
129
+ let edgePos = uniforms.viewProj * (worldPos4 + vec4<f32>(worldRadius, 0.0, 0.0, 0.0));
130
+ let centerNdcX = clipPos.x / max(abs(clipPos.w), 1e-6);
131
+ let edgeNdcX = edgePos.x / max(abs(edgePos.w), 1e-6);
132
+ let projectedPx = abs(edgeNdcX - centerNdcX) * 0.5 * viewport.x;
133
+ if (sizeMode == 2u) {
134
+ halfPx = clamp(projectedPx, 0.5, max(0.5, pointSizePx * 0.5));
135
+ } else {
136
+ halfPx = max(0.5, projectedPx);
137
+ }
138
+ }
139
+
140
+ // Convert pixel offset to clip-space offset. Multiply by clipPos.w
141
+ // because the GPU divides by w during the perspective divide.
142
+ let halfClip = vec2<f32>(halfPx) / max(viewport, vec2<f32>(1.0)) * 2.0 * abs(clipPos.w);
143
+ clipPos.x = clipPos.x + corner.x * halfClip.x;
144
+ clipPos.y = clipPos.y + corner.y * halfClip.y;
145
+
146
+ // Color selection
147
+ let mode = u32(uniforms.colorModeAndExtras.x);
148
+ let intensity01 = f32(input.intensityPacked & 0xffffu) / 65535.0;
149
+ let classId = u32(round(input.rgbAndClass.a * 255.0));
150
+ let heightT =
151
+ (worldPos4.y - uniforms.colorModeAndExtras.z) /
152
+ max(1e-6, uniforms.colorModeAndExtras.w - uniforms.colorModeAndExtras.z);
153
+
154
+ var rgb: vec3<f32>;
155
+ switch (mode) {
156
+ case 0u: { rgb = input.rgbAndClass.rgb; }
157
+ case 1u: { rgb = classification_color(classId); }
158
+ case 2u: { rgb = vec3<f32>(intensity01, intensity01, intensity01); }
159
+ case 3u: { rgb = height_ramp(heightT); }
160
+ case 4u: { rgb = uniforms.colorOverride.rgb; }
161
+ default: { rgb = input.rgbAndClass.rgb; }
162
+ }
163
+
164
+ var output: VertexOutput;
165
+ output.position = clipPos;
166
+ output.color = vec4<f32>(rgb, 1.0);
167
+ output.worldPos = worldPos4.xyz;
168
+ output.entityId = input.entityId;
169
+ output.quadUv = corner;
170
+ return output;
171
+ }
172
+
173
+ struct FragmentOutput {
174
+ @location(0) color: vec4<f32>,
175
+ @location(1) objectId: vec4<f32>,
176
+ }
177
+
178
+ @fragment
179
+ fn fs_main(input: VertexOutput) -> FragmentOutput {
180
+ // Round shape — discard corners outside the unit disc.
181
+ if (uniforms.flags.z == 1u) {
182
+ if (dot(input.quadUv, input.quadUv) > 1.0) {
183
+ discard;
184
+ }
185
+ }
186
+
187
+ // Section-plane clipping
188
+ if (uniforms.flags.y == 1u) {
189
+ let d = dot(uniforms.sectionPlane.xyz, input.worldPos) - uniforms.sectionPlane.w;
190
+ if (d > 0.0) {
191
+ discard;
192
+ }
193
+ }
194
+
195
+ var output: FragmentOutput;
196
+ output.color = input.color;
197
+ // Prefer the asset-level expressId from the uniform when it's set
198
+ // (federation needs to relabel post-stream, so we can't rely on
199
+ // the per-vertex attribute that was baked at upload time).
200
+ // flags.x == 0 → fall back to per-vertex value to preserve the
201
+ // legacy contract during the upload-only rendering window.
202
+ let id = select(input.entityId, uniforms.flags.x, uniforms.flags.x != 0u);
203
+ output.objectId = vec4<f32>(
204
+ f32((id >> 0u) & 0xffu) / 255.0,
205
+ f32((id >> 8u) & 0xffu) / 255.0,
206
+ f32((id >> 16u) & 0xffu) / 255.0,
207
+ f32((id >> 24u) & 0xffu) / 255.0,
208
+ );
209
+ return output;
210
+ }
211
+ `;
212
+ //# sourceMappingURL=point-shader.wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-shader.wgsl.js","sourceRoot":"","sources":["../../src/pointcloud/point-shader.wgsl.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2LhC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -148,11 +148,22 @@ export interface RenderOptions {
148
148
  selectedIds?: Set<number>;
149
149
  /**
150
150
  * Per-frame alpha overrides — primary use case is X-Ray mode.
151
+ *
151
152
  * Map<expressId, alpha 0..1>. Non-selected meshes/batches whose expressId
152
- * appears in this map render at the override alpha through the existing
153
- * transparent pipeline. Selected meshes are exempt so highlights stay opaque.
154
- * Mixed batches (some entries overridden, some not) take the minimum override
155
- * alpha — selected meshes are then re-rendered on top by the highlight pass.
153
+ * appears in this map render at the override alpha through the transparent
154
+ * pipeline. Selected meshes (`selectedId` / `selectedIds`) are exempt at
155
+ * every site, so highlights always paint with their own alpha.
156
+ *
157
+ * Mixed batches (some entries overridden, some not) take the minimum
158
+ * override alpha across non-selected ids; selected meshes in the batch
159
+ * are then redrawn on top by the highlight pass.
160
+ *
161
+ * The renderer snapshots this map at frame start, so callers may freely
162
+ * mutate or recycle their copy after `render()` returns.
163
+ *
164
+ * Note: alphas `>= 0.99` are treated as opaque (the cutoff for switching to
165
+ * the transparent pipeline). Entries at or above that threshold are no-ops
166
+ * — keep them out of the map to avoid unnecessary work.
156
167
  */
157
168
  transparencyOverrides?: Map<number, number> | null;
158
169
  buildingRotation?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/renderer",
3
- "version": "1.17.0",
3
+ "version": "1.18.0",
4
4
  "description": "WebGPU renderer for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,9 +12,9 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/geometry": "^1.16.6",
15
+ "@ifc-lite/geometry": "^1.17.0",
16
16
  "@ifc-lite/spatial": "^1.14.5",
17
- "@ifc-lite/wasm": "^1.16.7"
17
+ "@ifc-lite/wasm": "^1.16.8"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@webgpu/types": "^0.1.69",