string-tune-3d 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +251 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +178 -2
- package/dist/index.d.ts +178 -2
- package/dist/index.js +251 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +251 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/readme.md +50 -50
package/dist/index.d.mts
CHANGED
|
@@ -61,6 +61,8 @@ interface I3DObject {
|
|
|
61
61
|
interface I3DMesh extends I3DObject {
|
|
62
62
|
geometry: I3DGeometry;
|
|
63
63
|
material: I3DMaterial | I3DMaterial[];
|
|
64
|
+
castShadow: boolean;
|
|
65
|
+
receiveShadow: boolean;
|
|
64
66
|
}
|
|
65
67
|
interface I3DGeometry {
|
|
66
68
|
dispose(): void;
|
|
@@ -72,9 +74,23 @@ interface I3DMaterial {
|
|
|
72
74
|
opacity?: number;
|
|
73
75
|
transparent?: boolean;
|
|
74
76
|
}
|
|
77
|
+
interface I3DRenderTarget {
|
|
78
|
+
texture: any;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
setSize(width: number, height: number): void;
|
|
82
|
+
dispose(): void;
|
|
83
|
+
}
|
|
75
84
|
interface I3DLight extends I3DObject {
|
|
76
85
|
color: any;
|
|
77
86
|
intensity: number;
|
|
87
|
+
castShadow?: boolean;
|
|
88
|
+
shadow?: any;
|
|
89
|
+
target?: I3DObject;
|
|
90
|
+
distance?: number;
|
|
91
|
+
decay?: number;
|
|
92
|
+
angle?: number;
|
|
93
|
+
penumbra?: number;
|
|
78
94
|
}
|
|
79
95
|
interface I3DCamera extends I3DObject {
|
|
80
96
|
aspect: number;
|
|
@@ -103,6 +119,14 @@ interface I3DRenderer {
|
|
|
103
119
|
setPixelRatio(ratio: number): void;
|
|
104
120
|
render(scene: I3DScene, camera: I3DCamera): void;
|
|
105
121
|
dispose(): void;
|
|
122
|
+
outputEncoding: any;
|
|
123
|
+
shadowMap: {
|
|
124
|
+
enabled: boolean;
|
|
125
|
+
type: any;
|
|
126
|
+
};
|
|
127
|
+
setRenderTarget?(target: I3DRenderTarget | null): void;
|
|
128
|
+
getRenderTarget?(): I3DRenderTarget | null;
|
|
129
|
+
clear?(color?: boolean, depth?: boolean, stencil?: boolean): void;
|
|
106
130
|
}
|
|
107
131
|
interface I3DTextureLoader {
|
|
108
132
|
load(url: string, onLoad?: (texture: any) => void): any;
|
|
@@ -133,11 +157,15 @@ interface I3DEngine {
|
|
|
133
157
|
createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
|
|
134
158
|
createMeshBasicMaterial(params?: any): I3DMaterial;
|
|
135
159
|
createMeshStandardMaterial(params?: any): I3DMaterial;
|
|
160
|
+
createShaderMaterial?(params?: any): I3DMaterial;
|
|
136
161
|
createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
|
|
162
|
+
createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
|
|
163
|
+
createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
|
|
137
164
|
createAmbientLight(color?: string | number, intensity?: number): I3DLight;
|
|
138
165
|
createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
|
|
139
166
|
createTextureLoader(): I3DTextureLoader;
|
|
140
167
|
createModelLoader(type: string): I3DModelLoader;
|
|
168
|
+
createRenderTarget?(width: number, height: number, options?: any): I3DRenderTarget;
|
|
141
169
|
degToRad(degrees: number): number;
|
|
142
170
|
radToDeg(radians: number): number;
|
|
143
171
|
computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
|
|
@@ -155,6 +183,9 @@ interface String3DOptions {
|
|
|
155
183
|
modelLoaderType?: string;
|
|
156
184
|
modelLoader?: I3DModelLoader;
|
|
157
185
|
modelLoaderFactory?: (engine: I3DEngine, type?: string) => I3DModelLoader;
|
|
186
|
+
useDirtySync?: boolean;
|
|
187
|
+
useTransformWorker?: boolean;
|
|
188
|
+
transformWorkerWasmUrl?: string;
|
|
158
189
|
}
|
|
159
190
|
declare class String3D extends StringModule {
|
|
160
191
|
private static provider;
|
|
@@ -166,6 +197,21 @@ declare class String3D extends StringModule {
|
|
|
166
197
|
private canvasContainer;
|
|
167
198
|
private isLoading;
|
|
168
199
|
private options;
|
|
200
|
+
private useDirtySync;
|
|
201
|
+
private dirtyElements;
|
|
202
|
+
private observedElements;
|
|
203
|
+
private resizeObserver;
|
|
204
|
+
private mutationObserver;
|
|
205
|
+
private lastSyncData;
|
|
206
|
+
private transformWorker;
|
|
207
|
+
private workerHasResult;
|
|
208
|
+
private workerObjectMap;
|
|
209
|
+
private domVersion;
|
|
210
|
+
private lastSubmittedVersion;
|
|
211
|
+
private scrollTicking;
|
|
212
|
+
private onScrollBound;
|
|
213
|
+
private filterStates;
|
|
214
|
+
private filterWarnings;
|
|
169
215
|
static setProvider(provider: I3DEngineProvider): void;
|
|
170
216
|
constructor(context: StringContext);
|
|
171
217
|
canConnect(object: StringObject): boolean;
|
|
@@ -183,6 +229,41 @@ declare class String3D extends StringModule {
|
|
|
183
229
|
onFrame(data: StringData): void;
|
|
184
230
|
private syncRecursive;
|
|
185
231
|
private injectCSS;
|
|
232
|
+
private registerTypedProperties;
|
|
233
|
+
private setupObservers;
|
|
234
|
+
private setupScrollListeners;
|
|
235
|
+
private removeScrollListeners;
|
|
236
|
+
private handleScroll;
|
|
237
|
+
private observeElement;
|
|
238
|
+
private observeSceneElements;
|
|
239
|
+
private observeRecursive;
|
|
240
|
+
private markDirty;
|
|
241
|
+
private markAllDirty;
|
|
242
|
+
private readNumberStyle;
|
|
243
|
+
private readFilterRaw;
|
|
244
|
+
private parseFilterChain;
|
|
245
|
+
private warnFilterIssues;
|
|
246
|
+
private readFilterChain;
|
|
247
|
+
private collectFilterTargets;
|
|
248
|
+
private stringifyFilterChain;
|
|
249
|
+
private getFilterTransition;
|
|
250
|
+
private splitTransitionList;
|
|
251
|
+
private findTransitionIndex;
|
|
252
|
+
private parseTime;
|
|
253
|
+
private parseTransitionShorthand;
|
|
254
|
+
private parseEasing;
|
|
255
|
+
private cubicBezier;
|
|
256
|
+
private canInterpolate;
|
|
257
|
+
private makeZeroChain;
|
|
258
|
+
private sampleTransition;
|
|
259
|
+
private getCurrentChain;
|
|
260
|
+
private interpolateChain;
|
|
261
|
+
private interpolateEffect;
|
|
262
|
+
private isNumeric;
|
|
263
|
+
private isZeroChain;
|
|
264
|
+
private buildWorkerCameraData;
|
|
265
|
+
private collectWorkerInputs;
|
|
266
|
+
private applyWorkerResults;
|
|
186
267
|
destroy(): void;
|
|
187
268
|
}
|
|
188
269
|
|
|
@@ -210,6 +291,8 @@ declare class String3DCamera {
|
|
|
210
291
|
getScaleAtZ(z: number, viewportHeight: number): number;
|
|
211
292
|
clearScaleCache(): void;
|
|
212
293
|
getMode(): CameraMode;
|
|
294
|
+
getPerspectiveFov(): number;
|
|
295
|
+
getPositionZ(): number;
|
|
213
296
|
}
|
|
214
297
|
|
|
215
298
|
declare class String3DObject {
|
|
@@ -226,6 +309,8 @@ declare class String3DObject {
|
|
|
226
309
|
private _bbox;
|
|
227
310
|
el: any;
|
|
228
311
|
private _children;
|
|
312
|
+
private _flatObjectsCache;
|
|
313
|
+
private _subtreeCache;
|
|
229
314
|
private engine;
|
|
230
315
|
get children(): String3DObject[];
|
|
231
316
|
constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
|
|
@@ -255,6 +340,10 @@ declare class String3DObject {
|
|
|
255
340
|
set geometry(geometry: I3DGeometry | undefined);
|
|
256
341
|
updateBoundingBox(): void;
|
|
257
342
|
destroy(): void;
|
|
343
|
+
getFlatObjects(): I3DObject[];
|
|
344
|
+
getSubtreeObjects(): I3DObject[];
|
|
345
|
+
private invalidateFlatCache;
|
|
346
|
+
private invalidateSubtreeCache;
|
|
258
347
|
private disposeObjectResources;
|
|
259
348
|
}
|
|
260
349
|
|
|
@@ -275,11 +364,13 @@ declare class String3DScene {
|
|
|
275
364
|
constructor(engine: I3DEngine, options?: String3DSceneOptions);
|
|
276
365
|
getScene(): I3DScene;
|
|
277
366
|
getObject(id: string): String3DObject | undefined;
|
|
367
|
+
getAllObjects(): String3DObject[];
|
|
278
368
|
hasObject(id: string): boolean;
|
|
279
369
|
deleteObject(id: string): boolean;
|
|
280
370
|
createFromElement(object: StringObject): void;
|
|
281
371
|
private createGroup;
|
|
282
372
|
private createLight;
|
|
373
|
+
private applyShadowProps;
|
|
283
374
|
private createBox;
|
|
284
375
|
private createSphere;
|
|
285
376
|
private createPlane;
|
|
@@ -297,20 +388,87 @@ declare class String3DScene {
|
|
|
297
388
|
destroy(): void;
|
|
298
389
|
}
|
|
299
390
|
|
|
391
|
+
type String3DFilterEffect = {
|
|
392
|
+
type: "blur";
|
|
393
|
+
amount: number;
|
|
394
|
+
} | {
|
|
395
|
+
type: "pixel";
|
|
396
|
+
size: number;
|
|
397
|
+
} | {
|
|
398
|
+
type: "bloom";
|
|
399
|
+
intensity: number;
|
|
400
|
+
threshold: number;
|
|
401
|
+
} | {
|
|
402
|
+
type: "brightness";
|
|
403
|
+
amount: number;
|
|
404
|
+
} | {
|
|
405
|
+
type: "contrast";
|
|
406
|
+
amount: number;
|
|
407
|
+
} | {
|
|
408
|
+
type: "saturate";
|
|
409
|
+
amount: number;
|
|
410
|
+
} | {
|
|
411
|
+
type: "grayscale";
|
|
412
|
+
amount: number;
|
|
413
|
+
} | {
|
|
414
|
+
type: "sepia";
|
|
415
|
+
amount: number;
|
|
416
|
+
} | {
|
|
417
|
+
type: "invert";
|
|
418
|
+
amount: number;
|
|
419
|
+
} | {
|
|
420
|
+
type: "hue-rotate";
|
|
421
|
+
angle: number;
|
|
422
|
+
} | {
|
|
423
|
+
type: "custom";
|
|
424
|
+
name: string;
|
|
425
|
+
uniforms: Record<string, any>;
|
|
426
|
+
};
|
|
427
|
+
type String3DFilterChain = String3DFilterEffect[];
|
|
428
|
+
type String3DFilterTarget = {
|
|
429
|
+
object: String3DObject;
|
|
430
|
+
effects: String3DFilterChain;
|
|
431
|
+
effectsKey: string;
|
|
432
|
+
dirty: boolean;
|
|
433
|
+
};
|
|
434
|
+
|
|
300
435
|
declare class String3DRenderer {
|
|
301
436
|
private _container;
|
|
302
437
|
private _renderer;
|
|
303
438
|
private _width;
|
|
304
439
|
private _height;
|
|
305
440
|
private engine;
|
|
441
|
+
private filterPipeline;
|
|
442
|
+
private filterCache;
|
|
443
|
+
private frameId;
|
|
444
|
+
private lastFrameTime;
|
|
445
|
+
private avgFrameMs;
|
|
446
|
+
private qualityScale;
|
|
447
|
+
private lastQualityChange;
|
|
448
|
+
private filterLayer;
|
|
306
449
|
constructor(container: HTMLElement, engine: I3DEngine);
|
|
307
450
|
attach(): void;
|
|
308
|
-
render(scene: String3DScene, camera: String3DCamera): void;
|
|
451
|
+
render(scene: String3DScene, camera: String3DCamera, filterTargets?: String3DFilterTarget[]): void;
|
|
309
452
|
resize(camera: String3DCamera): void;
|
|
310
453
|
get width(): number;
|
|
311
454
|
get height(): number;
|
|
312
455
|
get renderer(): I3DRenderer;
|
|
313
456
|
destroy(): void;
|
|
457
|
+
private ensureFilterPipeline;
|
|
458
|
+
private canCreateFilterPipeline;
|
|
459
|
+
private collectSubtreeObjects;
|
|
460
|
+
private setVisible;
|
|
461
|
+
private getFilterCenter;
|
|
462
|
+
private injectEffectContext;
|
|
463
|
+
private updateQuality;
|
|
464
|
+
private invalidateFilterCache;
|
|
465
|
+
private evictCache;
|
|
466
|
+
private supportsLayers;
|
|
467
|
+
private hasLayers;
|
|
468
|
+
private applyLayerMask;
|
|
469
|
+
private restoreLayerMask;
|
|
470
|
+
private setCameraLayer;
|
|
471
|
+
private restoreCameraLayer;
|
|
314
472
|
}
|
|
315
473
|
|
|
316
474
|
declare class String3DSynchronizer {
|
|
@@ -324,6 +482,20 @@ declare class String3DSynchronizer {
|
|
|
324
482
|
updateViewportSize(width: number, height: number): void;
|
|
325
483
|
}
|
|
326
484
|
|
|
485
|
+
type String3DCustomFilterDefinition = {
|
|
486
|
+
name: string;
|
|
487
|
+
fragmentShader: string;
|
|
488
|
+
uniforms?: Record<string, any>;
|
|
489
|
+
parse?: (args: string) => Record<string, any> | null;
|
|
490
|
+
};
|
|
491
|
+
declare class String3DCustomFilterRegistry {
|
|
492
|
+
private static filters;
|
|
493
|
+
static register(definition: String3DCustomFilterDefinition): void;
|
|
494
|
+
static get(name: string): String3DCustomFilterDefinition | undefined;
|
|
495
|
+
static has(name: string): boolean;
|
|
496
|
+
static list(): String3DCustomFilterDefinition[];
|
|
497
|
+
}
|
|
498
|
+
|
|
327
499
|
declare class ThreeJSEngine implements I3DEngine {
|
|
328
500
|
private THREE;
|
|
329
501
|
private loaders;
|
|
@@ -350,11 +522,15 @@ declare class ThreeJSEngine implements I3DEngine {
|
|
|
350
522
|
createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
|
|
351
523
|
createMeshBasicMaterial(params?: any): I3DMaterial;
|
|
352
524
|
createMeshStandardMaterial(params?: any): I3DMaterial;
|
|
525
|
+
createShaderMaterial(params?: any): I3DMaterial;
|
|
353
526
|
createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
|
|
527
|
+
createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
|
|
528
|
+
createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
|
|
354
529
|
createAmbientLight(color?: string | number, intensity?: number): I3DLight;
|
|
355
530
|
createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
|
|
356
531
|
createTextureLoader(): I3DTextureLoader;
|
|
357
532
|
createModelLoader(type: string): I3DModelLoader;
|
|
533
|
+
createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
|
|
358
534
|
degToRad(degrees: number): number;
|
|
359
535
|
radToDeg(radians: number): number;
|
|
360
536
|
computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
|
|
@@ -366,4 +542,4 @@ declare class ThreeJSProvider implements I3DEngineProvider {
|
|
|
366
542
|
getName(): string;
|
|
367
543
|
}
|
|
368
544
|
|
|
369
|
-
export { type CameraMode, type I3DBox3, type I3DCamera, type I3DEngine, type I3DEngineProvider, type I3DEuler, type I3DGeometry, type I3DLight, type I3DMaterial, type I3DMatrix4, type I3DMesh, type I3DModelLoader, type I3DObject, type I3DOrthographicCamera, type I3DPerspectiveCamera, type I3DQuaternion, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, String3D, String3DCamera, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSProvider };
|
|
545
|
+
export { type CameraMode, type I3DBox3, type I3DCamera, type I3DEngine, type I3DEngineProvider, type I3DEuler, type I3DGeometry, type I3DLight, type I3DMaterial, type I3DMatrix4, type I3DMesh, type I3DModelLoader, type I3DObject, type I3DOrthographicCamera, type I3DPerspectiveCamera, type I3DQuaternion, type I3DRenderTarget, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, String3D, String3DCamera, type String3DCustomFilterDefinition, String3DCustomFilterRegistry, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,8 @@ interface I3DObject {
|
|
|
61
61
|
interface I3DMesh extends I3DObject {
|
|
62
62
|
geometry: I3DGeometry;
|
|
63
63
|
material: I3DMaterial | I3DMaterial[];
|
|
64
|
+
castShadow: boolean;
|
|
65
|
+
receiveShadow: boolean;
|
|
64
66
|
}
|
|
65
67
|
interface I3DGeometry {
|
|
66
68
|
dispose(): void;
|
|
@@ -72,9 +74,23 @@ interface I3DMaterial {
|
|
|
72
74
|
opacity?: number;
|
|
73
75
|
transparent?: boolean;
|
|
74
76
|
}
|
|
77
|
+
interface I3DRenderTarget {
|
|
78
|
+
texture: any;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
setSize(width: number, height: number): void;
|
|
82
|
+
dispose(): void;
|
|
83
|
+
}
|
|
75
84
|
interface I3DLight extends I3DObject {
|
|
76
85
|
color: any;
|
|
77
86
|
intensity: number;
|
|
87
|
+
castShadow?: boolean;
|
|
88
|
+
shadow?: any;
|
|
89
|
+
target?: I3DObject;
|
|
90
|
+
distance?: number;
|
|
91
|
+
decay?: number;
|
|
92
|
+
angle?: number;
|
|
93
|
+
penumbra?: number;
|
|
78
94
|
}
|
|
79
95
|
interface I3DCamera extends I3DObject {
|
|
80
96
|
aspect: number;
|
|
@@ -103,6 +119,14 @@ interface I3DRenderer {
|
|
|
103
119
|
setPixelRatio(ratio: number): void;
|
|
104
120
|
render(scene: I3DScene, camera: I3DCamera): void;
|
|
105
121
|
dispose(): void;
|
|
122
|
+
outputEncoding: any;
|
|
123
|
+
shadowMap: {
|
|
124
|
+
enabled: boolean;
|
|
125
|
+
type: any;
|
|
126
|
+
};
|
|
127
|
+
setRenderTarget?(target: I3DRenderTarget | null): void;
|
|
128
|
+
getRenderTarget?(): I3DRenderTarget | null;
|
|
129
|
+
clear?(color?: boolean, depth?: boolean, stencil?: boolean): void;
|
|
106
130
|
}
|
|
107
131
|
interface I3DTextureLoader {
|
|
108
132
|
load(url: string, onLoad?: (texture: any) => void): any;
|
|
@@ -133,11 +157,15 @@ interface I3DEngine {
|
|
|
133
157
|
createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
|
|
134
158
|
createMeshBasicMaterial(params?: any): I3DMaterial;
|
|
135
159
|
createMeshStandardMaterial(params?: any): I3DMaterial;
|
|
160
|
+
createShaderMaterial?(params?: any): I3DMaterial;
|
|
136
161
|
createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
|
|
162
|
+
createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
|
|
163
|
+
createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
|
|
137
164
|
createAmbientLight(color?: string | number, intensity?: number): I3DLight;
|
|
138
165
|
createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
|
|
139
166
|
createTextureLoader(): I3DTextureLoader;
|
|
140
167
|
createModelLoader(type: string): I3DModelLoader;
|
|
168
|
+
createRenderTarget?(width: number, height: number, options?: any): I3DRenderTarget;
|
|
141
169
|
degToRad(degrees: number): number;
|
|
142
170
|
radToDeg(radians: number): number;
|
|
143
171
|
computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
|
|
@@ -155,6 +183,9 @@ interface String3DOptions {
|
|
|
155
183
|
modelLoaderType?: string;
|
|
156
184
|
modelLoader?: I3DModelLoader;
|
|
157
185
|
modelLoaderFactory?: (engine: I3DEngine, type?: string) => I3DModelLoader;
|
|
186
|
+
useDirtySync?: boolean;
|
|
187
|
+
useTransformWorker?: boolean;
|
|
188
|
+
transformWorkerWasmUrl?: string;
|
|
158
189
|
}
|
|
159
190
|
declare class String3D extends StringModule {
|
|
160
191
|
private static provider;
|
|
@@ -166,6 +197,21 @@ declare class String3D extends StringModule {
|
|
|
166
197
|
private canvasContainer;
|
|
167
198
|
private isLoading;
|
|
168
199
|
private options;
|
|
200
|
+
private useDirtySync;
|
|
201
|
+
private dirtyElements;
|
|
202
|
+
private observedElements;
|
|
203
|
+
private resizeObserver;
|
|
204
|
+
private mutationObserver;
|
|
205
|
+
private lastSyncData;
|
|
206
|
+
private transformWorker;
|
|
207
|
+
private workerHasResult;
|
|
208
|
+
private workerObjectMap;
|
|
209
|
+
private domVersion;
|
|
210
|
+
private lastSubmittedVersion;
|
|
211
|
+
private scrollTicking;
|
|
212
|
+
private onScrollBound;
|
|
213
|
+
private filterStates;
|
|
214
|
+
private filterWarnings;
|
|
169
215
|
static setProvider(provider: I3DEngineProvider): void;
|
|
170
216
|
constructor(context: StringContext);
|
|
171
217
|
canConnect(object: StringObject): boolean;
|
|
@@ -183,6 +229,41 @@ declare class String3D extends StringModule {
|
|
|
183
229
|
onFrame(data: StringData): void;
|
|
184
230
|
private syncRecursive;
|
|
185
231
|
private injectCSS;
|
|
232
|
+
private registerTypedProperties;
|
|
233
|
+
private setupObservers;
|
|
234
|
+
private setupScrollListeners;
|
|
235
|
+
private removeScrollListeners;
|
|
236
|
+
private handleScroll;
|
|
237
|
+
private observeElement;
|
|
238
|
+
private observeSceneElements;
|
|
239
|
+
private observeRecursive;
|
|
240
|
+
private markDirty;
|
|
241
|
+
private markAllDirty;
|
|
242
|
+
private readNumberStyle;
|
|
243
|
+
private readFilterRaw;
|
|
244
|
+
private parseFilterChain;
|
|
245
|
+
private warnFilterIssues;
|
|
246
|
+
private readFilterChain;
|
|
247
|
+
private collectFilterTargets;
|
|
248
|
+
private stringifyFilterChain;
|
|
249
|
+
private getFilterTransition;
|
|
250
|
+
private splitTransitionList;
|
|
251
|
+
private findTransitionIndex;
|
|
252
|
+
private parseTime;
|
|
253
|
+
private parseTransitionShorthand;
|
|
254
|
+
private parseEasing;
|
|
255
|
+
private cubicBezier;
|
|
256
|
+
private canInterpolate;
|
|
257
|
+
private makeZeroChain;
|
|
258
|
+
private sampleTransition;
|
|
259
|
+
private getCurrentChain;
|
|
260
|
+
private interpolateChain;
|
|
261
|
+
private interpolateEffect;
|
|
262
|
+
private isNumeric;
|
|
263
|
+
private isZeroChain;
|
|
264
|
+
private buildWorkerCameraData;
|
|
265
|
+
private collectWorkerInputs;
|
|
266
|
+
private applyWorkerResults;
|
|
186
267
|
destroy(): void;
|
|
187
268
|
}
|
|
188
269
|
|
|
@@ -210,6 +291,8 @@ declare class String3DCamera {
|
|
|
210
291
|
getScaleAtZ(z: number, viewportHeight: number): number;
|
|
211
292
|
clearScaleCache(): void;
|
|
212
293
|
getMode(): CameraMode;
|
|
294
|
+
getPerspectiveFov(): number;
|
|
295
|
+
getPositionZ(): number;
|
|
213
296
|
}
|
|
214
297
|
|
|
215
298
|
declare class String3DObject {
|
|
@@ -226,6 +309,8 @@ declare class String3DObject {
|
|
|
226
309
|
private _bbox;
|
|
227
310
|
el: any;
|
|
228
311
|
private _children;
|
|
312
|
+
private _flatObjectsCache;
|
|
313
|
+
private _subtreeCache;
|
|
229
314
|
private engine;
|
|
230
315
|
get children(): String3DObject[];
|
|
231
316
|
constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
|
|
@@ -255,6 +340,10 @@ declare class String3DObject {
|
|
|
255
340
|
set geometry(geometry: I3DGeometry | undefined);
|
|
256
341
|
updateBoundingBox(): void;
|
|
257
342
|
destroy(): void;
|
|
343
|
+
getFlatObjects(): I3DObject[];
|
|
344
|
+
getSubtreeObjects(): I3DObject[];
|
|
345
|
+
private invalidateFlatCache;
|
|
346
|
+
private invalidateSubtreeCache;
|
|
258
347
|
private disposeObjectResources;
|
|
259
348
|
}
|
|
260
349
|
|
|
@@ -275,11 +364,13 @@ declare class String3DScene {
|
|
|
275
364
|
constructor(engine: I3DEngine, options?: String3DSceneOptions);
|
|
276
365
|
getScene(): I3DScene;
|
|
277
366
|
getObject(id: string): String3DObject | undefined;
|
|
367
|
+
getAllObjects(): String3DObject[];
|
|
278
368
|
hasObject(id: string): boolean;
|
|
279
369
|
deleteObject(id: string): boolean;
|
|
280
370
|
createFromElement(object: StringObject): void;
|
|
281
371
|
private createGroup;
|
|
282
372
|
private createLight;
|
|
373
|
+
private applyShadowProps;
|
|
283
374
|
private createBox;
|
|
284
375
|
private createSphere;
|
|
285
376
|
private createPlane;
|
|
@@ -297,20 +388,87 @@ declare class String3DScene {
|
|
|
297
388
|
destroy(): void;
|
|
298
389
|
}
|
|
299
390
|
|
|
391
|
+
type String3DFilterEffect = {
|
|
392
|
+
type: "blur";
|
|
393
|
+
amount: number;
|
|
394
|
+
} | {
|
|
395
|
+
type: "pixel";
|
|
396
|
+
size: number;
|
|
397
|
+
} | {
|
|
398
|
+
type: "bloom";
|
|
399
|
+
intensity: number;
|
|
400
|
+
threshold: number;
|
|
401
|
+
} | {
|
|
402
|
+
type: "brightness";
|
|
403
|
+
amount: number;
|
|
404
|
+
} | {
|
|
405
|
+
type: "contrast";
|
|
406
|
+
amount: number;
|
|
407
|
+
} | {
|
|
408
|
+
type: "saturate";
|
|
409
|
+
amount: number;
|
|
410
|
+
} | {
|
|
411
|
+
type: "grayscale";
|
|
412
|
+
amount: number;
|
|
413
|
+
} | {
|
|
414
|
+
type: "sepia";
|
|
415
|
+
amount: number;
|
|
416
|
+
} | {
|
|
417
|
+
type: "invert";
|
|
418
|
+
amount: number;
|
|
419
|
+
} | {
|
|
420
|
+
type: "hue-rotate";
|
|
421
|
+
angle: number;
|
|
422
|
+
} | {
|
|
423
|
+
type: "custom";
|
|
424
|
+
name: string;
|
|
425
|
+
uniforms: Record<string, any>;
|
|
426
|
+
};
|
|
427
|
+
type String3DFilterChain = String3DFilterEffect[];
|
|
428
|
+
type String3DFilterTarget = {
|
|
429
|
+
object: String3DObject;
|
|
430
|
+
effects: String3DFilterChain;
|
|
431
|
+
effectsKey: string;
|
|
432
|
+
dirty: boolean;
|
|
433
|
+
};
|
|
434
|
+
|
|
300
435
|
declare class String3DRenderer {
|
|
301
436
|
private _container;
|
|
302
437
|
private _renderer;
|
|
303
438
|
private _width;
|
|
304
439
|
private _height;
|
|
305
440
|
private engine;
|
|
441
|
+
private filterPipeline;
|
|
442
|
+
private filterCache;
|
|
443
|
+
private frameId;
|
|
444
|
+
private lastFrameTime;
|
|
445
|
+
private avgFrameMs;
|
|
446
|
+
private qualityScale;
|
|
447
|
+
private lastQualityChange;
|
|
448
|
+
private filterLayer;
|
|
306
449
|
constructor(container: HTMLElement, engine: I3DEngine);
|
|
307
450
|
attach(): void;
|
|
308
|
-
render(scene: String3DScene, camera: String3DCamera): void;
|
|
451
|
+
render(scene: String3DScene, camera: String3DCamera, filterTargets?: String3DFilterTarget[]): void;
|
|
309
452
|
resize(camera: String3DCamera): void;
|
|
310
453
|
get width(): number;
|
|
311
454
|
get height(): number;
|
|
312
455
|
get renderer(): I3DRenderer;
|
|
313
456
|
destroy(): void;
|
|
457
|
+
private ensureFilterPipeline;
|
|
458
|
+
private canCreateFilterPipeline;
|
|
459
|
+
private collectSubtreeObjects;
|
|
460
|
+
private setVisible;
|
|
461
|
+
private getFilterCenter;
|
|
462
|
+
private injectEffectContext;
|
|
463
|
+
private updateQuality;
|
|
464
|
+
private invalidateFilterCache;
|
|
465
|
+
private evictCache;
|
|
466
|
+
private supportsLayers;
|
|
467
|
+
private hasLayers;
|
|
468
|
+
private applyLayerMask;
|
|
469
|
+
private restoreLayerMask;
|
|
470
|
+
private setCameraLayer;
|
|
471
|
+
private restoreCameraLayer;
|
|
314
472
|
}
|
|
315
473
|
|
|
316
474
|
declare class String3DSynchronizer {
|
|
@@ -324,6 +482,20 @@ declare class String3DSynchronizer {
|
|
|
324
482
|
updateViewportSize(width: number, height: number): void;
|
|
325
483
|
}
|
|
326
484
|
|
|
485
|
+
type String3DCustomFilterDefinition = {
|
|
486
|
+
name: string;
|
|
487
|
+
fragmentShader: string;
|
|
488
|
+
uniforms?: Record<string, any>;
|
|
489
|
+
parse?: (args: string) => Record<string, any> | null;
|
|
490
|
+
};
|
|
491
|
+
declare class String3DCustomFilterRegistry {
|
|
492
|
+
private static filters;
|
|
493
|
+
static register(definition: String3DCustomFilterDefinition): void;
|
|
494
|
+
static get(name: string): String3DCustomFilterDefinition | undefined;
|
|
495
|
+
static has(name: string): boolean;
|
|
496
|
+
static list(): String3DCustomFilterDefinition[];
|
|
497
|
+
}
|
|
498
|
+
|
|
327
499
|
declare class ThreeJSEngine implements I3DEngine {
|
|
328
500
|
private THREE;
|
|
329
501
|
private loaders;
|
|
@@ -350,11 +522,15 @@ declare class ThreeJSEngine implements I3DEngine {
|
|
|
350
522
|
createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
|
|
351
523
|
createMeshBasicMaterial(params?: any): I3DMaterial;
|
|
352
524
|
createMeshStandardMaterial(params?: any): I3DMaterial;
|
|
525
|
+
createShaderMaterial(params?: any): I3DMaterial;
|
|
353
526
|
createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
|
|
527
|
+
createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
|
|
528
|
+
createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
|
|
354
529
|
createAmbientLight(color?: string | number, intensity?: number): I3DLight;
|
|
355
530
|
createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
|
|
356
531
|
createTextureLoader(): I3DTextureLoader;
|
|
357
532
|
createModelLoader(type: string): I3DModelLoader;
|
|
533
|
+
createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
|
|
358
534
|
degToRad(degrees: number): number;
|
|
359
535
|
radToDeg(radians: number): number;
|
|
360
536
|
computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
|
|
@@ -366,4 +542,4 @@ declare class ThreeJSProvider implements I3DEngineProvider {
|
|
|
366
542
|
getName(): string;
|
|
367
543
|
}
|
|
368
544
|
|
|
369
|
-
export { type CameraMode, type I3DBox3, type I3DCamera, type I3DEngine, type I3DEngineProvider, type I3DEuler, type I3DGeometry, type I3DLight, type I3DMaterial, type I3DMatrix4, type I3DMesh, type I3DModelLoader, type I3DObject, type I3DOrthographicCamera, type I3DPerspectiveCamera, type I3DQuaternion, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, String3D, String3DCamera, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSProvider };
|
|
545
|
+
export { type CameraMode, type I3DBox3, type I3DCamera, type I3DEngine, type I3DEngineProvider, type I3DEuler, type I3DGeometry, type I3DLight, type I3DMaterial, type I3DMatrix4, type I3DMesh, type I3DModelLoader, type I3DObject, type I3DOrthographicCamera, type I3DPerspectiveCamera, type I3DQuaternion, type I3DRenderTarget, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, String3D, String3DCamera, type String3DCustomFilterDefinition, String3DCustomFilterRegistry, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSProvider };
|