string-tune-3d 0.0.11 → 0.0.12

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.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { StringObject, StringModule, StringContext, StringData } from '@fiddle-digital/string-tune';
1
+ import { StringModule, StringContext, StringObject, StringData } from '@fiddle-digital/string-tune';
2
2
 
3
3
  type UniformType = "float" | "int" | "vec2" | "vec3" | "vec4" | "color" | "texture" | "mat3" | "mat4";
4
4
  type UniformDefinition = {
@@ -16,18 +16,33 @@ type MaterialBlendMode = "normal" | "additive" | "subtractive" | "multiply";
16
16
  type MaterialSide = "front" | "back" | "double";
17
17
  type String3DCustomMaterialDefinition = {
18
18
  name: string;
19
- extends?: "basic" | "standard" | "physical" | "shader";
19
+ extends?: "basic" | "standard" | "physical" | "transmission" | "shader";
20
20
  vertexShader?: string;
21
21
  fragmentShader?: string;
22
22
  injections?: ShaderInjection[];
23
23
  uniforms?: Record<string, UniformDefinition>;
24
24
  properties?: {
25
25
  transparent?: boolean;
26
+ opacity?: number;
26
27
  side?: MaterialSide;
27
28
  depthWrite?: boolean;
28
29
  depthTest?: boolean;
29
30
  blending?: MaterialBlendMode;
30
31
  wireframe?: boolean;
32
+ color?: string | number;
33
+ emissive?: string | number;
34
+ metalness?: number;
35
+ roughness?: number;
36
+ transmission?: number;
37
+ thickness?: number;
38
+ ior?: number;
39
+ reflectivity?: number;
40
+ clearcoat?: number;
41
+ clearcoatRoughness?: number;
42
+ attenuationDistance?: number;
43
+ attenuationColor?: string | number;
44
+ transmissionSamples?: number;
45
+ transmissionSampler?: boolean;
31
46
  };
32
47
  lights?: boolean;
33
48
  parse?: (element: HTMLElement, style: CSSStyleDeclaration) => Record<string, any>;
@@ -56,8 +71,135 @@ interface IMaterialFactory {
56
71
  supports(definition: String3DCustomMaterialDefinition): boolean;
57
72
  create(definition: String3DCustomMaterialDefinition, initialUniforms?: Record<string, any>): IMaterialInstance;
58
73
  parseUniformsFromCSS(definition: String3DCustomMaterialDefinition, element: HTMLElement, style: CSSStyleDeclaration): Record<string, any>;
74
+ getMaterialDefinition?(material: any): String3DCustomMaterialDefinition | null;
75
+ applyUniforms?(material: any, definition: String3DCustomMaterialDefinition, values: Record<string, any>): void;
76
+ isShaderMaterial?(material: any): boolean;
59
77
  }
60
78
 
79
+ type String3DCustomFilterImplementation = {
80
+ kind: "shader";
81
+ language: "glsl" | "wgsl" | "custom";
82
+ stage?: "fragment" | "pipeline";
83
+ code: string;
84
+ vertexCode?: string;
85
+ entryPoint?: string;
86
+ metadata?: Record<string, any>;
87
+ };
88
+ type String3DCustomFilterDefinition = {
89
+ name: string;
90
+ implementations?: Partial<Record<I3DBackend, String3DCustomFilterImplementation>>;
91
+ /**
92
+ * @deprecated Use `implementations.webgl` instead.
93
+ */
94
+ fragmentShader?: string;
95
+ uniforms?: Record<string, any>;
96
+ parse?: (args: string) => Record<string, any> | null;
97
+ };
98
+ declare class String3DCustomFilterRegistry {
99
+ private static filters;
100
+ static register(definition: String3DCustomFilterDefinition): void;
101
+ static get(name: string): String3DCustomFilterDefinition | undefined;
102
+ static has(name: string): boolean;
103
+ static list(): String3DCustomFilterDefinition[];
104
+ static getImplementation(name: string, backend: I3DBackend): String3DCustomFilterImplementation | undefined;
105
+ }
106
+
107
+ declare class String3DObject {
108
+ id: string;
109
+ type: string;
110
+ private _object;
111
+ private _material?;
112
+ private _geometry?;
113
+ private _texture?;
114
+ private _uniforms;
115
+ private _originalBoundingBox?;
116
+ private _quaternion;
117
+ private _originalSize;
118
+ private _bbox;
119
+ el: any;
120
+ private _children;
121
+ private _flatObjectsCache;
122
+ private _subtreeCache;
123
+ private engine;
124
+ get children(): String3DObject[];
125
+ constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
126
+ material?: I3DMaterial;
127
+ geometry?: I3DGeometry;
128
+ texture?: any;
129
+ });
130
+ get object(): I3DObject;
131
+ get material(): I3DMaterial | undefined;
132
+ get originalSize(): I3DVector3;
133
+ get boundingBox(): I3DBox3;
134
+ addChild(child: String3DObject): void;
135
+ getWorldMatrix(): I3DMatrix4;
136
+ getWorldPosition(): I3DVector3;
137
+ getOriginalBoundingBox(): I3DBox3;
138
+ syncTransformFromMatrix(matrix: I3DMatrix4): void;
139
+ applyWorldTransform(position: I3DVector3, quaternion: I3DQuaternion, scale: I3DVector3): void;
140
+ set quaternion(quaternion: I3DQuaternion);
141
+ set position(position: I3DVector3);
142
+ set scale(scale: I3DVector3);
143
+ set rotation(euler: I3DEuler);
144
+ set opacity(value: number);
145
+ set metalness(value: number);
146
+ set roughness(value: number);
147
+ set texture(texture: any);
148
+ set material(material: I3DMaterial | undefined);
149
+ set geometry(geometry: I3DGeometry | undefined);
150
+ updateBoundingBox(): void;
151
+ destroy(): void;
152
+ getFlatObjects(): I3DObject[];
153
+ getSubtreeObjects(): I3DObject[];
154
+ private invalidateFlatCache;
155
+ private invalidateSubtreeCache;
156
+ private disposeObjectResources;
157
+ }
158
+
159
+ type String3DFilterEffect = {
160
+ type: "blur";
161
+ amount: number;
162
+ } | {
163
+ type: "pixel";
164
+ size: number;
165
+ } | {
166
+ type: "bloom";
167
+ intensity: number;
168
+ threshold: number;
169
+ } | {
170
+ type: "brightness";
171
+ amount: number;
172
+ } | {
173
+ type: "contrast";
174
+ amount: number;
175
+ } | {
176
+ type: "saturate";
177
+ amount: number;
178
+ } | {
179
+ type: "grayscale";
180
+ amount: number;
181
+ } | {
182
+ type: "sepia";
183
+ amount: number;
184
+ } | {
185
+ type: "invert";
186
+ amount: number;
187
+ } | {
188
+ type: "hue-rotate";
189
+ angle: number;
190
+ } | {
191
+ type: "custom";
192
+ name: string;
193
+ uniforms: Record<string, any>;
194
+ };
195
+ type String3DFilterChain = String3DFilterEffect[];
196
+ type String3DFilterTarget = {
197
+ object: String3DObject;
198
+ effects: String3DFilterChain;
199
+ effectsKey: string;
200
+ dirty: boolean;
201
+ };
202
+
61
203
  interface I3DVector3 {
62
204
  x: number;
63
205
  y: number;
@@ -238,6 +380,17 @@ interface I3DRenderer {
238
380
  interface I3DTextureLoader {
239
381
  load(url: string, onLoad?: (texture: any) => void): any;
240
382
  }
383
+ type I3DMaterialVisualProps = {
384
+ opacity?: number;
385
+ color?: string;
386
+ metalness?: number;
387
+ roughness?: number;
388
+ emissive?: string;
389
+ };
390
+ type I3DModelLoaderOptions = {
391
+ textureBaseUrl?: string;
392
+ textureMap?: Record<string, string>;
393
+ };
241
394
  type TextGeometryOptions = {
242
395
  size: number;
243
396
  height: number;
@@ -262,6 +415,53 @@ type TextGeometryOptions = {
262
415
  interface I3DModelLoader {
263
416
  load(url: string, onLoad?: (model: any) => void, onProgress?: (progress: any) => void, onError?: (error: any) => void): void;
264
417
  }
418
+ type I3DBackend = "webgl" | "webgpu" | "custom";
419
+ type I3DEngineCapabilities = {
420
+ renderTargets: boolean;
421
+ shaderMaterials: boolean;
422
+ postProcess: boolean;
423
+ customMaterialFactory: boolean;
424
+ particles: boolean;
425
+ text: boolean;
426
+ geometrySimplify: boolean;
427
+ };
428
+ interface I3DPostProcessRuntime {
429
+ isSupported(renderer: I3DRenderer): boolean;
430
+ createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
431
+ createShaderMaterial(params?: any): I3DMaterial;
432
+ setRenderTarget(renderer: I3DRenderer, target: I3DRenderTarget | null): void;
433
+ clear(renderer: I3DRenderer, color?: boolean, depth?: boolean, stencil?: boolean): void;
434
+ createPipeline?(context: {
435
+ engine: I3DEngine;
436
+ renderer: I3DRenderer;
437
+ width: number;
438
+ height: number;
439
+ customFilterRegistry: I3DCustomFilterRegistryRuntime;
440
+ }): I3DPostProcessPipelineRuntime | null;
441
+ }
442
+ interface I3DPostProcessPipelineRuntime {
443
+ isSupported(): boolean;
444
+ resize(width: number, height: number): void;
445
+ setScale(scale: number): void;
446
+ applyFilters(input: I3DRenderTarget, effects: String3DFilterChain, quality?: number): I3DRenderTarget;
447
+ acquireTarget(): I3DRenderTarget;
448
+ releaseTarget(target: I3DRenderTarget): void;
449
+ renderToScreen(input: I3DRenderTarget): void;
450
+ dispose(): void;
451
+ }
452
+ interface I3DCustomFilterRegistryRuntime {
453
+ get(name: string): String3DCustomFilterDefinition | undefined;
454
+ }
455
+ interface I3DCustomMaterialRegistryRuntime {
456
+ get(name: string): String3DCustomMaterialDefinition | undefined;
457
+ }
458
+ type I3DLayerIsolationState = unknown;
459
+ type I3DRendererConfigContext = {
460
+ width: number;
461
+ height: number;
462
+ pixelRatio: number;
463
+ container: HTMLElement;
464
+ };
265
465
  interface I3DEngine {
266
466
  createVector3(x?: number, y?: number, z?: number): I3DVector3;
267
467
  createVector2(x?: number, y?: number): I3DVector2;
@@ -275,6 +475,8 @@ interface I3DEngine {
275
475
  alpha?: boolean;
276
476
  logarithmicDepthBuffer?: boolean;
277
477
  }): I3DRenderer;
478
+ getRecommendedPixelRatio?(): number;
479
+ configureRenderer?(renderer: I3DRenderer, context: I3DRendererConfigContext): void;
278
480
  createPerspectiveCamera(fov?: number, aspect?: number, near?: number, far?: number): I3DPerspectiveCamera;
279
481
  createOrthographicCamera(left: number, right: number, top: number, bottom: number, near?: number, far?: number): I3DOrthographicCamera;
280
482
  createGroup(): I3DObject;
@@ -293,67 +495,44 @@ interface I3DEngine {
293
495
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
294
496
  createTextureLoader(): I3DTextureLoader;
295
497
  createModelLoader(type: string): I3DModelLoader;
498
+ configureModelLoader?(loader: I3DModelLoader, options: I3DModelLoaderOptions): void;
499
+ resolveLoadedModelRoot?(loadedModel: any): I3DObject | null;
296
500
  createRenderTarget?(width: number, height: number, options?: any): I3DRenderTarget;
297
501
  getMaterialFactory?(): IMaterialFactory | null;
298
502
  createParticleSystem?(config: ParticleSystemConfig): I3DParticleSystem;
503
+ setObjectPosition?(target: any, x: number, y: number, z: number): boolean;
504
+ applyMaterialProps?(material: I3DMaterial, props: I3DMaterialVisualProps): boolean;
505
+ supportsObjectLayerIsolation?(camera: I3DCamera, objects: I3DObject[]): boolean;
506
+ beginObjectLayerIsolation?(camera: I3DCamera, objects: I3DObject[], lights: I3DObject[], layer: number): I3DLayerIsolationState | null;
507
+ endObjectLayerIsolation?(camera: I3DCamera, state: I3DLayerIsolationState): void;
508
+ forEachMesh(object: I3DObject, callback: (mesh: I3DMesh) => void): void;
509
+ forEachMaterial(object: I3DObject, callback: (material: I3DMaterial) => void): void;
510
+ getPrimaryMesh(object: I3DObject): I3DMesh | null;
511
+ applyTextGeometryToMesh(mesh: I3DMesh, geometry: I3DGeometry): boolean;
299
512
  loadFont?(url: string): Promise<any>;
300
513
  createTextGeometry?(text: string, font: any, options: TextGeometryOptions): I3DGeometry | null;
514
+ getTextGeometryLayoutSignature?(context: {
515
+ text: string;
516
+ layoutSignature: string;
517
+ layout: Array<{
518
+ char: string;
519
+ x: number;
520
+ y: number;
521
+ scale?: number;
522
+ }>;
523
+ elementWidth: number;
524
+ elementHeight: number;
525
+ fontSize: number;
526
+ }): string;
301
527
  simplifyGeometry?(geometry: I3DGeometry, quality: number): I3DGeometry | null;
302
528
  degToRad(degrees: number): number;
303
529
  radToDeg(radians: number): number;
304
530
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
305
- }
306
-
307
- declare class String3DObject {
308
- id: string;
309
- type: string;
310
- private _object;
311
- private _material?;
312
- private _geometry?;
313
- private _texture?;
314
- private _uniforms;
315
- private _originalBoundingBox?;
316
- private _quaternion;
317
- private _originalSize;
318
- private _bbox;
319
- el: any;
320
- private _children;
321
- private _flatObjectsCache;
322
- private _subtreeCache;
323
- private engine;
324
- get children(): String3DObject[];
325
- constructor(id: string, type: string, object: I3DObject, engine: I3DEngine, options?: {
326
- material?: I3DMaterial;
327
- geometry?: I3DGeometry;
328
- texture?: any;
329
- });
330
- get object(): I3DObject;
331
- get material(): I3DMaterial | undefined;
332
- get originalSize(): I3DVector3;
333
- get boundingBox(): I3DBox3;
334
- addChild(child: String3DObject): void;
335
- getWorldMatrix(): I3DMatrix4;
336
- getWorldPosition(): I3DVector3;
337
- getOriginalBoundingBox(): I3DBox3;
338
- syncTransformFromMatrix(matrix: I3DMatrix4): void;
339
- applyWorldTransform(position: I3DVector3, quaternion: I3DQuaternion, scale: I3DVector3): void;
340
- set quaternion(quaternion: I3DQuaternion);
341
- set position(position: I3DVector3);
342
- set scale(scale: I3DVector3);
343
- set rotation(euler: I3DEuler);
344
- set opacity(value: number);
345
- set metalness(value: number);
346
- set roughness(value: number);
347
- set texture(texture: any);
348
- set material(material: I3DMaterial | undefined);
349
- set geometry(geometry: I3DGeometry | undefined);
350
- updateBoundingBox(): void;
351
- destroy(): void;
352
- getFlatObjects(): I3DObject[];
353
- getSubtreeObjects(): I3DObject[];
354
- private invalidateFlatCache;
355
- private invalidateSubtreeCache;
356
- private disposeObjectResources;
531
+ getBackend?(): I3DBackend;
532
+ getCapabilities?(): I3DEngineCapabilities;
533
+ getPostProcessRuntime?(): I3DPostProcessRuntime | null;
534
+ getCustomFilterRegistry?(): I3DCustomFilterRegistryRuntime | null;
535
+ getCustomMaterialRegistry?(): I3DCustomMaterialRegistryRuntime | null;
357
536
  }
358
537
 
359
538
  type CameraMode = "orthographic" | "perspective";
@@ -392,6 +571,7 @@ declare class String3DSynchronizer {
392
571
  private strategies;
393
572
  private styleReadIntervalMs;
394
573
  private layoutReadIntervalMs;
574
+ private scene?;
395
575
  constructor(camera: String3DCamera, viewportWidth: number, viewportHeight: number, engine: I3DEngine);
396
576
  syncElement(el: HTMLElement, object: String3DObject, parentData: any, hints?: {
397
577
  dirtySet?: Set<HTMLElement> | null;
@@ -401,10 +581,16 @@ declare class String3DSynchronizer {
401
581
  styleReadIntervalMs?: number;
402
582
  layoutReadIntervalMs?: number;
403
583
  }): void;
584
+ setScene(scene: String3DScene): void;
404
585
  updateViewportSize(width: number, height: number): void;
405
586
  cleanupElement(el: HTMLElement, object: String3DObject): void;
406
587
  }
407
588
 
589
+ type String3DSourceObject = {
590
+ id: string;
591
+ htmlElement: HTMLElement | null;
592
+ getProperty<T>(name: string): T;
593
+ };
408
594
  interface String3DSceneOptions {
409
595
  modelLoader?: I3DModelLoader;
410
596
  modelLoaderFactory?: (engine: I3DEngine, type?: string) => I3DModelLoader;
@@ -420,6 +606,7 @@ declare class String3DScene {
420
606
  private _modelLoaderFactory?;
421
607
  private _modelLoaderCache;
422
608
  private _synchronizer?;
609
+ private customMaterialRegistry;
423
610
  get rootObjects(): String3DObject[];
424
611
  constructor(engine: I3DEngine, options?: String3DSceneOptions);
425
612
  setSynchronizer(synchronizer: String3DSynchronizer): void;
@@ -429,7 +616,7 @@ declare class String3DScene {
429
616
  getAllObjects(): String3DObject[];
430
617
  hasObject(id: string): boolean;
431
618
  deleteObject(id: string): boolean;
432
- createFromElement(object: StringObject): void;
619
+ createFromElement(object: String3DSourceObject): void;
433
620
  private createGroup;
434
621
  private createLight;
435
622
  private applyShadowProps;
@@ -453,13 +640,16 @@ declare class String3DScene {
453
640
  private loadTexture;
454
641
  private parseFlipY;
455
642
  private shouldOverrideModelMaterial;
456
- private applyModelTextureRemap;
643
+ private parseModelLoaderOptions;
457
644
  destroy(): void;
458
645
  }
459
646
 
460
647
  interface I3DEngineProvider {
648
+ initialize?(): void | Promise<void>;
461
649
  getEngine(): I3DEngine;
462
650
  getName(): string;
651
+ getBackend?(): I3DBackend;
652
+ getCapabilities?(): I3DEngineCapabilities;
463
653
  }
464
654
 
465
655
  interface String3DOptions {
@@ -489,6 +679,8 @@ declare class String3D extends StringModule {
489
679
  private lastSyncData;
490
680
  private filterController;
491
681
  private needsInitialResize;
682
+ private providerBootstrapped;
683
+ private pendingConnectedObjects;
492
684
  static getInstance(): String3D | null;
493
685
  get scene(): String3DScene | null;
494
686
  static setProvider(provider: I3DEngineProvider): void;
@@ -501,6 +693,8 @@ declare class String3D extends StringModule {
501
693
  initializeObject(globalId: number, object: StringObject, element: HTMLElement, attributes: Record<string, any>): void;
502
694
  onResize(): void;
503
695
  onInit(): void;
696
+ private bootstrapProvider;
697
+ private flushPendingConnections;
504
698
  onSettingsChange(): void;
505
699
  private buildOptionsFromSettings;
506
700
  private getSettingValue;
@@ -517,56 +711,13 @@ declare class String3D extends StringModule {
517
711
  destroy(): void;
518
712
  }
519
713
 
520
- type String3DFilterEffect = {
521
- type: "blur";
522
- amount: number;
523
- } | {
524
- type: "pixel";
525
- size: number;
526
- } | {
527
- type: "bloom";
528
- intensity: number;
529
- threshold: number;
530
- } | {
531
- type: "brightness";
532
- amount: number;
533
- } | {
534
- type: "contrast";
535
- amount: number;
536
- } | {
537
- type: "saturate";
538
- amount: number;
539
- } | {
540
- type: "grayscale";
541
- amount: number;
542
- } | {
543
- type: "sepia";
544
- amount: number;
545
- } | {
546
- type: "invert";
547
- amount: number;
548
- } | {
549
- type: "hue-rotate";
550
- angle: number;
551
- } | {
552
- type: "custom";
553
- name: string;
554
- uniforms: Record<string, any>;
555
- };
556
- type String3DFilterChain = String3DFilterEffect[];
557
- type String3DFilterTarget = {
558
- object: String3DObject;
559
- effects: String3DFilterChain;
560
- effectsKey: string;
561
- dirty: boolean;
562
- };
563
-
564
714
  declare class String3DRenderer {
565
715
  private _container;
566
716
  private _renderer;
567
717
  private _width;
568
718
  private _height;
569
719
  private engine;
720
+ private postProcessRuntime;
570
721
  private filterPipeline;
571
722
  private filterCache;
572
723
  private frameId;
@@ -592,26 +743,6 @@ declare class String3DRenderer {
592
743
  private updateQuality;
593
744
  private invalidateFilterCache;
594
745
  private evictCache;
595
- private supportsLayers;
596
- private hasLayers;
597
- private applyLayerMask;
598
- private restoreLayerMask;
599
- private setCameraLayer;
600
- private restoreCameraLayer;
601
- }
602
-
603
- type String3DCustomFilterDefinition = {
604
- name: string;
605
- fragmentShader: string;
606
- uniforms?: Record<string, any>;
607
- parse?: (args: string) => Record<string, any> | null;
608
- };
609
- declare class String3DCustomFilterRegistry {
610
- private static filters;
611
- static register(definition: String3DCustomFilterDefinition): void;
612
- static get(name: string): String3DCustomFilterDefinition | undefined;
613
- static has(name: string): boolean;
614
- static list(): String3DCustomFilterDefinition[];
615
746
  }
616
747
 
617
748
  type String3DFontEntry = {
@@ -690,6 +821,8 @@ declare class ThreeJSEngine implements I3DEngine {
690
821
  alpha?: boolean;
691
822
  logarithmicDepthBuffer?: boolean;
692
823
  }): I3DRenderer;
824
+ getRecommendedPixelRatio(): number;
825
+ configureRenderer(renderer: I3DRenderer, _context: I3DRendererConfigContext): void;
693
826
  createPerspectiveCamera(fov?: number, aspect?: number, near?: number, far?: number): I3DPerspectiveCamera;
694
827
  createOrthographicCamera(left: number, right: number, top: number, bottom: number, near?: number, far?: number): I3DOrthographicCamera;
695
828
  createGroup(): I3DObject;
@@ -708,6 +841,8 @@ declare class ThreeJSEngine implements I3DEngine {
708
841
  createDirectionalLight(color?: string | number, intensity?: number): I3DLight;
709
842
  createTextureLoader(): I3DTextureLoader;
710
843
  createModelLoader(type: string): I3DModelLoader;
844
+ configureModelLoader(loader: I3DModelLoader, options: I3DModelLoaderOptions): void;
845
+ resolveLoadedModelRoot(loadedModel: any): I3DObject | null;
711
846
  createRenderTarget(width: number, height: number, options?: any): I3DRenderTarget;
712
847
  loadFont(url: string): Promise<any>;
713
848
  private loadFontWithConverter;
@@ -730,26 +865,48 @@ declare class ThreeJSEngine implements I3DEngine {
730
865
  private scaleShape;
731
866
  private resolveParticleModelGeometry;
732
867
  createParticleSystem(config: ParticleSystemConfig): I3DParticleSystem;
868
+ forEachMesh(object: I3DObject, callback: (mesh: I3DMesh) => void): void;
869
+ forEachMaterial(object: I3DObject, callback: (material: I3DMaterial) => void): void;
870
+ getPrimaryMesh(object: I3DObject): I3DMesh | null;
871
+ applyTextGeometryToMesh(mesh: I3DMesh, geometry: I3DGeometry): boolean;
872
+ setObjectPosition(target: any, x: number, y: number, z: number): boolean;
873
+ supportsObjectLayerIsolation(camera: I3DCamera, objects: I3DObject[]): boolean;
874
+ beginObjectLayerIsolation(camera: I3DCamera, objects: I3DObject[], lights: I3DObject[], layer: number): I3DLayerIsolationState | null;
875
+ endObjectLayerIsolation(camera: I3DCamera, state: I3DLayerIsolationState): void;
876
+ applyMaterialProps(material: I3DMaterial, props: I3DMaterialVisualProps): boolean;
877
+ private hasLayers;
733
878
  simplifyGeometry(geometry: I3DGeometry, quality: number): I3DGeometry | null;
734
879
  degToRad(degrees: number): number;
735
880
  radToDeg(radians: number): number;
736
881
  computeBoundingBoxRecursively(object: I3DObject): I3DBox3;
882
+ getBackend(): I3DBackend;
883
+ getCapabilities(): I3DEngineCapabilities;
884
+ getPostProcessRuntime(): I3DPostProcessRuntime;
885
+ getCustomFilterRegistry(): I3DCustomFilterRegistryRuntime;
886
+ getCustomMaterialRegistry(): I3DCustomMaterialRegistryRuntime;
737
887
  }
738
888
  declare class ThreeJSProvider implements I3DEngineProvider {
739
889
  private engine;
740
890
  constructor(THREE: any, loaders?: Record<string, any>);
891
+ initialize(): void;
741
892
  getEngine(): I3DEngine;
742
893
  getName(): string;
894
+ getBackend(): I3DBackend;
895
+ getCapabilities(): I3DEngineCapabilities;
743
896
  }
744
897
 
745
898
  declare class ThreeJSMaterialFactory implements IMaterialFactory {
746
899
  private THREE;
747
900
  private textureLoader;
748
901
  private textureCache;
902
+ private meshTransmissionMaterialClass;
749
903
  constructor(THREE: any);
750
904
  supports(definition: String3DCustomMaterialDefinition): boolean;
751
905
  create(definition: String3DCustomMaterialDefinition, initialUniforms?: Record<string, any>): IMaterialInstance;
752
906
  parseUniformsFromCSS(definition: String3DCustomMaterialDefinition, element: HTMLElement, style: CSSStyleDeclaration): Record<string, any>;
907
+ getMaterialDefinition(material: any): String3DCustomMaterialDefinition | null;
908
+ isShaderMaterial(material: any): boolean;
909
+ applyUniforms(material: any, definition: String3DCustomMaterialDefinition, values: Record<string, any>): void;
753
910
  private buildUniforms;
754
911
  private convertUniformValue;
755
912
  private loadTexture;
@@ -766,4 +923,4 @@ declare class ThreeJSMaterialFactory implements IMaterialFactory {
766
923
  dispose(): void;
767
924
  }
768
925
 
769
- export { type CameraMode, FontConverter, type FontData, type FontSource, 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 I3DParticleSystem, type I3DPerspectiveCamera, type I3DQuaternion, type I3DRenderTarget, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, type IMaterialFactory, type IMaterialInstance, type MaterialBlendMode, type MaterialSide, type ParticleMode, type ParticleSystemConfig, type ShaderInjection, type ShaderInjectionPoint, String3D, String3DCamera, type String3DCustomFilterDefinition, String3DCustomFilterRegistry, type String3DCustomMaterialDefinition, String3DCustomMaterialRegistry, type String3DFontEntry, String3DFontRegistry, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSMaterialFactory, ThreeJSProvider, type UniformDefinition, type UniformType };
926
+ export { type CameraMode, FontConverter, type FontData, type FontSource, type I3DBackend, type I3DBox3, type I3DCamera, type I3DCustomFilterRegistryRuntime, type I3DCustomMaterialRegistryRuntime, type I3DEngine, type I3DEngineCapabilities, type I3DEngineProvider, type I3DEuler, type I3DGeometry, type I3DLight, type I3DMaterial, type I3DMatrix4, type I3DMesh, type I3DModelLoader, type I3DObject, type I3DOrthographicCamera, type I3DParticleSystem, type I3DPerspectiveCamera, type I3DPostProcessPipelineRuntime, type I3DPostProcessRuntime, type I3DQuaternion, type I3DRenderTarget, type I3DRenderer, type I3DScene, type I3DTextureLoader, type I3DVector2, type I3DVector3, type IMaterialFactory, type IMaterialInstance, type MaterialBlendMode, type MaterialSide, type ParticleMode, type ParticleSystemConfig, type ShaderInjection, type ShaderInjectionPoint, String3D, String3DCamera, type String3DCustomFilterDefinition, String3DCustomFilterRegistry, type String3DCustomMaterialDefinition, String3DCustomMaterialRegistry, type String3DFontEntry, String3DFontRegistry, String3DObject, type String3DOptions, String3DRenderer, String3DScene, String3DSynchronizer, ThreeJSEngine, ThreeJSMaterialFactory, ThreeJSProvider, type UniformDefinition, type UniformType };