@ifc-lite/renderer 1.1.6 → 1.2.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/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 +42 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +429 -87
- 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 +347 -47
- 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/snap-detector.d.ts +73 -0
- package/dist/snap-detector.d.ts.map +1 -0
- package/dist/snap-detector.js +291 -0
- package/dist/snap-detector.js.map +1 -0
- package/dist/types.d.ts +9 -0
- 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
|
|
|
@@ -121,34 +147,123 @@ export class RenderPipeline {
|
|
|
121
147
|
}
|
|
122
148
|
|
|
123
149
|
let N = normalize(input.normal);
|
|
124
|
-
|
|
150
|
+
|
|
151
|
+
// Enhanced lighting with multiple sources
|
|
152
|
+
let sunLight = normalize(vec3<f32>(0.5, 1.0, 0.3)); // Main directional light
|
|
153
|
+
let fillLight = normalize(vec3<f32>(-0.5, 0.3, -0.3)); // Fill light
|
|
154
|
+
let rimLight = normalize(vec3<f32>(0.0, 0.2, -1.0)); // Rim light for edge definition
|
|
125
155
|
|
|
126
|
-
|
|
156
|
+
// Hemisphere ambient - reduced for less washed-out look
|
|
157
|
+
let skyColor = vec3<f32>(0.3, 0.35, 0.4); // Darker sky
|
|
158
|
+
let groundColor = vec3<f32>(0.15, 0.1, 0.08); // Darker ground
|
|
159
|
+
let hemisphereFactor = N.y * 0.5 + 0.5;
|
|
160
|
+
let ambient = mix(groundColor, skyColor, hemisphereFactor) * 0.25;
|
|
127
161
|
|
|
128
|
-
|
|
162
|
+
// Main sun light - reduced intensity, tighter wrap for more contrast
|
|
163
|
+
let NdotL = max(dot(N, sunLight), 0.0);
|
|
164
|
+
let wrap = 0.3; // Tighter wrap for more contrast
|
|
165
|
+
let diffuseSun = max((NdotL + wrap) / (1.0 + wrap), 0.0) * 0.55;
|
|
166
|
+
|
|
167
|
+
// Fill light - reduced
|
|
168
|
+
let NdotFill = max(dot(N, fillLight), 0.0);
|
|
169
|
+
let diffuseFill = NdotFill * 0.15;
|
|
129
170
|
|
|
130
|
-
//
|
|
131
|
-
let
|
|
132
|
-
let
|
|
171
|
+
// Rim light for edge definition
|
|
172
|
+
let NdotRim = max(dot(N, rimLight), 0.0);
|
|
173
|
+
let rim = pow(NdotRim, 4.0) * 0.15;
|
|
133
174
|
|
|
134
|
-
var
|
|
175
|
+
var baseColor = uniforms.baseColor.rgb;
|
|
176
|
+
|
|
177
|
+
// Detect if the color is close to white/gray (low saturation)
|
|
178
|
+
let baseGray = dot(baseColor, vec3<f32>(0.299, 0.587, 0.114));
|
|
179
|
+
let baseSaturation = length(baseColor - vec3<f32>(baseGray)) / max(baseGray, 0.001);
|
|
180
|
+
let isWhiteish = 1.0 - smoothstep(0.0, 0.3, baseSaturation);
|
|
181
|
+
|
|
182
|
+
// Darken whites/grays more to reduce washed-out appearance
|
|
183
|
+
baseColor = mix(baseColor, baseColor * 0.7, isWhiteish * 0.4);
|
|
184
|
+
|
|
185
|
+
// Combine all lighting
|
|
186
|
+
var color = baseColor * (ambient + diffuseSun + diffuseFill + rim);
|
|
135
187
|
|
|
136
188
|
// Selection highlight - add glow/fresnel effect
|
|
137
189
|
if (uniforms.flags.x == 1u) {
|
|
138
|
-
|
|
139
|
-
let V = normalize(-input.worldPos); // Assuming camera at origin (simplified)
|
|
190
|
+
let V = normalize(-input.worldPos);
|
|
140
191
|
let NdotV = max(dot(N, V), 0.0);
|
|
141
|
-
|
|
142
|
-
// Fresnel-like edge highlight for selection
|
|
143
192
|
let fresnel = pow(1.0 - NdotV, 2.0);
|
|
144
|
-
let highlightColor = vec3<f32>(0.3, 0.6, 1.0);
|
|
193
|
+
let highlightColor = vec3<f32>(0.3, 0.6, 1.0);
|
|
145
194
|
color = mix(color, highlightColor, fresnel * 0.5 + 0.2);
|
|
146
195
|
}
|
|
147
196
|
|
|
148
|
-
//
|
|
197
|
+
// Beautiful fresnel effect for transparent materials (glass)
|
|
198
|
+
var finalAlpha = uniforms.baseColor.a;
|
|
199
|
+
if (finalAlpha < 0.99) {
|
|
200
|
+
// Calculate view direction for fresnel
|
|
201
|
+
let V = normalize(-input.worldPos);
|
|
202
|
+
let NdotV = max(dot(N, V), 0.0);
|
|
203
|
+
|
|
204
|
+
// Enhanced fresnel effect - stronger at edges (grazing angles)
|
|
205
|
+
// Using Schlick's approximation for realistic glass reflection
|
|
206
|
+
let fresnelPower = 1.5; // Higher = softer edge reflections
|
|
207
|
+
let fresnel = pow(1.0 - NdotV, fresnelPower);
|
|
208
|
+
|
|
209
|
+
// Glass reflection tint (sky/environment reflection at edges)
|
|
210
|
+
let reflectionTint = vec3<f32>(0.92, 0.96, 1.0); // Cool sky reflection
|
|
211
|
+
let reflectionStrength = fresnel * 0.6; // Strong edge reflections
|
|
212
|
+
|
|
213
|
+
// Mix in reflection tint at edges
|
|
214
|
+
color = mix(color, color * reflectionTint, reflectionStrength);
|
|
215
|
+
|
|
216
|
+
// Add realistic glass shine - brighter at edges where light reflects
|
|
217
|
+
let glassShine = fresnel * 0.12;
|
|
218
|
+
color += glassShine;
|
|
219
|
+
|
|
220
|
+
// Slight desaturation at edges (glass reflects environment, not just color)
|
|
221
|
+
let edgeDesaturation = fresnel * 0.25;
|
|
222
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
223
|
+
color = mix(color, vec3<f32>(gray), edgeDesaturation);
|
|
224
|
+
|
|
225
|
+
// Make glass more transparent (reduce opacity by 30%)
|
|
226
|
+
finalAlpha = finalAlpha * 0.7;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Exposure adjustment - darken overall
|
|
230
|
+
color *= 0.85;
|
|
231
|
+
|
|
232
|
+
// Contrast enhancement
|
|
233
|
+
color = (color - 0.5) * 1.15 + 0.5;
|
|
234
|
+
color = max(color, vec3<f32>(0.0));
|
|
235
|
+
|
|
236
|
+
// Saturation boost - stronger for colored surfaces, less for whites
|
|
237
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
238
|
+
let satBoost = mix(1.4, 1.1, isWhiteish); // More saturation for colored surfaces
|
|
239
|
+
color = mix(vec3<f32>(gray), color, satBoost);
|
|
240
|
+
|
|
241
|
+
// ACES filmic tone mapping
|
|
242
|
+
let a = 2.51;
|
|
243
|
+
let b = 0.03;
|
|
244
|
+
let c = 2.43;
|
|
245
|
+
let d = 0.59;
|
|
246
|
+
let e = 0.14;
|
|
247
|
+
color = clamp((color * (a * color + b)) / (color * (c * color + d) + e), vec3<f32>(0.0), vec3<f32>(1.0));
|
|
248
|
+
|
|
249
|
+
// Subtle edge enhancement using screen-space derivatives
|
|
250
|
+
let depthGradient = length(vec2<f32>(
|
|
251
|
+
dpdx(input.viewPos.z),
|
|
252
|
+
dpdy(input.viewPos.z)
|
|
253
|
+
));
|
|
254
|
+
let normalGradient = length(vec2<f32>(
|
|
255
|
+
length(dpdx(input.normal)),
|
|
256
|
+
length(dpdy(input.normal))
|
|
257
|
+
));
|
|
258
|
+
|
|
259
|
+
let edgeFactor = smoothstep(0.0, 0.1, depthGradient * 10.0 + normalGradient * 5.0);
|
|
260
|
+
let edgeDarken = mix(1.0, 0.92, edgeFactor * 0.4); // Slightly stronger edge darkening
|
|
261
|
+
color *= edgeDarken;
|
|
262
|
+
|
|
263
|
+
// Gamma correction
|
|
149
264
|
color = pow(color, vec3<f32>(1.0 / 2.2));
|
|
150
265
|
|
|
151
|
-
return vec4<f32>(color,
|
|
266
|
+
return vec4<f32>(color, finalAlpha);
|
|
152
267
|
}
|
|
153
268
|
`,
|
|
154
269
|
});
|
|
@@ -156,8 +271,8 @@ export class RenderPipeline {
|
|
|
156
271
|
const pipelineLayout = this.device.createPipelineLayout({
|
|
157
272
|
bindGroupLayouts: [this.bindGroupLayout],
|
|
158
273
|
});
|
|
159
|
-
// Create render pipeline
|
|
160
|
-
|
|
274
|
+
// Create render pipeline descriptor
|
|
275
|
+
const pipelineDescriptor = {
|
|
161
276
|
layout: pipelineLayout,
|
|
162
277
|
vertex: {
|
|
163
278
|
module: shaderModule,
|
|
@@ -175,22 +290,25 @@ export class RenderPipeline {
|
|
|
175
290
|
fragment: {
|
|
176
291
|
module: shaderModule,
|
|
177
292
|
entryPoint: 'fs_main',
|
|
178
|
-
targets: [{ format }],
|
|
293
|
+
targets: [{ format: this.colorFormat }],
|
|
179
294
|
},
|
|
180
295
|
primitive: {
|
|
181
296
|
topology: 'triangle-list',
|
|
182
297
|
cullMode: 'none', // Disable culling to debug - IFC winding order varies
|
|
183
298
|
},
|
|
184
299
|
depthStencil: {
|
|
185
|
-
format:
|
|
300
|
+
format: this.depthFormat,
|
|
186
301
|
depthWriteEnabled: true,
|
|
187
|
-
depthCompare: '
|
|
302
|
+
depthCompare: 'greater', // Reverse-Z: greater instead of less
|
|
188
303
|
},
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
304
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
305
|
+
multisample: {
|
|
306
|
+
count: this.sampleCount,
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
this.pipeline = this.device.createRenderPipeline(pipelineDescriptor);
|
|
310
|
+
// Create selection pipeline descriptor
|
|
311
|
+
const selectionPipelineDescriptor = {
|
|
194
312
|
layout: pipelineLayout,
|
|
195
313
|
vertex: {
|
|
196
314
|
module: shaderModule,
|
|
@@ -208,20 +326,73 @@ export class RenderPipeline {
|
|
|
208
326
|
fragment: {
|
|
209
327
|
module: shaderModule,
|
|
210
328
|
entryPoint: 'fs_main',
|
|
211
|
-
targets: [{ format }],
|
|
329
|
+
targets: [{ format: this.colorFormat }],
|
|
212
330
|
},
|
|
213
331
|
primitive: {
|
|
214
332
|
topology: 'triangle-list',
|
|
215
333
|
cullMode: 'none',
|
|
216
334
|
},
|
|
217
335
|
depthStencil: {
|
|
218
|
-
format:
|
|
219
|
-
depthWriteEnabled:
|
|
220
|
-
depthCompare: '
|
|
221
|
-
depthBias:
|
|
222
|
-
depthBiasSlopeScale:
|
|
336
|
+
format: this.depthFormat,
|
|
337
|
+
depthWriteEnabled: false, // Don't overwrite depth - selected objects render on top of existing depth
|
|
338
|
+
depthCompare: 'greater-equal', // Allow rendering at same depth, but still respect objects in front
|
|
339
|
+
depthBias: 0,
|
|
340
|
+
depthBiasSlopeScale: 0,
|
|
223
341
|
},
|
|
224
|
-
|
|
342
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
343
|
+
multisample: {
|
|
344
|
+
count: this.sampleCount,
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
this.selectionPipeline = this.device.createRenderPipeline(selectionPipelineDescriptor);
|
|
348
|
+
// Create transparent pipeline descriptor (same shader, but with alpha blending)
|
|
349
|
+
const transparentPipelineDescriptor = {
|
|
350
|
+
layout: pipelineLayout,
|
|
351
|
+
vertex: {
|
|
352
|
+
module: shaderModule,
|
|
353
|
+
entryPoint: 'vs_main',
|
|
354
|
+
buffers: [
|
|
355
|
+
{
|
|
356
|
+
arrayStride: 24,
|
|
357
|
+
attributes: [
|
|
358
|
+
{ shaderLocation: 0, offset: 0, format: 'float32x3' },
|
|
359
|
+
{ shaderLocation: 1, offset: 12, format: 'float32x3' },
|
|
360
|
+
],
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
},
|
|
364
|
+
fragment: {
|
|
365
|
+
module: shaderModule,
|
|
366
|
+
entryPoint: 'fs_main',
|
|
367
|
+
targets: [{
|
|
368
|
+
format: this.colorFormat,
|
|
369
|
+
blend: {
|
|
370
|
+
color: {
|
|
371
|
+
srcFactor: 'src-alpha',
|
|
372
|
+
dstFactor: 'one-minus-src-alpha',
|
|
373
|
+
},
|
|
374
|
+
alpha: {
|
|
375
|
+
srcFactor: 'one',
|
|
376
|
+
dstFactor: 'one-minus-src-alpha',
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
}],
|
|
380
|
+
},
|
|
381
|
+
primitive: {
|
|
382
|
+
topology: 'triangle-list',
|
|
383
|
+
cullMode: 'none',
|
|
384
|
+
},
|
|
385
|
+
depthStencil: {
|
|
386
|
+
format: this.depthFormat,
|
|
387
|
+
depthWriteEnabled: false, // Don't write depth for transparent objects
|
|
388
|
+
depthCompare: 'greater', // Still test depth to respect opaque objects
|
|
389
|
+
},
|
|
390
|
+
// MSAA configuration - must match render pass attachment sample count
|
|
391
|
+
multisample: {
|
|
392
|
+
count: this.sampleCount,
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
this.transparentPipeline = this.device.createRenderPipeline(transparentPipelineDescriptor);
|
|
225
396
|
// Create bind group using the explicit bind group layout
|
|
226
397
|
this.bindGroup = this.device.createBindGroup({
|
|
227
398
|
layout: this.bindGroupLayout,
|
|
@@ -292,10 +463,28 @@ export class RenderPipeline {
|
|
|
292
463
|
this.depthTexture.destroy();
|
|
293
464
|
this.depthTexture = this.device.createTexture({
|
|
294
465
|
size: { width, height },
|
|
295
|
-
format:
|
|
466
|
+
format: this.depthFormat,
|
|
296
467
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
468
|
+
sampleCount: this.sampleCount > 1 ? this.sampleCount : 1,
|
|
297
469
|
});
|
|
298
470
|
this.depthTextureView = this.depthTexture.createView();
|
|
471
|
+
// Recreate multisample texture
|
|
472
|
+
if (this.multisampleTexture) {
|
|
473
|
+
this.multisampleTexture.destroy();
|
|
474
|
+
}
|
|
475
|
+
if (this.sampleCount > 1) {
|
|
476
|
+
this.multisampleTexture = this.device.createTexture({
|
|
477
|
+
size: { width, height },
|
|
478
|
+
format: this.colorFormat,
|
|
479
|
+
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
480
|
+
sampleCount: this.sampleCount,
|
|
481
|
+
});
|
|
482
|
+
this.multisampleTextureView = this.multisampleTexture.createView();
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
this.multisampleTexture = null;
|
|
486
|
+
this.multisampleTextureView = null;
|
|
487
|
+
}
|
|
299
488
|
}
|
|
300
489
|
getPipeline() {
|
|
301
490
|
return this.pipeline;
|
|
@@ -303,9 +492,24 @@ export class RenderPipeline {
|
|
|
303
492
|
getSelectionPipeline() {
|
|
304
493
|
return this.selectionPipeline;
|
|
305
494
|
}
|
|
495
|
+
getTransparentPipeline() {
|
|
496
|
+
return this.transparentPipeline;
|
|
497
|
+
}
|
|
306
498
|
getDepthTextureView() {
|
|
307
499
|
return this.depthTextureView;
|
|
308
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Get multisample texture view (for MSAA rendering)
|
|
503
|
+
*/
|
|
504
|
+
getMultisampleTextureView() {
|
|
505
|
+
return this.multisampleTextureView;
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Get sample count
|
|
509
|
+
*/
|
|
510
|
+
getSampleCount() {
|
|
511
|
+
return this.sampleCount;
|
|
512
|
+
}
|
|
309
513
|
getBindGroup() {
|
|
310
514
|
return this.bindGroup;
|
|
311
515
|
}
|
|
@@ -326,11 +530,12 @@ export class InstancedRenderPipeline {
|
|
|
326
530
|
depthTexture;
|
|
327
531
|
depthTextureView;
|
|
328
532
|
uniformBuffer;
|
|
533
|
+
colorFormat;
|
|
329
534
|
currentHeight;
|
|
330
535
|
constructor(device, width = 1, height = 1) {
|
|
331
536
|
this.currentHeight = height;
|
|
332
537
|
this.device = device.getDevice();
|
|
333
|
-
|
|
538
|
+
this.colorFormat = device.getFormat();
|
|
334
539
|
// Create depth texture
|
|
335
540
|
this.depthTexture = this.device.createTexture({
|
|
336
541
|
size: { width, height },
|
|
@@ -371,6 +576,7 @@ export class InstancedRenderPipeline {
|
|
|
371
576
|
@location(1) normal: vec3<f32>,
|
|
372
577
|
@location(2) color: vec4<f32>,
|
|
373
578
|
@location(3) @interpolate(flat) instanceId: u32,
|
|
579
|
+
@location(4) viewPos: vec3<f32>, // For edge detection
|
|
374
580
|
}
|
|
375
581
|
|
|
376
582
|
// Z-up to Y-up conversion matrix (IFC uses Z-up, WebGPU/viewer uses Y-up)
|
|
@@ -400,6 +606,8 @@ export class InstancedRenderPipeline {
|
|
|
400
606
|
output.normal = normalize(normalYUp);
|
|
401
607
|
output.color = inst.color;
|
|
402
608
|
output.instanceId = instanceIndex;
|
|
609
|
+
// Store view-space position for edge detection
|
|
610
|
+
output.viewPos = (uniforms.viewProj * worldPos).xyz;
|
|
403
611
|
return output;
|
|
404
612
|
}
|
|
405
613
|
|
|
@@ -416,22 +624,114 @@ export class InstancedRenderPipeline {
|
|
|
416
624
|
}
|
|
417
625
|
|
|
418
626
|
let N = normalize(input.normal);
|
|
419
|
-
|
|
627
|
+
|
|
628
|
+
// Enhanced lighting with multiple sources
|
|
629
|
+
let sunLight = normalize(vec3<f32>(0.5, 1.0, 0.3)); // Main directional light
|
|
630
|
+
let fillLight = normalize(vec3<f32>(-0.5, 0.3, -0.3)); // Fill light
|
|
631
|
+
let rimLight = normalize(vec3<f32>(0.0, 0.2, -1.0)); // Rim light for edge definition
|
|
420
632
|
|
|
421
|
-
|
|
633
|
+
// Hemisphere ambient - reduced for less washed-out look
|
|
634
|
+
let skyColor = vec3<f32>(0.3, 0.35, 0.4); // Darker sky
|
|
635
|
+
let groundColor = vec3<f32>(0.15, 0.1, 0.08); // Darker ground
|
|
636
|
+
let hemisphereFactor = N.y * 0.5 + 0.5;
|
|
637
|
+
let ambient = mix(groundColor, skyColor, hemisphereFactor) * 0.25;
|
|
638
|
+
|
|
639
|
+
// Main sun light - reduced intensity, tighter wrap for more contrast
|
|
640
|
+
let NdotL = max(dot(N, sunLight), 0.0);
|
|
641
|
+
let wrap = 0.3; // Tighter wrap for more contrast
|
|
642
|
+
let diffuseSun = max((NdotL + wrap) / (1.0 + wrap), 0.0) * 0.55;
|
|
643
|
+
|
|
644
|
+
// Fill light - reduced
|
|
645
|
+
let NdotFill = max(dot(N, fillLight), 0.0);
|
|
646
|
+
let diffuseFill = NdotFill * 0.15;
|
|
647
|
+
|
|
648
|
+
// Rim light for edge definition
|
|
649
|
+
let NdotRim = max(dot(N, rimLight), 0.0);
|
|
650
|
+
let rim = pow(NdotRim, 4.0) * 0.15;
|
|
422
651
|
|
|
423
652
|
var baseColor = input.color.rgb;
|
|
653
|
+
|
|
654
|
+
// Detect if the color is close to white/gray (low saturation)
|
|
655
|
+
let baseGray = dot(baseColor, vec3<f32>(0.299, 0.587, 0.114));
|
|
656
|
+
let baseSaturation = length(baseColor - vec3<f32>(baseGray)) / max(baseGray, 0.001);
|
|
657
|
+
let isWhiteish = 1.0 - smoothstep(0.0, 0.3, baseSaturation);
|
|
658
|
+
|
|
659
|
+
// Darken whites/grays more to reduce washed-out appearance
|
|
660
|
+
baseColor = mix(baseColor, baseColor * 0.7, isWhiteish * 0.4);
|
|
424
661
|
|
|
425
|
-
//
|
|
426
|
-
|
|
427
|
-
let diffuse = NdotL * 0.7;
|
|
662
|
+
// Combine all lighting
|
|
663
|
+
var color = baseColor * (ambient + diffuseSun + diffuseFill + rim);
|
|
428
664
|
|
|
429
|
-
|
|
665
|
+
// Beautiful fresnel effect for transparent materials (glass)
|
|
666
|
+
var finalAlpha = input.color.a;
|
|
667
|
+
if (finalAlpha < 0.99) {
|
|
668
|
+
// Calculate view direction for fresnel
|
|
669
|
+
let V = normalize(-input.worldPos);
|
|
670
|
+
let NdotV = max(dot(N, V), 0.0);
|
|
671
|
+
|
|
672
|
+
// Enhanced fresnel effect - stronger at edges (grazing angles)
|
|
673
|
+
// Using Schlick's approximation for realistic glass reflection
|
|
674
|
+
let fresnelPower = 1.5; // Higher = softer edge reflections
|
|
675
|
+
let fresnel = pow(1.0 - NdotV, fresnelPower);
|
|
676
|
+
|
|
677
|
+
// Glass reflection tint (sky/environment reflection at edges)
|
|
678
|
+
let reflectionTint = vec3<f32>(0.92, 0.96, 1.0); // Cool sky reflection
|
|
679
|
+
let reflectionStrength = fresnel * 0.6; // Strong edge reflections
|
|
680
|
+
|
|
681
|
+
// Mix in reflection tint at edges
|
|
682
|
+
color = mix(color, color * reflectionTint, reflectionStrength);
|
|
683
|
+
|
|
684
|
+
// Add realistic glass shine - brighter at edges where light reflects
|
|
685
|
+
let glassShine = fresnel * 0.12;
|
|
686
|
+
color += glassShine;
|
|
687
|
+
|
|
688
|
+
// Slight desaturation at edges (glass reflects environment, not just color)
|
|
689
|
+
let edgeDesaturation = fresnel * 0.25;
|
|
690
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
691
|
+
color = mix(color, vec3<f32>(gray), edgeDesaturation);
|
|
692
|
+
|
|
693
|
+
// Make glass more transparent (reduce opacity by 30%)
|
|
694
|
+
finalAlpha = finalAlpha * 0.7;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
// Exposure adjustment - darken overall
|
|
698
|
+
color *= 0.85;
|
|
699
|
+
|
|
700
|
+
// Contrast enhancement
|
|
701
|
+
color = (color - 0.5) * 1.15 + 0.5;
|
|
702
|
+
color = max(color, vec3<f32>(0.0));
|
|
703
|
+
|
|
704
|
+
// Saturation boost - stronger for colored surfaces, less for whites
|
|
705
|
+
let gray = dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
706
|
+
let satBoost = mix(1.4, 1.1, isWhiteish); // More saturation for colored surfaces
|
|
707
|
+
color = mix(vec3<f32>(gray), color, satBoost);
|
|
430
708
|
|
|
431
|
-
//
|
|
709
|
+
// ACES filmic tone mapping
|
|
710
|
+
let a = 2.51;
|
|
711
|
+
let b = 0.03;
|
|
712
|
+
let c = 2.43;
|
|
713
|
+
let d = 0.59;
|
|
714
|
+
let e = 0.14;
|
|
715
|
+
color = clamp((color * (a * color + b)) / (color * (c * color + d) + e), vec3<f32>(0.0), vec3<f32>(1.0));
|
|
716
|
+
|
|
717
|
+
// Subtle edge enhancement using screen-space derivatives
|
|
718
|
+
let depthGradient = length(vec2<f32>(
|
|
719
|
+
dpdx(input.viewPos.z),
|
|
720
|
+
dpdy(input.viewPos.z)
|
|
721
|
+
));
|
|
722
|
+
let normalGradient = length(vec2<f32>(
|
|
723
|
+
length(dpdx(input.normal)),
|
|
724
|
+
length(dpdy(input.normal))
|
|
725
|
+
));
|
|
726
|
+
|
|
727
|
+
let edgeFactor = smoothstep(0.0, 0.1, depthGradient * 10.0 + normalGradient * 5.0);
|
|
728
|
+
let edgeDarken = mix(1.0, 0.92, edgeFactor * 0.4); // Slightly stronger edge darkening
|
|
729
|
+
color *= edgeDarken;
|
|
730
|
+
|
|
731
|
+
// Gamma correction
|
|
432
732
|
color = pow(color, vec3<f32>(1.0 / 2.2));
|
|
433
733
|
|
|
434
|
-
return vec4<f32>(color,
|
|
734
|
+
return vec4<f32>(color, finalAlpha);
|
|
435
735
|
}
|
|
436
736
|
`,
|
|
437
737
|
});
|
|
@@ -454,16 +754,16 @@ export class InstancedRenderPipeline {
|
|
|
454
754
|
fragment: {
|
|
455
755
|
module: shaderModule,
|
|
456
756
|
entryPoint: 'fs_main',
|
|
457
|
-
targets: [{ format }],
|
|
757
|
+
targets: [{ format: this.colorFormat }],
|
|
458
758
|
},
|
|
459
759
|
primitive: {
|
|
460
760
|
topology: 'triangle-list',
|
|
461
761
|
cullMode: 'none',
|
|
462
762
|
},
|
|
463
763
|
depthStencil: {
|
|
464
|
-
format: 'depth24plus',
|
|
764
|
+
format: 'depth24plus', // Will be updated if reverse-Z is enabled
|
|
465
765
|
depthWriteEnabled: true,
|
|
466
|
-
depthCompare: '
|
|
766
|
+
depthCompare: 'greater', // Reverse-Z: greater instead of less
|
|
467
767
|
},
|
|
468
768
|
});
|
|
469
769
|
// Note: bind groups are created per-instanced-mesh via createInstanceBindGroup()
|
|
@@ -503,7 +803,7 @@ export class InstancedRenderPipeline {
|
|
|
503
803
|
this.depthTexture.destroy();
|
|
504
804
|
this.depthTexture = this.device.createTexture({
|
|
505
805
|
size: { width, height },
|
|
506
|
-
format: 'depth24plus',
|
|
806
|
+
format: 'depth24plus', // Default format for instanced pipeline
|
|
507
807
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
508
808
|
});
|
|
509
809
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsMX;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuLX;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"}
|