@ifc-lite/renderer 1.1.7 → 1.2.1
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/LICENSE +373 -0
- package/dist/bvh.d.ts +50 -0
- package/dist/bvh.d.ts.map +1 -0
- package/dist/bvh.js +177 -0
- package/dist/bvh.js.map +1 -0
- package/dist/camera.d.ts +17 -0
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +72 -6
- package/dist/camera.js.map +1 -1
- package/dist/index.d.ts +51 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +587 -125
- package/dist/index.js.map +1 -1
- package/dist/math.d.ts +30 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +103 -0
- package/dist/math.js.map +1 -1
- package/dist/picker.js +2 -2
- package/dist/picker.js.map +1 -1
- package/dist/pipeline.d.ts +17 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +351 -49
- package/dist/pipeline.js.map +1 -1
- package/dist/raycaster.d.ts +67 -0
- package/dist/raycaster.d.ts.map +1 -0
- package/dist/raycaster.js +192 -0
- package/dist/raycaster.js.map +1 -0
- package/dist/scene.d.ts +56 -2
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +362 -26
- package/dist/scene.js.map +1 -1
- package/dist/section-plane.d.ts +14 -4
- package/dist/section-plane.d.ts.map +1 -1
- package/dist/section-plane.js +129 -53
- package/dist/section-plane.js.map +1 -1
- package/dist/snap-detector.d.ts +119 -0
- package/dist/snap-detector.d.ts.map +1 -0
- package/dist/snap-detector.js +706 -0
- package/dist/snap-detector.js.map +1 -0
- package/dist/types.d.ts +14 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/zero-copy-uploader.d.ts +145 -0
- package/dist/zero-copy-uploader.d.ts.map +1 -0
- package/dist/zero-copy-uploader.js +146 -0
- package/dist/zero-copy-uploader.js.map +1 -0
- package/package.json +11 -10
package/dist/pipeline.js
CHANGED
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
export class RenderPipeline {
|
|
5
5
|
device;
|
|
6
|
+
webgpuDevice;
|
|
6
7
|
pipeline;
|
|
7
8
|
selectionPipeline; // Pipeline for selected meshes (renders on top)
|
|
9
|
+
transparentPipeline; // Pipeline for transparent meshes with alpha blending
|
|
8
10
|
depthTexture;
|
|
9
11
|
depthTextureView;
|
|
12
|
+
depthFormat = 'depth24plus';
|
|
13
|
+
colorFormat;
|
|
14
|
+
multisampleTexture = null;
|
|
15
|
+
multisampleTextureView = null;
|
|
16
|
+
sampleCount = 4; // MSAA sample count
|
|
10
17
|
uniformBuffer;
|
|
11
18
|
bindGroup;
|
|
12
19
|
bindGroupLayout; // Explicit layout shared between pipelines
|
|
@@ -15,15 +22,31 @@ export class RenderPipeline {
|
|
|
15
22
|
constructor(device, width = 1, height = 1) {
|
|
16
23
|
this.currentWidth = width;
|
|
17
24
|
this.currentHeight = height;
|
|
25
|
+
this.webgpuDevice = device;
|
|
18
26
|
this.device = device.getDevice();
|
|
19
|
-
|
|
20
|
-
//
|
|
27
|
+
this.colorFormat = device.getFormat();
|
|
28
|
+
// Check MSAA support and adjust sample count
|
|
29
|
+
// 4x MSAA provides good anti-aliasing for thin geometry
|
|
30
|
+
const maxSampleCount = this.device.limits?.maxSampleCount ?? 4;
|
|
31
|
+
this.sampleCount = Math.min(4, maxSampleCount);
|
|
32
|
+
// Create depth texture with MSAA support
|
|
21
33
|
this.depthTexture = this.device.createTexture({
|
|
22
34
|
size: { width, height },
|
|
23
35
|
format: 'depth24plus',
|
|
24
36
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
37
|
+
sampleCount: this.sampleCount > 1 ? this.sampleCount : 1,
|
|
25
38
|
});
|
|
26
39
|
this.depthTextureView = this.depthTexture.createView();
|
|
40
|
+
// Create multisample color texture for MSAA
|
|
41
|
+
if (this.sampleCount > 1) {
|
|
42
|
+
this.multisampleTexture = this.device.createTexture({
|
|
43
|
+
size: { width, height },
|
|
44
|
+
format: this.colorFormat,
|
|
45
|
+
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
46
|
+
sampleCount: this.sampleCount,
|
|
47
|
+
});
|
|
48
|
+
this.multisampleTextureView = this.multisampleTexture.createView();
|
|
49
|
+
}
|
|
27
50
|
// Create uniform buffer for camera matrices, PBR material, and section plane
|
|
28
51
|
// Layout: viewProj (64 bytes) + model (64 bytes) + baseColor (16 bytes) + metallicRoughness (8 bytes) +
|
|
29
52
|
// sectionPlane (16 bytes: vec3 normal + float position) + flags (16 bytes: u32 isSelected + u32 sectionEnabled + padding) = 192 bytes
|
|
@@ -66,6 +89,7 @@ export class RenderPipeline {
|
|
|
66
89
|
@location(0) worldPos: vec3<f32>,
|
|
67
90
|
@location(1) normal: vec3<f32>,
|
|
68
91
|
@location(2) @interpolate(flat) objectId: u32,
|
|
92
|
+
@location(3) viewPos: vec3<f32>, // For edge detection
|
|
69
93
|
}
|
|
70
94
|
|
|
71
95
|
@vertex
|
|
@@ -76,6 +100,8 @@ export class RenderPipeline {
|
|
|
76
100
|
output.worldPos = worldPos.xyz;
|
|
77
101
|
output.normal = normalize((uniforms.model * vec4<f32>(input.normal, 0.0)).xyz);
|
|
78
102
|
output.objectId = instanceIndex;
|
|
103
|
+
// Store view-space position for edge detection
|
|
104
|
+
output.viewPos = (uniforms.viewProj * worldPos).xyz;
|
|
79
105
|
return output;
|
|
80
106
|
}
|
|
81
107
|
|
|
@@ -110,7 +136,8 @@ export class RenderPipeline {
|
|
|
110
136
|
|
|
111
137
|
@fragment
|
|
112
138
|
fn fs_main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
113
|
-
// Section plane clipping
|
|
139
|
+
// Section plane clipping - discard fragments ABOVE the plane
|
|
140
|
+
// For Down axis (normal +Y), keeps everything below cut height (look down into building)
|
|
114
141
|
if (uniforms.flags.y == 1u) {
|
|
115
142
|
let planeNormal = uniforms.sectionPlane.xyz;
|
|
116
143
|
let planeDistance = uniforms.sectionPlane.w;
|
|
@@ -121,34 +148,123 @@ export class RenderPipeline {
|
|
|
121
148
|
}
|
|
122
149
|
|
|
123
150
|
let N = normalize(input.normal);
|
|
124
|
-
|
|
151
|
+
|
|
152
|
+
// Enhanced lighting with multiple sources
|
|
153
|
+
let sunLight = normalize(vec3<f32>(0.5, 1.0, 0.3)); // Main directional light
|
|
154
|
+
let fillLight = normalize(vec3<f32>(-0.5, 0.3, -0.3)); // Fill light
|
|
155
|
+
let rimLight = normalize(vec3<f32>(0.0, 0.2, -1.0)); // Rim light for edge definition
|
|
125
156
|
|
|
126
|
-
|
|
157
|
+
// Hemisphere ambient - reduced for less washed-out look
|
|
158
|
+
let skyColor = vec3<f32>(0.3, 0.35, 0.4); // Darker sky
|
|
159
|
+
let groundColor = vec3<f32>(0.15, 0.1, 0.08); // Darker ground
|
|
160
|
+
let hemisphereFactor = N.y * 0.5 + 0.5;
|
|
161
|
+
let ambient = mix(groundColor, skyColor, hemisphereFactor) * 0.25;
|
|
127
162
|
|
|
128
|
-
|
|
163
|
+
// Main sun light - reduced intensity, tighter wrap for more contrast
|
|
164
|
+
let NdotL = max(dot(N, sunLight), 0.0);
|
|
165
|
+
let wrap = 0.3; // Tighter wrap for more contrast
|
|
166
|
+
let diffuseSun = max((NdotL + wrap) / (1.0 + wrap), 0.0) * 0.55;
|
|
167
|
+
|
|
168
|
+
// Fill light - reduced
|
|
169
|
+
let NdotFill = max(dot(N, fillLight), 0.0);
|
|
170
|
+
let diffuseFill = NdotFill * 0.15;
|
|
129
171
|
|
|
130
|
-
//
|
|
131
|
-
let
|
|
132
|
-
let
|
|
172
|
+
// Rim light for edge definition
|
|
173
|
+
let NdotRim = max(dot(N, rimLight), 0.0);
|
|
174
|
+
let rim = pow(NdotRim, 4.0) * 0.15;
|
|
133
175
|
|
|
134
|
-
var
|
|
176
|
+
var baseColor = uniforms.baseColor.rgb;
|
|
177
|
+
|
|
178
|
+
// Detect if the color is close to white/gray (low saturation)
|
|
179
|
+
let baseGray = dot(baseColor, vec3<f32>(0.299, 0.587, 0.114));
|
|
180
|
+
let baseSaturation = length(baseColor - vec3<f32>(baseGray)) / max(baseGray, 0.001);
|
|
181
|
+
let isWhiteish = 1.0 - smoothstep(0.0, 0.3, baseSaturation);
|
|
182
|
+
|
|
183
|
+
// Darken whites/grays more to reduce washed-out appearance
|
|
184
|
+
baseColor = mix(baseColor, baseColor * 0.7, isWhiteish * 0.4);
|
|
185
|
+
|
|
186
|
+
// Combine all lighting
|
|
187
|
+
var color = baseColor * (ambient + diffuseSun + diffuseFill + rim);
|
|
135
188
|
|
|
136
189
|
// Selection highlight - add glow/fresnel effect
|
|
137
190
|
if (uniforms.flags.x == 1u) {
|
|
138
|
-
|
|
139
|
-
let V = normalize(-input.worldPos); // Assuming camera at origin (simplified)
|
|
191
|
+
let V = normalize(-input.worldPos);
|
|
140
192
|
let NdotV = max(dot(N, V), 0.0);
|
|
141
|
-
|
|
142
|
-
// Fresnel-like edge highlight for selection
|
|
143
193
|
let fresnel = pow(1.0 - NdotV, 2.0);
|
|
144
|
-
let highlightColor = vec3<f32>(0.3, 0.6, 1.0);
|
|
194
|
+
let highlightColor = vec3<f32>(0.3, 0.6, 1.0);
|
|
145
195
|
color = mix(color, highlightColor, fresnel * 0.5 + 0.2);
|
|
146
196
|
}
|
|
147
197
|
|
|
148
|
-
//
|
|
198
|
+
// Beautiful fresnel effect for transparent materials (glass)
|
|
199
|
+
var finalAlpha = uniforms.baseColor.a;
|
|
200
|
+
if (finalAlpha < 0.99) {
|
|
201
|
+
// Calculate view direction for fresnel
|
|
202
|
+
let V = normalize(-input.worldPos);
|
|
203
|
+
let NdotV = max(dot(N, V), 0.0);
|
|
204
|
+
|
|
205
|
+
// Enhanced fresnel effect - stronger at edges (grazing angles)
|
|
206
|
+
// Using Schlick's approximation for realistic glass reflection
|
|
207
|
+
let fresnelPower = 1.5; // Higher = softer edge reflections
|
|
208
|
+
let fresnel = pow(1.0 - NdotV, fresnelPower);
|
|
209
|
+
|
|
210
|
+
// Glass reflection tint (sky/environment reflection at edges)
|
|
211
|
+
let reflectionTint = vec3<f32>(0.92, 0.96, 1.0); // Cool sky reflection
|
|
212
|
+
let reflectionStrength = fresnel * 0.6; // Strong edge reflections
|
|
213
|
+
|
|
214
|
+
// Mix in reflection tint at edges
|
|
215
|
+
color = mix(color, color * reflectionTint, reflectionStrength);
|
|
216
|
+
|
|
217
|
+
// Add realistic glass shine - brighter at edges where light reflects
|
|
218
|
+
let glassShine = fresnel * 0.12;
|
|
219
|
+
color += glassShine;
|
|
220
|
+
|
|
221
|
+
// Slight desaturation at edges (glass reflects environment, not just color)
|
|
222
|
+
let edgeDesaturation = fresnel * 0.25;
|
|
223
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
224
|
+
color = mix(color, vec3<f32>(gray), edgeDesaturation);
|
|
225
|
+
|
|
226
|
+
// Make glass more transparent (reduce opacity by 30%)
|
|
227
|
+
finalAlpha = finalAlpha * 0.7;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Exposure adjustment - darken overall
|
|
231
|
+
color *= 0.85;
|
|
232
|
+
|
|
233
|
+
// Contrast enhancement
|
|
234
|
+
color = (color - 0.5) * 1.15 + 0.5;
|
|
235
|
+
color = max(color, vec3<f32>(0.0));
|
|
236
|
+
|
|
237
|
+
// Saturation boost - stronger for colored surfaces, less for whites
|
|
238
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
239
|
+
let satBoost = mix(1.4, 1.1, isWhiteish); // More saturation for colored surfaces
|
|
240
|
+
color = mix(vec3<f32>(gray), color, satBoost);
|
|
241
|
+
|
|
242
|
+
// ACES filmic tone mapping
|
|
243
|
+
let a = 2.51;
|
|
244
|
+
let b = 0.03;
|
|
245
|
+
let c = 2.43;
|
|
246
|
+
let d = 0.59;
|
|
247
|
+
let e = 0.14;
|
|
248
|
+
color = clamp((color * (a * color + b)) / (color * (c * color + d) + e), vec3<f32>(0.0), vec3<f32>(1.0));
|
|
249
|
+
|
|
250
|
+
// Subtle edge enhancement using screen-space derivatives
|
|
251
|
+
let depthGradient = length(vec2<f32>(
|
|
252
|
+
dpdx(input.viewPos.z),
|
|
253
|
+
dpdy(input.viewPos.z)
|
|
254
|
+
));
|
|
255
|
+
let normalGradient = length(vec2<f32>(
|
|
256
|
+
length(dpdx(input.normal)),
|
|
257
|
+
length(dpdy(input.normal))
|
|
258
|
+
));
|
|
259
|
+
|
|
260
|
+
let edgeFactor = smoothstep(0.0, 0.1, depthGradient * 10.0 + normalGradient * 5.0);
|
|
261
|
+
let edgeDarken = mix(1.0, 0.92, edgeFactor * 0.4); // Slightly stronger edge darkening
|
|
262
|
+
color *= edgeDarken;
|
|
263
|
+
|
|
264
|
+
// Gamma correction
|
|
149
265
|
color = pow(color, vec3<f32>(1.0 / 2.2));
|
|
150
266
|
|
|
151
|
-
return vec4<f32>(color,
|
|
267
|
+
return vec4<f32>(color, finalAlpha);
|
|
152
268
|
}
|
|
153
269
|
`,
|
|
154
270
|
});
|
|
@@ -156,8 +272,8 @@ export class RenderPipeline {
|
|
|
156
272
|
const pipelineLayout = this.device.createPipelineLayout({
|
|
157
273
|
bindGroupLayouts: [this.bindGroupLayout],
|
|
158
274
|
});
|
|
159
|
-
// Create render pipeline
|
|
160
|
-
|
|
275
|
+
// Create render pipeline descriptor
|
|
276
|
+
const pipelineDescriptor = {
|
|
161
277
|
layout: pipelineLayout,
|
|
162
278
|
vertex: {
|
|
163
279
|
module: shaderModule,
|
|
@@ -175,22 +291,25 @@ export class RenderPipeline {
|
|
|
175
291
|
fragment: {
|
|
176
292
|
module: shaderModule,
|
|
177
293
|
entryPoint: 'fs_main',
|
|
178
|
-
targets: [{ format }],
|
|
294
|
+
targets: [{ format: this.colorFormat }],
|
|
179
295
|
},
|
|
180
296
|
primitive: {
|
|
181
297
|
topology: 'triangle-list',
|
|
182
298
|
cullMode: 'none', // Disable culling to debug - IFC winding order varies
|
|
183
299
|
},
|
|
184
300
|
depthStencil: {
|
|
185
|
-
format:
|
|
301
|
+
format: this.depthFormat,
|
|
186
302
|
depthWriteEnabled: true,
|
|
187
|
-
depthCompare: '
|
|
303
|
+
depthCompare: 'greater', // Reverse-Z: greater instead of less
|
|
188
304
|
},
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
305
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
306
|
+
multisample: {
|
|
307
|
+
count: this.sampleCount,
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
this.pipeline = this.device.createRenderPipeline(pipelineDescriptor);
|
|
311
|
+
// Create selection pipeline descriptor
|
|
312
|
+
const selectionPipelineDescriptor = {
|
|
194
313
|
layout: pipelineLayout,
|
|
195
314
|
vertex: {
|
|
196
315
|
module: shaderModule,
|
|
@@ -208,20 +327,73 @@ export class RenderPipeline {
|
|
|
208
327
|
fragment: {
|
|
209
328
|
module: shaderModule,
|
|
210
329
|
entryPoint: 'fs_main',
|
|
211
|
-
targets: [{ format }],
|
|
330
|
+
targets: [{ format: this.colorFormat }],
|
|
212
331
|
},
|
|
213
332
|
primitive: {
|
|
214
333
|
topology: 'triangle-list',
|
|
215
334
|
cullMode: 'none',
|
|
216
335
|
},
|
|
217
336
|
depthStencil: {
|
|
218
|
-
format:
|
|
219
|
-
depthWriteEnabled:
|
|
220
|
-
depthCompare: '
|
|
221
|
-
depthBias:
|
|
222
|
-
depthBiasSlopeScale:
|
|
337
|
+
format: this.depthFormat,
|
|
338
|
+
depthWriteEnabled: false, // Don't overwrite depth - selected objects render on top of existing depth
|
|
339
|
+
depthCompare: 'greater-equal', // Allow rendering at same depth, but still respect objects in front
|
|
340
|
+
depthBias: 0,
|
|
341
|
+
depthBiasSlopeScale: 0,
|
|
223
342
|
},
|
|
224
|
-
|
|
343
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
344
|
+
multisample: {
|
|
345
|
+
count: this.sampleCount,
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
this.selectionPipeline = this.device.createRenderPipeline(selectionPipelineDescriptor);
|
|
349
|
+
// Create transparent pipeline descriptor (same shader, but with alpha blending)
|
|
350
|
+
const transparentPipelineDescriptor = {
|
|
351
|
+
layout: pipelineLayout,
|
|
352
|
+
vertex: {
|
|
353
|
+
module: shaderModule,
|
|
354
|
+
entryPoint: 'vs_main',
|
|
355
|
+
buffers: [
|
|
356
|
+
{
|
|
357
|
+
arrayStride: 24,
|
|
358
|
+
attributes: [
|
|
359
|
+
{ shaderLocation: 0, offset: 0, format: 'float32x3' },
|
|
360
|
+
{ shaderLocation: 1, offset: 12, format: 'float32x3' },
|
|
361
|
+
],
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
},
|
|
365
|
+
fragment: {
|
|
366
|
+
module: shaderModule,
|
|
367
|
+
entryPoint: 'fs_main',
|
|
368
|
+
targets: [{
|
|
369
|
+
format: this.colorFormat,
|
|
370
|
+
blend: {
|
|
371
|
+
color: {
|
|
372
|
+
srcFactor: 'src-alpha',
|
|
373
|
+
dstFactor: 'one-minus-src-alpha',
|
|
374
|
+
},
|
|
375
|
+
alpha: {
|
|
376
|
+
srcFactor: 'one',
|
|
377
|
+
dstFactor: 'one-minus-src-alpha',
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
}],
|
|
381
|
+
},
|
|
382
|
+
primitive: {
|
|
383
|
+
topology: 'triangle-list',
|
|
384
|
+
cullMode: 'none',
|
|
385
|
+
},
|
|
386
|
+
depthStencil: {
|
|
387
|
+
format: this.depthFormat,
|
|
388
|
+
depthWriteEnabled: false, // Don't write depth for transparent objects
|
|
389
|
+
depthCompare: 'greater', // Still test depth to respect opaque objects
|
|
390
|
+
},
|
|
391
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
392
|
+
multisample: {
|
|
393
|
+
count: this.sampleCount,
|
|
394
|
+
},
|
|
395
|
+
};
|
|
396
|
+
this.transparentPipeline = this.device.createRenderPipeline(transparentPipelineDescriptor);
|
|
225
397
|
// Create bind group using the explicit bind group layout
|
|
226
398
|
this.bindGroup = this.device.createBindGroup({
|
|
227
399
|
layout: this.bindGroupLayout,
|
|
@@ -292,10 +464,28 @@ export class RenderPipeline {
|
|
|
292
464
|
this.depthTexture.destroy();
|
|
293
465
|
this.depthTexture = this.device.createTexture({
|
|
294
466
|
size: { width, height },
|
|
295
|
-
format:
|
|
467
|
+
format: this.depthFormat,
|
|
296
468
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
469
|
+
sampleCount: this.sampleCount > 1 ? this.sampleCount : 1,
|
|
297
470
|
});
|
|
298
471
|
this.depthTextureView = this.depthTexture.createView();
|
|
472
|
+
// Recreate multisample texture
|
|
473
|
+
if (this.multisampleTexture) {
|
|
474
|
+
this.multisampleTexture.destroy();
|
|
475
|
+
}
|
|
476
|
+
if (this.sampleCount > 1) {
|
|
477
|
+
this.multisampleTexture = this.device.createTexture({
|
|
478
|
+
size: { width, height },
|
|
479
|
+
format: this.colorFormat,
|
|
480
|
+
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
481
|
+
sampleCount: this.sampleCount,
|
|
482
|
+
});
|
|
483
|
+
this.multisampleTextureView = this.multisampleTexture.createView();
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
this.multisampleTexture = null;
|
|
487
|
+
this.multisampleTextureView = null;
|
|
488
|
+
}
|
|
299
489
|
}
|
|
300
490
|
getPipeline() {
|
|
301
491
|
return this.pipeline;
|
|
@@ -303,9 +493,24 @@ export class RenderPipeline {
|
|
|
303
493
|
getSelectionPipeline() {
|
|
304
494
|
return this.selectionPipeline;
|
|
305
495
|
}
|
|
496
|
+
getTransparentPipeline() {
|
|
497
|
+
return this.transparentPipeline;
|
|
498
|
+
}
|
|
306
499
|
getDepthTextureView() {
|
|
307
500
|
return this.depthTextureView;
|
|
308
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Get multisample texture view (for MSAA rendering)
|
|
504
|
+
*/
|
|
505
|
+
getMultisampleTextureView() {
|
|
506
|
+
return this.multisampleTextureView;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Get sample count
|
|
510
|
+
*/
|
|
511
|
+
getSampleCount() {
|
|
512
|
+
return this.sampleCount;
|
|
513
|
+
}
|
|
309
514
|
getBindGroup() {
|
|
310
515
|
return this.bindGroup;
|
|
311
516
|
}
|
|
@@ -326,11 +531,12 @@ export class InstancedRenderPipeline {
|
|
|
326
531
|
depthTexture;
|
|
327
532
|
depthTextureView;
|
|
328
533
|
uniformBuffer;
|
|
534
|
+
colorFormat;
|
|
329
535
|
currentHeight;
|
|
330
536
|
constructor(device, width = 1, height = 1) {
|
|
331
537
|
this.currentHeight = height;
|
|
332
538
|
this.device = device.getDevice();
|
|
333
|
-
|
|
539
|
+
this.colorFormat = device.getFormat();
|
|
334
540
|
// Create depth texture
|
|
335
541
|
this.depthTexture = this.device.createTexture({
|
|
336
542
|
size: { width, height },
|
|
@@ -371,6 +577,7 @@ export class InstancedRenderPipeline {
|
|
|
371
577
|
@location(1) normal: vec3<f32>,
|
|
372
578
|
@location(2) color: vec4<f32>,
|
|
373
579
|
@location(3) @interpolate(flat) instanceId: u32,
|
|
580
|
+
@location(4) viewPos: vec3<f32>, // For edge detection
|
|
374
581
|
}
|
|
375
582
|
|
|
376
583
|
// Z-up to Y-up conversion matrix (IFC uses Z-up, WebGPU/viewer uses Y-up)
|
|
@@ -400,12 +607,15 @@ export class InstancedRenderPipeline {
|
|
|
400
607
|
output.normal = normalize(normalYUp);
|
|
401
608
|
output.color = inst.color;
|
|
402
609
|
output.instanceId = instanceIndex;
|
|
610
|
+
// Store view-space position for edge detection
|
|
611
|
+
output.viewPos = (uniforms.viewProj * worldPos).xyz;
|
|
403
612
|
return output;
|
|
404
613
|
}
|
|
405
614
|
|
|
406
615
|
@fragment
|
|
407
616
|
fn fs_main(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
408
|
-
// Section plane clipping
|
|
617
|
+
// Section plane clipping - discard fragments ABOVE the plane
|
|
618
|
+
// For Down axis (normal +Y), keeps everything below cut height (look down into building)
|
|
409
619
|
if (uniforms.flags.x == 1u) {
|
|
410
620
|
let planeNormal = uniforms.sectionPlane.xyz;
|
|
411
621
|
let planeDistance = uniforms.sectionPlane.w;
|
|
@@ -416,22 +626,114 @@ export class InstancedRenderPipeline {
|
|
|
416
626
|
}
|
|
417
627
|
|
|
418
628
|
let N = normalize(input.normal);
|
|
419
|
-
let L = normalize(vec3<f32>(0.5, 1.0, 0.3)); // Light direction
|
|
420
629
|
|
|
421
|
-
|
|
630
|
+
// Enhanced lighting with multiple sources
|
|
631
|
+
let sunLight = normalize(vec3<f32>(0.5, 1.0, 0.3)); // Main directional light
|
|
632
|
+
let fillLight = normalize(vec3<f32>(-0.5, 0.3, -0.3)); // Fill light
|
|
633
|
+
let rimLight = normalize(vec3<f32>(0.0, 0.2, -1.0)); // Rim light for edge definition
|
|
634
|
+
|
|
635
|
+
// Hemisphere ambient - reduced for less washed-out look
|
|
636
|
+
let skyColor = vec3<f32>(0.3, 0.35, 0.4); // Darker sky
|
|
637
|
+
let groundColor = vec3<f32>(0.15, 0.1, 0.08); // Darker ground
|
|
638
|
+
let hemisphereFactor = N.y * 0.5 + 0.5;
|
|
639
|
+
let ambient = mix(groundColor, skyColor, hemisphereFactor) * 0.25;
|
|
640
|
+
|
|
641
|
+
// Main sun light - reduced intensity, tighter wrap for more contrast
|
|
642
|
+
let NdotL = max(dot(N, sunLight), 0.0);
|
|
643
|
+
let wrap = 0.3; // Tighter wrap for more contrast
|
|
644
|
+
let diffuseSun = max((NdotL + wrap) / (1.0 + wrap), 0.0) * 0.55;
|
|
645
|
+
|
|
646
|
+
// Fill light - reduced
|
|
647
|
+
let NdotFill = max(dot(N, fillLight), 0.0);
|
|
648
|
+
let diffuseFill = NdotFill * 0.15;
|
|
649
|
+
|
|
650
|
+
// Rim light for edge definition
|
|
651
|
+
let NdotRim = max(dot(N, rimLight), 0.0);
|
|
652
|
+
let rim = pow(NdotRim, 4.0) * 0.15;
|
|
422
653
|
|
|
423
654
|
var baseColor = input.color.rgb;
|
|
655
|
+
|
|
656
|
+
// Detect if the color is close to white/gray (low saturation)
|
|
657
|
+
let baseGray = dot(baseColor, vec3<f32>(0.299, 0.587, 0.114));
|
|
658
|
+
let baseSaturation = length(baseColor - vec3<f32>(baseGray)) / max(baseGray, 0.001);
|
|
659
|
+
let isWhiteish = 1.0 - smoothstep(0.0, 0.3, baseSaturation);
|
|
660
|
+
|
|
661
|
+
// Darken whites/grays more to reduce washed-out appearance
|
|
662
|
+
baseColor = mix(baseColor, baseColor * 0.7, isWhiteish * 0.4);
|
|
424
663
|
|
|
425
|
-
//
|
|
426
|
-
|
|
427
|
-
let diffuse = NdotL * 0.7;
|
|
664
|
+
// Combine all lighting
|
|
665
|
+
var color = baseColor * (ambient + diffuseSun + diffuseFill + rim);
|
|
428
666
|
|
|
429
|
-
|
|
667
|
+
// Beautiful fresnel effect for transparent materials (glass)
|
|
668
|
+
var finalAlpha = input.color.a;
|
|
669
|
+
if (finalAlpha < 0.99) {
|
|
670
|
+
// Calculate view direction for fresnel
|
|
671
|
+
let V = normalize(-input.worldPos);
|
|
672
|
+
let NdotV = max(dot(N, V), 0.0);
|
|
673
|
+
|
|
674
|
+
// Enhanced fresnel effect - stronger at edges (grazing angles)
|
|
675
|
+
// Using Schlick's approximation for realistic glass reflection
|
|
676
|
+
let fresnelPower = 1.5; // Higher = softer edge reflections
|
|
677
|
+
let fresnel = pow(1.0 - NdotV, fresnelPower);
|
|
678
|
+
|
|
679
|
+
// Glass reflection tint (sky/environment reflection at edges)
|
|
680
|
+
let reflectionTint = vec3<f32>(0.92, 0.96, 1.0); // Cool sky reflection
|
|
681
|
+
let reflectionStrength = fresnel * 0.6; // Strong edge reflections
|
|
682
|
+
|
|
683
|
+
// Mix in reflection tint at edges
|
|
684
|
+
color = mix(color, color * reflectionTint, reflectionStrength);
|
|
685
|
+
|
|
686
|
+
// Add realistic glass shine - brighter at edges where light reflects
|
|
687
|
+
let glassShine = fresnel * 0.12;
|
|
688
|
+
color += glassShine;
|
|
689
|
+
|
|
690
|
+
// Slight desaturation at edges (glass reflects environment, not just color)
|
|
691
|
+
let edgeDesaturation = fresnel * 0.25;
|
|
692
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
693
|
+
color = mix(color, vec3<f32>(gray), edgeDesaturation);
|
|
694
|
+
|
|
695
|
+
// Make glass more transparent (reduce opacity by 30%)
|
|
696
|
+
finalAlpha = finalAlpha * 0.7;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// Exposure adjustment - darken overall
|
|
700
|
+
color *= 0.85;
|
|
701
|
+
|
|
702
|
+
// Contrast enhancement
|
|
703
|
+
color = (color - 0.5) * 1.15 + 0.5;
|
|
704
|
+
color = max(color, vec3<f32>(0.0));
|
|
705
|
+
|
|
706
|
+
// Saturation boost - stronger for colored surfaces, less for whites
|
|
707
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
708
|
+
let satBoost = mix(1.4, 1.1, isWhiteish); // More saturation for colored surfaces
|
|
709
|
+
color = mix(vec3<f32>(gray), color, satBoost);
|
|
430
710
|
|
|
431
|
-
//
|
|
711
|
+
// ACES filmic tone mapping
|
|
712
|
+
let a = 2.51;
|
|
713
|
+
let b = 0.03;
|
|
714
|
+
let c = 2.43;
|
|
715
|
+
let d = 0.59;
|
|
716
|
+
let e = 0.14;
|
|
717
|
+
color = clamp((color * (a * color + b)) / (color * (c * color + d) + e), vec3<f32>(0.0), vec3<f32>(1.0));
|
|
718
|
+
|
|
719
|
+
// Subtle edge enhancement using screen-space derivatives
|
|
720
|
+
let depthGradient = length(vec2<f32>(
|
|
721
|
+
dpdx(input.viewPos.z),
|
|
722
|
+
dpdy(input.viewPos.z)
|
|
723
|
+
));
|
|
724
|
+
let normalGradient = length(vec2<f32>(
|
|
725
|
+
length(dpdx(input.normal)),
|
|
726
|
+
length(dpdy(input.normal))
|
|
727
|
+
));
|
|
728
|
+
|
|
729
|
+
let edgeFactor = smoothstep(0.0, 0.1, depthGradient * 10.0 + normalGradient * 5.0);
|
|
730
|
+
let edgeDarken = mix(1.0, 0.92, edgeFactor * 0.4); // Slightly stronger edge darkening
|
|
731
|
+
color *= edgeDarken;
|
|
732
|
+
|
|
733
|
+
// Gamma correction
|
|
432
734
|
color = pow(color, vec3<f32>(1.0 / 2.2));
|
|
433
735
|
|
|
434
|
-
return vec4<f32>(color,
|
|
736
|
+
return vec4<f32>(color, finalAlpha);
|
|
435
737
|
}
|
|
436
738
|
`,
|
|
437
739
|
});
|
|
@@ -454,16 +756,16 @@ export class InstancedRenderPipeline {
|
|
|
454
756
|
fragment: {
|
|
455
757
|
module: shaderModule,
|
|
456
758
|
entryPoint: 'fs_main',
|
|
457
|
-
targets: [{ format }],
|
|
759
|
+
targets: [{ format: this.colorFormat }],
|
|
458
760
|
},
|
|
459
761
|
primitive: {
|
|
460
762
|
topology: 'triangle-list',
|
|
461
763
|
cullMode: 'none',
|
|
462
764
|
},
|
|
463
765
|
depthStencil: {
|
|
464
|
-
format: 'depth24plus',
|
|
766
|
+
format: 'depth24plus', // Will be updated if reverse-Z is enabled
|
|
465
767
|
depthWriteEnabled: true,
|
|
466
|
-
depthCompare: '
|
|
768
|
+
depthCompare: 'greater', // Reverse-Z: greater instead of less
|
|
467
769
|
},
|
|
468
770
|
});
|
|
469
771
|
// Note: bind groups are created per-instanced-mesh via createInstanceBindGroup()
|
|
@@ -503,7 +805,7 @@ export class InstancedRenderPipeline {
|
|
|
503
805
|
this.depthTexture.destroy();
|
|
504
806
|
this.depthTexture = this.device.createTexture({
|
|
505
807
|
size: { width, height },
|
|
506
|
-
format: 'depth24plus',
|
|
808
|
+
format: 'depth24plus', // Default format for instanced pipeline
|
|
507
809
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
508
810
|
});
|
|
509
811
|
this.depthTextureView = this.depthTexture.createView();
|
package/dist/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAS/D,MAAM,OAAO,cAAc;IACf,MAAM,CAAY;IAClB,YAAY,CAAe;IAC3B,QAAQ,CAAoB;IAC5B,iBAAiB,CAAoB,CAAE,gDAAgD;IACvF,mBAAmB,CAAoB,CAAE,sDAAsD;IAC/F,YAAY,CAAa;IACzB,gBAAgB,CAAiB;IACjC,WAAW,GAAqB,aAAa,CAAC;IAC9C,WAAW,CAAmB;IAC9B,kBAAkB,GAAsB,IAAI,CAAC;IAC7C,sBAAsB,GAA0B,IAAI,CAAC;IACrD,WAAW,GAAW,CAAC,CAAC,CAAE,oBAAoB;IAC9C,aAAa,CAAY;IACzB,SAAS,CAAe;IACxB,eAAe,CAAqB,CAAE,2CAA2C;IACjF,YAAY,CAAS;IACrB,aAAa,CAAS;IAE9B,YAAY,MAAoB,EAAE,QAAgB,CAAC,EAAE,SAAiB,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAEtC,6CAA6C;QAC7C,wDAAwD;QACxD,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAE/C,yCAAyC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,eAAe,CAAC,iBAAiB;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAEvD,4CAA4C;QAC5C,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAChD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB;gBACxC,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACvE,CAAC;QAED,6EAA6E;QAC7E,wGAAwG;QACxG,8IAA8I;QAC9I,4DAA4D;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,GAAG,EAAE,mCAAmC;YAC9C,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SAC1D,CAAC,CAAC;QAEH,kFAAkF;QAClF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;YACrD,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ;oBAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B;aACJ;SACJ,CAAC,CAAC;QAEH,wFAAwF;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAChD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuMX;SACE,CAAC,CAAC;QAEH,gFAAgF;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACpD,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;SAC3C,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,kBAAkB,GAAgC;YACpD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE,EAAE,qBAAqB;wBACtC,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW;4BAClE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS;yBACpE;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM,EAAE,sDAAsD;aAC3E;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,SAAS,EAAG,qCAAqC;aAClE;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QAErE,uCAAuC;QACvC,MAAM,2BAA2B,GAAgC;YAC7D,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,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;yBACzD;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,KAAK,EAAG,2EAA2E;gBACtG,YAAY,EAAE,eAAe,EAAG,oEAAoE;gBACpG,SAAS,EAAE,CAAC;gBACZ,mBAAmB,EAAE,CAAC;aACzB;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;QAEvF,gFAAgF;QAChF,MAAM,6BAA6B,GAAgC;YAC/D,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE;4BACR,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;yBACzD;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC;wBACN,MAAM,EAAE,IAAI,CAAC,WAAW;wBACxB,KAAK,EAAE;4BACH,KAAK,EAAE;gCACH,SAAS,EAAE,WAAW;gCACtB,SAAS,EAAE,qBAAqB;6BACnC;4BACD,KAAK,EAAE;gCACH,SAAS,EAAE,KAAK;gCAChB,SAAS,EAAE,qBAAqB;6BACnC;yBACJ;qBACJ,CAAC;aACL;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,iBAAiB,EAAE,KAAK,EAAG,4CAA4C;gBACvE,YAAY,EAAE,SAAS,EAAI,6CAA6C;aAC3E;YACD,sEAAsE;YACtE,WAAW,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,WAAW;aAC1B;SAC2B,CAAC;QAEjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;QAE3F,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,eAAe;YAC5B,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;iBAC3C;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,cAAc,CACV,QAAsB,EACtB,KAAmB,EACnB,KAAwC,EACxC,QAAoD,EACpD,YAAuF,EACvF,UAAoB;QAEpB,uCAAuC;QACvC,sHAAsH;QACtH,oEAAoE;QACpE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAE/E,gDAAgD;QAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAExB,8CAA8C;QAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEtB,+CAA+C;QAC/C,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,sBAAsB;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,GAAG,CAAC;QAC3C,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QAEvB,qCAAqC;QAErC,4EAA4E;QAC5E,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,gEAAgE;QAChE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,aAAa;QAC3D,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAChE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA6B,WAAW;QAC1D,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA6B,WAAW;QAE1D,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa,EAAE,MAAc;QACrC,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,MAAc;QAChC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO;QAEtC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAEvD,+BAA+B;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAChD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACvB,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,KAAK,EAAE,eAAe,CAAC,iBAAiB;gBACxC,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,CAAC;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,yBAAyB;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,oBAAoB;QAChB,OAAO,GAAG,CAAC,CAAC,sBAAsB;IACtC,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACxB,MAAM,CAAY;IAClB,QAAQ,CAAoB;IAC5B,YAAY,CAAa;IACzB,gBAAgB,CAAiB;IACjC,aAAa,CAAY;IACzB,WAAW,CAAmB;IAC9B,aAAa,CAAS;IAE9B,YAAY,MAAoB,EAAE,QAAgB,CAAC,EAAE,SAAiB,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAEtC,uBAAuB;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,eAAe,CAAC,iBAAiB;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAEvD,8DAA8D;QAC9D,sFAAsF;QACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,EAAE,EAAE,kCAAkC;YAC5C,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SAC1D,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAChD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwLX;SACE,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC7C,MAAM,EAAE,MAAM;YACd,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE;oBACL;wBACI,WAAW,EAAE,EAAE,EAAE,qBAAqB;wBACtC,UAAU,EAAE;4BACR,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW;4BAClE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS;yBACpE;qBACJ;iBACJ;aACJ;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBACV,MAAM,EAAE,aAAa,EAAG,0CAA0C;gBAClE,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,SAAS,EAAG,qCAAqC;aAClE;SACJ,CAAC,CAAC;QACH,iFAAiF;QACjF,8CAA8C;IAClD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAsB,EAAE,YAAuF;QAC1H,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;QACpD,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAExB,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC;YACnC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACf,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,MAAc;QAChC,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACrE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,aAAa,EAAG,wCAAwC;YAChE,KAAK,EAAE,eAAe,CAAC,iBAAiB;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa,EAAE,MAAc;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,cAAyB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3C,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;iBAC3C;gBACD;oBACI,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;iBACvC;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|