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.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 };