string-tune-3d 0.0.5 → 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
@@ -74,6 +74,13 @@ interface I3DMaterial {
74
74
  opacity?: number;
75
75
  transparent?: boolean;
76
76
  }
77
+ interface I3DRenderTarget {
78
+ texture: any;
79
+ width: number;
80
+ height: number;
81
+ setSize(width: number, height: number): void;
82
+ dispose(): void;
83
+ }
77
84
  interface I3DLight extends I3DObject {
78
85
  color: any;
79
86
  intensity: number;
@@ -117,6 +124,9 @@ interface I3DRenderer {
117
124
  enabled: boolean;
118
125
  type: any;
119
126
  };
127
+ setRenderTarget?(target: I3DRenderTarget | null): void;
128
+ getRenderTarget?(): I3DRenderTarget | null;
129
+ clear?(color?: boolean, depth?: boolean, stencil?: boolean): void;
120
130
  }
121
131
  interface I3DTextureLoader {
122
132
  load(url: string, onLoad?: (texture: any) => void): any;
@@ -147,6 +157,7 @@ interface I3DEngine {
147
157
  createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
148
158
  createMeshBasicMaterial(params?: any): I3DMaterial;
149
159
  createMeshStandardMaterial(params?: any): I3DMaterial;
160
+ createShaderMaterial?(params?: any): I3DMaterial;
150
161
  createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
151
162
  createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
152
163
  createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
@@ -154,6 +165,7 @@ interface I3DEngine {
154
165
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
155
166
  createTextureLoader(): I3DTextureLoader;
156
167
  createModelLoader(type: string): I3DModelLoader;
168
+ createRenderTarget?(width: number, height: number, options?: any): I3DRenderTarget;
157
169
  degToRad(degrees: number): number;
158
170
  radToDeg(radians: number): number;
159
171
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
@@ -198,6 +210,8 @@ declare class String3D extends StringModule {
198
210
  private lastSubmittedVersion;
199
211
  private scrollTicking;
200
212
  private onScrollBound;
213
+ private filterStates;
214
+ private filterWarnings;
201
215
  static setProvider(provider: I3DEngineProvider): void;
202
216
  constructor(context: StringContext);
203
217
  canConnect(object: StringObject): boolean;
@@ -226,6 +240,27 @@ declare class String3D extends StringModule {
226
240
  private markDirty;
227
241
  private markAllDirty;
228
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;
229
264
  private buildWorkerCameraData;
230
265
  private collectWorkerInputs;
231
266
  private applyWorkerResults;
@@ -274,6 +309,8 @@ declare class String3DObject {
274
309
  private _bbox;
275
310
  el: any;
276
311
  private _children;
312
+ private _flatObjectsCache;
313
+ private _subtreeCache;
277
314
  private engine;
278
315
  get children(): String3DObject[];
279
316
  constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
@@ -303,6 +340,10 @@ declare class String3DObject {
303
340
  set geometry(geometry: I3DGeometry | undefined);
304
341
  updateBoundingBox(): void;
305
342
  destroy(): void;
343
+ getFlatObjects(): I3DObject[];
344
+ getSubtreeObjects(): I3DObject[];
345
+ private invalidateFlatCache;
346
+ private invalidateSubtreeCache;
306
347
  private disposeObjectResources;
307
348
  }
308
349
 
@@ -323,6 +364,7 @@ declare class String3DScene {
323
364
  constructor(engine: I3DEngine, options?: String3DSceneOptions);
324
365
  getScene(): I3DScene;
325
366
  getObject(id: string): String3DObject | undefined;
367
+ getAllObjects(): String3DObject[];
326
368
  hasObject(id: string): boolean;
327
369
  deleteObject(id: string): boolean;
328
370
  createFromElement(object: StringObject): void;
@@ -346,20 +388,87 @@ declare class String3DScene {
346
388
  destroy(): void;
347
389
  }
348
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
+
349
435
  declare class String3DRenderer {
350
436
  private _container;
351
437
  private _renderer;
352
438
  private _width;
353
439
  private _height;
354
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;
355
449
  constructor(container: HTMLElement, engine: I3DEngine);
356
450
  attach(): void;
357
- render(scene: String3DScene, camera: String3DCamera): void;
451
+ render(scene: String3DScene, camera: String3DCamera, filterTargets?: String3DFilterTarget[]): void;
358
452
  resize(camera: String3DCamera): void;
359
453
  get width(): number;
360
454
  get height(): number;
361
455
  get renderer(): I3DRenderer;
362
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;
363
472
  }
364
473
 
365
474
  declare class String3DSynchronizer {
@@ -373,6 +482,20 @@ declare class String3DSynchronizer {
373
482
  updateViewportSize(width: number, height: number): void;
374
483
  }
375
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
+
376
499
  declare class ThreeJSEngine implements I3DEngine {
377
500
  private THREE;
378
501
  private loaders;
@@ -399,6 +522,7 @@ declare class ThreeJSEngine implements I3DEngine {
399
522
  createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
400
523
  createMeshBasicMaterial(params?: any): I3DMaterial;
401
524
  createMeshStandardMaterial(params?: any): I3DMaterial;
525
+ createShaderMaterial(params?: any): I3DMaterial;
402
526
  createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
403
527
  createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
404
528
  createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
@@ -406,6 +530,7 @@ declare class ThreeJSEngine implements I3DEngine {
406
530
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
407
531
  createTextureLoader(): I3DTextureLoader;
408
532
  createModelLoader(type: string): I3DModelLoader;
533
+ createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
409
534
  degToRad(degrees: number): number;
410
535
  radToDeg(radians: number): number;
411
536
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
@@ -417,4 +542,4 @@ declare class ThreeJSProvider implements I3DEngineProvider {
417
542
  getName(): string;
418
543
  }
419
544
 
420
- 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
@@ -74,6 +74,13 @@ interface I3DMaterial {
74
74
  opacity?: number;
75
75
  transparent?: boolean;
76
76
  }
77
+ interface I3DRenderTarget {
78
+ texture: any;
79
+ width: number;
80
+ height: number;
81
+ setSize(width: number, height: number): void;
82
+ dispose(): void;
83
+ }
77
84
  interface I3DLight extends I3DObject {
78
85
  color: any;
79
86
  intensity: number;
@@ -117,6 +124,9 @@ interface I3DRenderer {
117
124
  enabled: boolean;
118
125
  type: any;
119
126
  };
127
+ setRenderTarget?(target: I3DRenderTarget | null): void;
128
+ getRenderTarget?(): I3DRenderTarget | null;
129
+ clear?(color?: boolean, depth?: boolean, stencil?: boolean): void;
120
130
  }
121
131
  interface I3DTextureLoader {
122
132
  load(url: string, onLoad?: (texture: any) => void): any;
@@ -147,6 +157,7 @@ interface I3DEngine {
147
157
  createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
148
158
  createMeshBasicMaterial(params?: any): I3DMaterial;
149
159
  createMeshStandardMaterial(params?: any): I3DMaterial;
160
+ createShaderMaterial?(params?: any): I3DMaterial;
150
161
  createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
151
162
  createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
152
163
  createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
@@ -154,6 +165,7 @@ interface I3DEngine {
154
165
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
155
166
  createTextureLoader(): I3DTextureLoader;
156
167
  createModelLoader(type: string): I3DModelLoader;
168
+ createRenderTarget?(width: number, height: number, options?: any): I3DRenderTarget;
157
169
  degToRad(degrees: number): number;
158
170
  radToDeg(radians: number): number;
159
171
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
@@ -198,6 +210,8 @@ declare class String3D extends StringModule {
198
210
  private lastSubmittedVersion;
199
211
  private scrollTicking;
200
212
  private onScrollBound;
213
+ private filterStates;
214
+ private filterWarnings;
201
215
  static setProvider(provider: I3DEngineProvider): void;
202
216
  constructor(context: StringContext);
203
217
  canConnect(object: StringObject): boolean;
@@ -226,6 +240,27 @@ declare class String3D extends StringModule {
226
240
  private markDirty;
227
241
  private markAllDirty;
228
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;
229
264
  private buildWorkerCameraData;
230
265
  private collectWorkerInputs;
231
266
  private applyWorkerResults;
@@ -274,6 +309,8 @@ declare class String3DObject {
274
309
  private _bbox;
275
310
  el: any;
276
311
  private _children;
312
+ private _flatObjectsCache;
313
+ private _subtreeCache;
277
314
  private engine;
278
315
  get children(): String3DObject[];
279
316
  constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
@@ -303,6 +340,10 @@ declare class String3DObject {
303
340
  set geometry(geometry: I3DGeometry | undefined);
304
341
  updateBoundingBox(): void;
305
342
  destroy(): void;
343
+ getFlatObjects(): I3DObject[];
344
+ getSubtreeObjects(): I3DObject[];
345
+ private invalidateFlatCache;
346
+ private invalidateSubtreeCache;
306
347
  private disposeObjectResources;
307
348
  }
308
349
 
@@ -323,6 +364,7 @@ declare class String3DScene {
323
364
  constructor(engine: I3DEngine, options?: String3DSceneOptions);
324
365
  getScene(): I3DScene;
325
366
  getObject(id: string): String3DObject | undefined;
367
+ getAllObjects(): String3DObject[];
326
368
  hasObject(id: string): boolean;
327
369
  deleteObject(id: string): boolean;
328
370
  createFromElement(object: StringObject): void;
@@ -346,20 +388,87 @@ declare class String3DScene {
346
388
  destroy(): void;
347
389
  }
348
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
+
349
435
  declare class String3DRenderer {
350
436
  private _container;
351
437
  private _renderer;
352
438
  private _width;
353
439
  private _height;
354
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;
355
449
  constructor(container: HTMLElement, engine: I3DEngine);
356
450
  attach(): void;
357
- render(scene: String3DScene, camera: String3DCamera): void;
451
+ render(scene: String3DScene, camera: String3DCamera, filterTargets?: String3DFilterTarget[]): void;
358
452
  resize(camera: String3DCamera): void;
359
453
  get width(): number;
360
454
  get height(): number;
361
455
  get renderer(): I3DRenderer;
362
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;
363
472
  }
364
473
 
365
474
  declare class String3DSynchronizer {
@@ -373,6 +482,20 @@ declare class String3DSynchronizer {
373
482
  updateViewportSize(width: number, height: number): void;
374
483
  }
375
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
+
376
499
  declare class ThreeJSEngine implements I3DEngine {
377
500
  private THREE;
378
501
  private loaders;
@@ -399,6 +522,7 @@ declare class ThreeJSEngine implements I3DEngine {
399
522
  createCylinderGeometry(radiusTop: number, radiusBottom: number, height: number, segments?: number): I3DGeometry;
400
523
  createMeshBasicMaterial(params?: any): I3DMaterial;
401
524
  createMeshStandardMaterial(params?: any): I3DMaterial;
525
+ createShaderMaterial(params?: any): I3DMaterial;
402
526
  createPointLight(color?: string | number, intensity?: number, distance?: number, decay?: number): I3DLight;
403
527
  createSpotLight(color?: string | number, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number): I3DLight;
404
528
  createHemisphereLight(skyColor?: string | number, groundColor?: string | number, intensity?: number): I3DLight;
@@ -406,6 +530,7 @@ declare class ThreeJSEngine implements I3DEngine {
406
530
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
407
531
  createTextureLoader(): I3DTextureLoader;
408
532
  createModelLoader(type: string): I3DModelLoader;
533
+ createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
409
534
  degToRad(degrees: number): number;
410
535
  radToDeg(radians: number): number;
411
536
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
@@ -417,4 +542,4 @@ declare class ThreeJSProvider implements I3DEngineProvider {
417
542
  getName(): string;
418
543
  }
419
544
 
420
- 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 };