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.cjs +137 -136
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +278 -121
- package/dist/index.d.ts +278 -121
- package/dist/index.js +135 -134
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +137 -136
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/readme.md +11 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
308
|
-
|
|
309
|
-
|
|
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:
|
|
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
|
|
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 };
|