@headless-three/renderer 0.1.7 → 0.1.8

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.
Files changed (58) hide show
  1. package/README.md +227 -52
  2. package/dist/attributes.d.ts +7 -5
  3. package/dist/attributes.d.ts.map +1 -1
  4. package/dist/attributes.js +112 -36
  5. package/dist/attributes.js.map +1 -1
  6. package/dist/camera.d.ts +1 -0
  7. package/dist/camera.d.ts.map +1 -1
  8. package/dist/camera.js +52 -13
  9. package/dist/camera.js.map +1 -1
  10. package/dist/clipping.d.ts +6 -0
  11. package/dist/clipping.d.ts.map +1 -0
  12. package/dist/clipping.js +84 -0
  13. package/dist/clipping.js.map +1 -0
  14. package/dist/color.d.ts +8 -3
  15. package/dist/color.d.ts.map +1 -1
  16. package/dist/color.js +136 -11
  17. package/dist/color.js.map +1 -1
  18. package/dist/index.d.ts +770 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +6208 -46
  21. package/dist/index.js.map +1 -1
  22. package/dist/layers.d.ts +3 -0
  23. package/dist/layers.d.ts.map +1 -0
  24. package/dist/layers.js +33 -0
  25. package/dist/layers.js.map +1 -0
  26. package/dist/lights.d.ts +5 -4
  27. package/dist/lights.d.ts.map +1 -1
  28. package/dist/lights.js +473 -77
  29. package/dist/lights.js.map +1 -1
  30. package/dist/loaders.d.ts +92 -0
  31. package/dist/loaders.d.ts.map +1 -0
  32. package/dist/loaders.js +858 -0
  33. package/dist/loaders.js.map +1 -0
  34. package/dist/materials.d.ts +38 -6
  35. package/dist/materials.d.ts.map +1 -1
  36. package/dist/materials.js +4236 -162
  37. package/dist/materials.js.map +1 -1
  38. package/dist/math.js +2 -2
  39. package/dist/math.js.map +1 -1
  40. package/dist/morphs.d.ts.map +1 -1
  41. package/dist/morphs.js +50 -15
  42. package/dist/morphs.js.map +1 -1
  43. package/dist/objects.d.ts +4 -0
  44. package/dist/objects.d.ts.map +1 -0
  45. package/dist/objects.js +25 -0
  46. package/dist/objects.js.map +1 -0
  47. package/dist/scene.d.ts +251 -2
  48. package/dist/scene.d.ts.map +1 -1
  49. package/dist/scene.js +3679 -105
  50. package/dist/scene.js.map +1 -1
  51. package/dist/skinning.d.ts.map +1 -1
  52. package/dist/skinning.js +37 -18
  53. package/dist/skinning.js.map +1 -1
  54. package/dist/types.d.ts +1261 -12
  55. package/dist/types.d.ts.map +1 -1
  56. package/native.d.ts +761 -3
  57. package/native.js +54 -52
  58. package/package.json +20 -9
package/dist/types.d.ts CHANGED
@@ -1,17 +1,81 @@
1
- export type RenderOutputFormat = 'png' | 'rgba' | 'raw' | 'raw-rgba';
1
+ export type RenderOutputFormat = 'png' | 'rgba';
2
+ export type RenderOutputColorSpace = 'srgb' | 'srgb-linear' | 'linear-srgb' | 'linearsrgb' | 'linear';
3
+ export type RenderMode = 'color' | 'mask' | 'object-id' | 'normal' | 'depth';
4
+ export type RenderAnimationLoopCallback = (time: number, frame?: unknown) => void;
5
+ export type RendererPowerPreferenceLike = 'default' | 'high-performance' | 'low-power';
6
+ export interface RendererInspectorLike {
7
+ currentFrame?: unknown;
8
+ setRenderer(renderer: unknown): unknown;
9
+ getRenderer?(): unknown;
10
+ init?(): unknown;
11
+ begin?(): unknown;
12
+ finish?(): unknown;
13
+ inspect?(node: unknown): unknown;
14
+ computeAsync?(computeNode: unknown, dispatchSizeOrCount?: unknown): unknown;
15
+ beginCompute?(uid: unknown, computeNode?: unknown): unknown;
16
+ finishCompute?(uid?: unknown): unknown;
17
+ beginRender?(uid: unknown, scene?: unknown, camera?: unknown, renderTarget?: unknown): unknown;
18
+ finishRender?(uid?: unknown): unknown;
19
+ copyTextureToTexture?(srcTexture: unknown, dstTexture: unknown): unknown;
20
+ copyFramebufferToTexture?(framebufferTexture: unknown): unknown;
21
+ }
22
+ export interface RendererParametersLike {
23
+ canvas?: unknown;
24
+ context?: unknown;
25
+ alpha?: boolean;
26
+ depth?: boolean;
27
+ stencil?: boolean;
28
+ antialias?: boolean;
29
+ premultipliedAlpha?: boolean;
30
+ preserveDrawingBuffer?: boolean;
31
+ powerPreference?: RendererPowerPreferenceLike;
32
+ failIfMajorPerformanceCaveat?: boolean;
33
+ samples?: number;
34
+ outputBufferType?: number;
35
+ logarithmicDepthBuffer?: boolean;
36
+ reversedDepthBuffer?: boolean;
37
+ reverseDepthBuffer?: boolean;
38
+ }
39
+ export interface RendererContextAttributesLike {
40
+ alpha: boolean;
41
+ depth: boolean;
42
+ stencil: boolean;
43
+ antialias: boolean;
44
+ premultipliedAlpha: boolean;
45
+ preserveDrawingBuffer: boolean;
46
+ powerPreference: RendererPowerPreferenceLike;
47
+ failIfMajorPerformanceCaveat: boolean;
48
+ }
2
49
  export interface ThreeColorLike {
3
50
  r: number;
4
51
  g: number;
5
52
  b: number;
6
53
  isColor?: boolean;
7
54
  }
55
+ export type ThreeColorInput = ThreeColorLike | string | number[];
8
56
  export interface ThreeMatrix4Like {
9
57
  elements: ArrayLike<number>;
10
58
  }
59
+ export interface ThreeMatrix3Like {
60
+ elements: ArrayLike<number>;
61
+ }
62
+ export interface ThreeSphereLike {
63
+ center?: {
64
+ x?: number;
65
+ y?: number;
66
+ z?: number;
67
+ } | ArrayLike<number>;
68
+ radius?: number;
69
+ }
11
70
  export interface ThreeBufferAttributeLike {
12
71
  count: number;
72
+ version?: number;
13
73
  itemSize?: number;
14
74
  normalized?: boolean;
75
+ isPacked?: boolean;
76
+ packingMethod?: unknown;
77
+ isInstancedBufferAttribute?: boolean;
78
+ meshPerAttribute?: number;
15
79
  array?: ArrayLike<number>;
16
80
  data?: {
17
81
  array: ArrayLike<number>;
@@ -24,6 +88,9 @@ export interface ThreeBufferAttributeLike {
24
88
  getW?(index: number): number;
25
89
  }
26
90
  export interface ThreeBufferGeometryLike {
91
+ version?: number;
92
+ isInstancedBufferGeometry?: boolean;
93
+ instanceCount?: number;
27
94
  attributes?: Record<string, ThreeBufferAttributeLike | undefined>;
28
95
  index?: ThreeBufferAttributeLike | null;
29
96
  groups?: Array<{
@@ -36,15 +103,35 @@ export interface ThreeBufferGeometryLike {
36
103
  count?: number;
37
104
  };
38
105
  getAttribute?(name: string): ThreeBufferAttributeLike | undefined;
106
+ boundingSphere?: ThreeSphereLike | null;
107
+ computeBoundingSphere?(): void;
39
108
  morphAttributes?: Record<string, ThreeBufferAttributeLike[] | undefined>;
40
109
  morphTargetsRelative?: boolean;
41
110
  }
42
111
  export interface ThreeTextureLike {
112
+ version?: number;
113
+ isTexture?: boolean;
114
+ isCubeTexture?: boolean;
115
+ isFramebufferTexture?: boolean;
116
+ isDepthTexture?: boolean;
117
+ isVideoTexture?: boolean;
118
+ isStorageTexture?: boolean;
119
+ isCompressedTexture?: boolean;
120
+ isCompressedArrayTexture?: boolean;
121
+ isCompressedCubeTexture?: boolean;
122
+ isDataArrayTexture?: boolean;
123
+ isData3DTexture?: boolean;
124
+ isArrayTexture?: boolean;
125
+ is3DTexture?: boolean;
43
126
  image?: {
44
127
  data?: ArrayLike<number>;
45
128
  width?: number;
46
129
  height?: number;
47
- } | Buffer | Uint8Array;
130
+ } | Buffer | Uint8Array | Array<{
131
+ data?: ArrayLike<number>;
132
+ width?: number;
133
+ height?: number;
134
+ } | Buffer | Uint8Array>;
48
135
  source?: {
49
136
  data?: {
50
137
  data?: ArrayLike<number>;
@@ -54,37 +141,239 @@ export interface ThreeTextureLike {
54
141
  };
55
142
  wrapS?: number;
56
143
  wrapT?: number;
144
+ magFilter?: number;
145
+ minFilter?: number;
146
+ format?: number;
147
+ type?: number;
148
+ generateMipmaps?: boolean;
149
+ needsUpdate?: boolean;
150
+ mipmaps?: Array<{
151
+ data?: ArrayLike<number>;
152
+ width?: number;
153
+ height?: number;
154
+ }>;
155
+ anisotropy?: number;
156
+ mapping?: number;
157
+ channel?: number;
158
+ offset?: {
159
+ x?: number;
160
+ y?: number;
161
+ };
162
+ repeat?: {
163
+ x?: number;
164
+ y?: number;
165
+ };
166
+ rotation?: number;
167
+ center?: {
168
+ x?: number;
169
+ y?: number;
170
+ };
171
+ matrix?: ThreeMatrix3Like;
172
+ matrixAutoUpdate?: boolean;
173
+ flipY?: boolean;
174
+ premultiplyAlpha?: boolean;
175
+ unpackAlignment?: number;
176
+ colorSpace?: string;
177
+ encoding?: number;
178
+ }
179
+ export interface ThreeVector3Like {
180
+ x?: number;
181
+ y?: number;
182
+ z?: number;
183
+ }
184
+ export interface ThreeEulerLike {
185
+ x?: number;
186
+ y?: number;
187
+ z?: number;
188
+ order?: string;
189
+ isEuler?: boolean;
190
+ }
191
+ export type ThreePlaneLike = {
192
+ normal?: ThreeVector3Like | ArrayLike<number>;
193
+ constant?: number;
194
+ } | ArrayLike<number>;
195
+ export type RenderPixelRectLike = {
196
+ x?: number;
197
+ y?: number;
198
+ width?: number;
199
+ height?: number;
200
+ z?: number;
201
+ w?: number;
202
+ } | ArrayLike<number>;
203
+ export type RenderSizeLike = {
204
+ width?: number;
205
+ height?: number;
206
+ x?: number;
207
+ y?: number;
208
+ set?(width: number, height: number): unknown;
209
+ } | ArrayLike<number>;
210
+ export interface ThreeLayersLike {
211
+ mask?: number;
212
+ test?(layers: ThreeLayersLike): boolean;
57
213
  }
58
214
  export interface ThreeMaterialLike {
59
- color?: ThreeColorLike;
215
+ type?: string;
216
+ color?: ThreeColorInput;
60
217
  opacity?: number;
61
218
  visible?: boolean;
62
219
  vertexColors?: boolean;
220
+ userData?: Record<string, any>;
221
+ onBeforeCompile?: (...args: any[]) => void;
222
+ blending?: number;
223
+ blendEquation?: number;
224
+ blendSrc?: number;
225
+ blendDst?: number;
226
+ blendEquationAlpha?: number | null;
227
+ blendSrcAlpha?: number | null;
228
+ blendDstAlpha?: number | null;
229
+ blendColor?: ThreeColorInput;
230
+ blendAlpha?: number;
231
+ premultipliedAlpha?: boolean;
232
+ toneMapped?: boolean;
233
+ dithering?: boolean;
234
+ precision?: 'highp' | 'mediump' | 'lowp' | null;
63
235
  map?: ThreeTextureLike | null;
236
+ envMap?: ThreeTextureLike | null;
237
+ envMapIntensity?: number;
238
+ envMapRotation?: ThreeEulerLike | ArrayLike<number> | null;
239
+ combine?: number;
240
+ reflectivity?: number;
241
+ refractionRatio?: number;
64
242
  metalness?: number;
65
243
  roughness?: number;
66
- emissive?: ThreeColorLike;
244
+ clearcoat?: number;
245
+ clearcoatMap?: ThreeTextureLike | null;
246
+ clearcoatRoughness?: number;
247
+ clearcoatRoughnessMap?: ThreeTextureLike | null;
248
+ clearcoatNormalMap?: ThreeTextureLike | null;
249
+ clearcoatNormalScale?: {
250
+ x: number;
251
+ y: number;
252
+ };
253
+ sheen?: number;
254
+ sheenColor?: ThreeColorInput;
255
+ sheenColorMap?: ThreeTextureLike | null;
256
+ sheenRoughness?: number;
257
+ sheenRoughnessMap?: ThreeTextureLike | null;
258
+ anisotropy?: number;
259
+ anisotropyRotation?: number;
260
+ anisotropyMap?: ThreeTextureLike | null;
261
+ iridescence?: number;
262
+ iridescenceMap?: ThreeTextureLike | null;
263
+ iridescenceIOR?: number;
264
+ iridescenceThicknessRange?: ArrayLike<number>;
265
+ iridescenceThicknessMap?: ThreeTextureLike | null;
266
+ dispersion?: number;
267
+ transmission?: number;
268
+ transmissionMap?: ThreeTextureLike | null;
269
+ ior?: number;
270
+ thickness?: number;
271
+ thicknessMap?: ThreeTextureLike | null;
272
+ attenuationDistance?: number;
273
+ attenuationColor?: ThreeColorInput;
274
+ specularColor?: ThreeColorInput;
275
+ specularColorMap?: ThreeTextureLike | null;
276
+ specularIntensity?: number;
277
+ specularIntensityMap?: ThreeTextureLike | null;
278
+ specular?: ThreeColorInput;
279
+ shininess?: number;
280
+ emissive?: ThreeColorInput;
67
281
  emissiveIntensity?: number;
68
282
  emissiveMap?: ThreeTextureLike | null;
69
283
  normalMap?: ThreeTextureLike | null;
284
+ normalMapType?: number;
70
285
  normalScale?: {
71
286
  x: number;
72
287
  y: number;
73
288
  };
289
+ bumpMap?: ThreeTextureLike | null;
290
+ bumpScale?: number;
291
+ displacementMap?: ThreeTextureLike | null;
292
+ displacementScale?: number;
293
+ displacementBias?: number;
294
+ matcap?: ThreeTextureLike | null;
295
+ gradientMap?: ThreeTextureLike | null;
74
296
  metalnessMap?: ThreeTextureLike | null;
75
297
  roughnessMap?: ThreeTextureLike | null;
298
+ specularMap?: ThreeTextureLike | null;
299
+ lightMap?: ThreeTextureLike | null;
300
+ lightMapIntensity?: number;
76
301
  aoMap?: ThreeTextureLike | null;
77
302
  aoMapIntensity?: number;
303
+ alphaMap?: ThreeTextureLike | null;
78
304
  alphaTest?: number;
305
+ alphaHash?: boolean;
306
+ alphaToCoverage?: boolean;
307
+ clippingPlanes?: ThreePlaneLike[] | null;
308
+ clipIntersection?: boolean;
309
+ clipShadows?: boolean;
310
+ depthTest?: boolean;
311
+ depthFunc?: number;
312
+ depthWrite?: boolean;
313
+ colorWrite?: boolean;
314
+ polygonOffset?: boolean;
315
+ polygonOffsetFactor?: number;
316
+ polygonOffsetUnits?: number;
317
+ stencilWrite?: boolean;
318
+ stencilWriteMask?: number;
319
+ stencilFunc?: number;
320
+ stencilRef?: number;
321
+ stencilFuncMask?: number;
322
+ stencilFail?: number;
323
+ stencilZFail?: number;
324
+ stencilZPass?: number;
79
325
  transparent?: boolean;
326
+ forceSinglePass?: boolean;
80
327
  side?: number;
328
+ shadowSide?: number | null;
329
+ flatShading?: boolean;
330
+ wireframe?: boolean;
331
+ wireframeLinewidth?: number | null;
332
+ wireframeLinecap?: 'butt' | 'round' | 'square' | null;
333
+ wireframeLinejoin?: 'round' | 'bevel' | 'miter' | null;
334
+ fog?: boolean;
335
+ isLineDashedMaterial?: boolean;
81
336
  isMeshBasicMaterial?: boolean;
337
+ isMeshDepthMaterial?: boolean;
338
+ isMeshDistanceMaterial?: boolean;
82
339
  isMeshLambertMaterial?: boolean;
340
+ isMeshMatcapMaterial?: boolean;
341
+ isMeshNormalMaterial?: boolean;
342
+ isMeshPhongMaterial?: boolean;
83
343
  isMeshStandardMaterial?: boolean;
84
344
  isMeshPhysicalMaterial?: boolean;
345
+ isMeshToonMaterial?: boolean;
346
+ isShadowMaterial?: boolean;
85
347
  isLineBasicMaterial?: boolean;
86
348
  isPointsMaterial?: boolean;
349
+ isSpriteMaterial?: boolean;
350
+ isShaderMaterial?: boolean;
351
+ isRawShaderMaterial?: boolean;
352
+ isNodeMaterial?: boolean;
353
+ name?: string;
354
+ vertexShader?: string;
355
+ fragmentShader?: string;
356
+ uniforms?: Record<string, {
357
+ value?: unknown;
358
+ } | unknown>;
359
+ depthPacking?: number;
360
+ referencePosition?: ThreeVector3Like | ArrayLike<number>;
361
+ nearDistance?: number;
362
+ farDistance?: number;
363
+ dashSize?: number;
364
+ gapSize?: number;
365
+ scale?: number;
366
+ linewidth?: number;
367
+ linecap?: 'butt' | 'round' | 'square' | null;
368
+ linejoin?: 'round' | 'bevel' | 'miter' | null;
369
+ rotation?: number;
370
+ customFragmentShader?: string;
371
+ customFragmentWgsl?: string;
372
+ headlessFragmentShader?: string;
373
+ headlessFragmentWgsl?: string;
87
374
  size?: number;
375
+ sizeAttenuation?: boolean;
376
+ id?: number;
88
377
  }
89
378
  export interface ThreeBoneLike {
90
379
  matrixWorld?: ThreeMatrix4Like;
@@ -95,35 +384,125 @@ export interface ThreeSkeletonLike {
95
384
  update?(): void;
96
385
  }
97
386
  export interface ThreeObject3DLike {
387
+ isObject3D?: boolean;
98
388
  visible?: boolean;
389
+ layers?: ThreeLayersLike;
390
+ renderOrder?: number;
391
+ id?: number;
99
392
  children?: ThreeObject3DLike[];
393
+ userData?: Record<string, any>;
100
394
  isMesh?: boolean;
395
+ isBatchedMesh?: boolean;
396
+ isInstancedMesh?: boolean;
101
397
  isSkinnedMesh?: boolean;
398
+ isLOD?: boolean;
399
+ isGroup?: boolean;
400
+ isClippingGroup?: boolean;
102
401
  isLine?: boolean;
103
402
  isLineSegments?: boolean;
104
403
  isLineLoop?: boolean;
105
404
  isPoints?: boolean;
405
+ isSprite?: boolean;
106
406
  isLight?: boolean;
107
407
  isDirectionalLight?: boolean;
108
408
  isPointLight?: boolean;
109
409
  isSpotLight?: boolean;
410
+ isRectAreaLight?: boolean;
110
411
  isHemisphereLight?: boolean;
111
412
  isAmbientLight?: boolean;
413
+ isLightProbe?: boolean;
414
+ frustumCulled?: boolean;
415
+ boundingSphere?: ThreeSphereLike | null;
416
+ computeBoundingSphere?(): void;
112
417
  geometry?: ThreeBufferGeometryLike;
113
418
  material?: ThreeMaterialLike | ThreeMaterialLike[];
419
+ onBeforeRender?: (...args: unknown[]) => unknown;
420
+ onAfterRender?: (...args: unknown[]) => unknown;
421
+ clippingPlanes?: ThreePlaneLike[] | null;
422
+ enabled?: boolean;
423
+ clipIntersection?: boolean;
424
+ clipShadows?: boolean;
425
+ customDepthMaterial?: ThreeMaterialLike;
426
+ customDistanceMaterial?: ThreeMaterialLike;
427
+ center?: {
428
+ x?: number;
429
+ y?: number;
430
+ };
431
+ scale?: {
432
+ x?: number;
433
+ y?: number;
434
+ z?: number;
435
+ };
436
+ count?: number;
437
+ instanceCount?: number;
438
+ perObjectFrustumCulled?: boolean;
439
+ sortObjects?: boolean;
440
+ customSort?: ((items: Array<{
441
+ start: number;
442
+ count: number;
443
+ z: number;
444
+ index: number;
445
+ }>, camera?: ThreeCameraLike) => void) | null;
446
+ maxInstanceCount?: number;
447
+ instanceMatrix?: ThreeBufferAttributeLike;
448
+ instanceColor?: ThreeBufferAttributeLike | null;
449
+ _instanceInfo?: Array<{
450
+ visible?: boolean;
451
+ active?: boolean;
452
+ geometryIndex?: number;
453
+ }>;
454
+ _geometryInfo?: Array<{
455
+ active?: boolean;
456
+ start?: number;
457
+ count?: number;
458
+ vertexStart?: number;
459
+ vertexCount?: number;
460
+ reservedVertexCount?: number;
461
+ indexStart?: number;
462
+ indexCount?: number;
463
+ reservedIndexCount?: number;
464
+ boundingSphere?: ThreeSphereLike | null;
465
+ }>;
466
+ _matricesTexture?: {
467
+ image?: {
468
+ data?: ArrayLike<number>;
469
+ };
470
+ } | null;
471
+ _colorsTexture?: {
472
+ image?: {
473
+ data?: ArrayLike<number>;
474
+ };
475
+ } | null;
476
+ getGeometryRangeAt?(geometryId: number, target?: Record<string, unknown>): Record<string, unknown> | null;
114
477
  matrixWorld?: ThreeMatrix4Like;
478
+ autoUpdate?: boolean;
479
+ levels?: Array<{
480
+ object: ThreeObject3DLike;
481
+ distance?: number;
482
+ hysteresis?: number;
483
+ }>;
484
+ update?(camera: ThreeCameraLike): void;
115
485
  skeleton?: ThreeSkeletonLike;
116
486
  bindMatrix?: ThreeMatrix4Like;
117
487
  bindMatrixInverse?: ThreeMatrix4Like;
118
488
  morphTargetInfluences?: number[];
119
489
  morphTargetDictionary?: Record<string, number>;
120
- color?: ThreeColorLike;
121
- groundColor?: ThreeColorLike;
490
+ color?: ThreeColorInput;
491
+ groundColor?: ThreeColorInput;
492
+ sh?: {
493
+ coefficients?: Array<ThreeColorLike | {
494
+ x?: number;
495
+ y?: number;
496
+ z?: number;
497
+ } | ArrayLike<number>>;
498
+ };
122
499
  intensity?: number;
123
500
  distance?: number;
124
501
  decay?: number;
125
502
  angle?: number;
126
503
  penumbra?: number;
504
+ width?: number;
505
+ height?: number;
127
506
  target?: ThreeObject3DLike & {
128
507
  matrixWorld?: ThreeMatrix4Like;
129
508
  };
@@ -139,9 +518,16 @@ export interface ThreeObject3DLike {
139
518
  width?: number;
140
519
  height?: number;
141
520
  };
521
+ map?: object | null;
522
+ mapPass?: object | null;
523
+ matrix?: ThreeMatrix4Like;
524
+ autoUpdate?: boolean;
525
+ needsUpdate?: boolean;
142
526
  bias?: number;
143
527
  normalBias?: number;
144
528
  radius?: number;
529
+ intensity?: number;
530
+ blurSamples?: number;
145
531
  camera?: {
146
532
  left?: number;
147
533
  right?: number;
@@ -152,30 +538,199 @@ export interface ThreeObject3DLike {
152
538
  };
153
539
  };
154
540
  }
155
- export interface ThreeSceneLike extends ThreeObject3DLike {
156
- isScene: true;
157
- background?: ThreeColorLike | null;
541
+ export interface ThreeSceneRootLike extends ThreeObject3DLike {
542
+ isScene?: boolean;
543
+ overrideMaterial?: ThreeMaterialLike | null;
544
+ background?: ThreeColorInput | ThreeTextureLike | null;
545
+ backgroundIntensity?: number;
546
+ backgroundBlurriness?: number;
547
+ backgroundRotation?: ThreeEulerLike | ArrayLike<number> | null;
548
+ fog?: {
549
+ isFog?: boolean;
550
+ isFogExp2?: boolean;
551
+ color?: ThreeColorInput;
552
+ near?: number;
553
+ far?: number;
554
+ density?: number;
555
+ } | null;
158
556
  environment?: ThreeTextureLike | null;
159
557
  environmentIntensity?: number;
558
+ environmentRotation?: ThreeEulerLike | ArrayLike<number> | null;
160
559
  updateMatrixWorld?(force?: boolean): void;
161
560
  }
561
+ export interface ThreeSceneLike extends ThreeSceneRootLike {
562
+ isScene: true;
563
+ }
162
564
  export interface ThreeCameraLike {
163
565
  isCamera: true;
566
+ layers?: ThreeLayersLike;
164
567
  projectionMatrix: ThreeMatrix4Like;
165
568
  matrixWorldInverse: ThreeMatrix4Like;
166
569
  matrixWorld?: ThreeMatrix4Like;
570
+ isPerspectiveCamera?: boolean;
571
+ isOrthographicCamera?: boolean;
572
+ isArrayCamera?: boolean;
573
+ isCubeCamera?: boolean;
574
+ cameras?: ThreeCameraLike[];
575
+ viewport?: RenderPixelRectLike | ({
576
+ x?: number;
577
+ y?: number;
578
+ z?: number;
579
+ w?: number;
580
+ } & Record<string, unknown>) | null;
167
581
  aspect?: number;
582
+ zoom?: number;
583
+ near?: number;
584
+ far?: number;
168
585
  userData?: {
169
586
  width?: number;
170
587
  height?: number;
171
588
  };
172
589
  updateMatrixWorld?(force?: boolean): void;
173
590
  }
591
+ export interface ThreeCubeCameraLike {
592
+ isObject3D?: boolean;
593
+ isCubeCamera?: boolean;
594
+ type?: string;
595
+ renderTarget?: RenderTargetLike;
596
+ children?: ThreeCameraLike[];
597
+ coordinateSystem?: number | null;
598
+ activeMipmapLevel?: number;
599
+ updateCoordinateSystem?(): void;
600
+ updateMatrixWorld?(force?: boolean): void;
601
+ }
602
+ export type ThreeRenderCameraLike = ThreeCameraLike | ThreeCubeCameraLike;
603
+ export interface RenderSortItem {
604
+ id: number;
605
+ object?: ThreeObject3DLike;
606
+ geometry?: ThreeBufferGeometryLike;
607
+ material?: ThreeMaterialLike;
608
+ group?: GeometryGroup;
609
+ groupOrder: number;
610
+ renderOrder: number;
611
+ z: number;
612
+ materialVariant: number;
613
+ }
614
+ export type RenderSortFunction = (a: RenderSortItem, b: RenderSortItem) => number;
174
615
  export interface RenderOptions {
175
616
  width?: number;
176
617
  height?: number;
177
- background?: number[] | ThreeColorLike;
618
+ background?: ThreeColorInput | ThreeTextureLike | null;
619
+ backgroundIntensity?: number;
620
+ backgroundBlurriness?: number;
621
+ backgroundRotation?: ThreeEulerLike | ArrayLike<number> | null;
622
+ environmentIntensity?: number;
623
+ environmentRotation?: ThreeEulerLike | ArrayLike<number> | null;
624
+ viewport?: RenderPixelRectLike | null;
625
+ scissor?: RenderPixelRectLike | null;
626
+ clippingPlanes?: ThreePlaneLike[] | null;
627
+ /**
628
+ * Controls whether material-local clippingPlanes are included. Defaults to true
629
+ * for the scene-oriented API; set false to mimic disabled WebGL local clipping.
630
+ */
631
+ localClippingEnabled?: boolean;
178
632
  format?: RenderOutputFormat;
633
+ outputColorSpace?: RenderOutputColorSpace;
634
+ /** Per-render tone-mapping mode. Defaults to Renderer.toneMapping. */
635
+ toneMapping?: number;
636
+ /** Per-render tone-mapping exposure. Defaults to Renderer.toneMappingExposure. */
637
+ toneMappingExposure?: number;
638
+ /** Alternate flat render passes. Defaults to normal color rendering. */
639
+ renderMode?: RenderMode;
640
+ /** Whether render-list sorting is enabled. Defaults to true. */
641
+ sortObjects?: boolean;
642
+ /** Whether opaque render-list buckets are rendered. Defaults to Renderer.opaque. */
643
+ opaque?: boolean;
644
+ /** Whether transmissive/transparent render-list buckets are rendered. Defaults to Renderer.transparent. */
645
+ transparent?: boolean;
646
+ /** Per-render transmission scene-color resolution scale. Defaults to Renderer.transmissionResolutionScale. */
647
+ transmissionResolutionScale?: number;
648
+ /** Custom opaque-bucket sort callback. `null` uses the default sort. */
649
+ opaqueSort?: RenderSortFunction | null;
650
+ /** Custom transmissive/transparent-bucket sort callback. `null` uses the default sort. */
651
+ transparentSort?: RenderSortFunction | null;
652
+ /** MSAA sample count. Supports 4x MSAA; omitted, 0, or 1 use the single-sample path. */
653
+ samples?: number;
654
+ /** MSAA sample count. Supports 4x MSAA; omitted, 0, or 1 use the single-sample path. */
655
+ sampleCount?: number;
656
+ target?: RenderTargetLike;
657
+ postProcessing?: PostProcessingOptions;
658
+ }
659
+ export interface RenderTargetTextureLike {
660
+ image?: RenderTargetImageLike | RenderTargetImageLike[];
661
+ mipmaps?: Array<RenderTargetImageLike & {
662
+ image?: RenderTargetImageLike | RenderTargetImageLike[];
663
+ }>;
664
+ source?: {
665
+ data?: RenderTargetImageLike | RenderTargetImageLike[];
666
+ };
667
+ userData?: Record<string, any>;
668
+ isCubeTexture?: boolean;
669
+ isFramebufferTexture?: boolean;
670
+ isDepthTexture?: boolean;
671
+ isStorageTexture?: boolean;
672
+ isCompressedTexture?: boolean;
673
+ isDataArrayTexture?: boolean;
674
+ isData3DTexture?: boolean;
675
+ isArrayTexture?: boolean;
676
+ is3DTexture?: boolean;
677
+ format?: number;
678
+ /** Color targets support Alpha/Red/RG/RGB/RGBA and integer channel formats with byte, signed/unsigned integer, packed color, FloatType, and HalfFloatType arrays. */
679
+ type?: number;
680
+ generateMipmaps?: boolean;
681
+ needsUpdate?: boolean;
682
+ needsPMREMUpdate?: boolean;
683
+ pmremVersion?: number;
684
+ }
685
+ export interface RenderTargetImageLike {
686
+ data?: Buffer | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array;
687
+ width?: number;
688
+ height?: number;
689
+ depth?: number;
690
+ }
691
+ export interface RenderTargetLike {
692
+ isRenderTarget?: boolean;
693
+ isWebGLRenderTarget?: boolean;
694
+ width?: number;
695
+ height?: number;
696
+ viewport?: RenderPixelRectLike | null;
697
+ scissor?: RenderPixelRectLike | null;
698
+ scissorTest?: boolean;
699
+ texture?: RenderTargetTextureLike | RenderTargetTextureLike[];
700
+ textures?: RenderTargetTextureLike[];
701
+ objectIdEntries?: RenderObjectIdEntry[];
702
+ objectIdMap?: Record<string, RenderObjectIdEntry>;
703
+ /** Optional normalized depth readback texture-like target. FloatType receives Float32Array data; HalfFloatType receives Uint16Array half-float data; unsigned depth types receive scalar Uint8Array/Uint16Array/Uint32Array data; UnsignedInt248Type packs depth24 in the high bits with zero stencil; plain objects receive RGBA8 bytes. */
704
+ depthTexture?: RenderTargetTextureLike;
705
+ /** MSAA sample count. Supports 4x MSAA; omitted, 0, or 1 use the single-sample path. */
706
+ samples?: number;
707
+ /** MSAA sample count. Supports 4x MSAA; omitted, 0, or 1 use the single-sample path. */
708
+ sampleCount?: number;
709
+ isWebGLCubeRenderTarget?: boolean;
710
+ isWebGLMultipleRenderTargets?: boolean;
711
+ image?: {
712
+ data?: Buffer;
713
+ width?: number;
714
+ height?: number;
715
+ };
716
+ data?: Buffer;
717
+ }
718
+ export interface RenderObjectIdEntry {
719
+ /** Adapter object sort id, usually `THREE.Object3D.id`. */
720
+ id: number;
721
+ /** 24-bit integer encoded in RGB, with 0 reserved for background. */
722
+ encodedId: number;
723
+ rgb: [number, number, number];
724
+ hex: string;
725
+ }
726
+ export interface PostProcessingOptions {
727
+ enabled?: boolean;
728
+ exposure?: number;
729
+ contrast?: number;
730
+ saturation?: number;
731
+ vignette?: number;
732
+ grayscale?: number | boolean;
733
+ invert?: number | boolean;
179
734
  }
180
735
  export interface NativeCamera {
181
736
  width?: number;
@@ -187,6 +742,7 @@ export interface NativeCamera {
187
742
  near?: number;
188
743
  far?: number;
189
744
  viewProjection?: number[];
745
+ viewMatrix?: number[];
190
746
  cameraPosition?: number[];
191
747
  }
192
748
  export interface NativeSceneLight {
@@ -199,15 +755,27 @@ export interface NativeSceneLight {
199
755
  decay?: number;
200
756
  angle?: number;
201
757
  penumbra?: number;
758
+ width?: number;
759
+ height?: number;
202
760
  groundColor?: number[];
203
- /** Whether this light casts shadows (directional only for now). */
761
+ /** Whether this light casts shadows (directional, spot, and point lights). */
204
762
  castShadow?: boolean;
205
- /** Shadow map resolution (square). Defaults to 512. */
763
+ /** Legacy square shadow map resolution. Defaults to 512 when width/height are absent. */
206
764
  shadowMapSize?: number;
765
+ /** Shadow map width in pixels. Defaults to `shadowMapSize` or 512. */
766
+ shadowMapWidth?: number;
767
+ /** Shadow map height in pixels. Defaults to `shadowMapSize` or 512. */
768
+ shadowMapHeight?: number;
207
769
  /** Depth bias applied when sampling the shadow map. */
208
770
  shadowBias?: number;
209
771
  /** Normal-offset bias (world space units) applied at receivers. */
210
772
  shadowNormalBias?: number;
773
+ /** PCF shadow radius multiplier. Defaults to 1. */
774
+ shadowRadius?: number;
775
+ /** Shadow darkness multiplier. Defaults to 1; 0 disables received shadow darkening. */
776
+ shadowIntensity?: number;
777
+ /** VSM blur sample count. Defaults to Three.js' LightShadow default of 8. */
778
+ shadowBlurSamples?: number;
211
779
  /** Orthographic shadow-camera frustum bounds. */
212
780
  shadowCameraLeft?: number;
213
781
  shadowCameraRight?: number;
@@ -215,6 +783,9 @@ export interface NativeSceneLight {
215
783
  shadowCameraBottom?: number;
216
784
  shadowCameraNear?: number;
217
785
  shadowCameraFar?: number;
786
+ /** Directional cascaded shadow maps: split distances from camera and flattened [left,right,top,bottom,near,far] bounds. */
787
+ shadowCascadeSplits?: number[];
788
+ shadowCascadeBounds?: number[];
218
789
  }
219
790
  export interface NativeSceneMesh {
220
791
  positions: number[];
@@ -224,52 +795,416 @@ export interface NativeSceneMesh {
224
795
  color?: number[];
225
796
  transform?: number[];
226
797
  uvs?: number[];
798
+ uvs2?: number[];
227
799
  texture?: Buffer;
228
800
  textureWidth?: number;
229
801
  textureHeight?: number;
230
802
  textureWrapS?: string;
231
803
  textureWrapT?: string;
804
+ textureMagFilter?: string;
805
+ textureMinFilter?: string;
806
+ textureAnisotropy?: number;
807
+ textureTransform?: number[];
808
+ textureColorSpace?: string;
809
+ textureUsesUv2?: boolean;
810
+ specularColor?: number[];
811
+ shininess?: number;
232
812
  metallic?: number;
233
813
  roughness?: number;
814
+ clearcoat?: number;
815
+ clearcoatMap?: Buffer;
816
+ clearcoatMapWidth?: number;
817
+ clearcoatMapHeight?: number;
818
+ clearcoatMapWrapS?: string;
819
+ clearcoatMapWrapT?: string;
820
+ clearcoatMapMagFilter?: string;
821
+ clearcoatMapMinFilter?: string;
822
+ clearcoatMapAnisotropy?: number;
823
+ clearcoatMapTransform?: number[];
824
+ clearcoatMapColorSpace?: string;
825
+ clearcoatMapUsesUv2?: boolean;
826
+ clearcoatRoughness?: number;
827
+ clearcoatRoughnessMap?: Buffer;
828
+ clearcoatRoughnessMapWidth?: number;
829
+ clearcoatRoughnessMapHeight?: number;
830
+ clearcoatRoughnessMapWrapS?: string;
831
+ clearcoatRoughnessMapWrapT?: string;
832
+ clearcoatRoughnessMapMagFilter?: string;
833
+ clearcoatRoughnessMapMinFilter?: string;
834
+ clearcoatRoughnessMapAnisotropy?: number;
835
+ clearcoatRoughnessMapTransform?: number[];
836
+ clearcoatRoughnessMapColorSpace?: string;
837
+ clearcoatRoughnessMapUsesUv2?: boolean;
838
+ clearcoatNormalMap?: Buffer;
839
+ clearcoatNormalMapWidth?: number;
840
+ clearcoatNormalMapHeight?: number;
841
+ clearcoatNormalMapWrapS?: string;
842
+ clearcoatNormalMapWrapT?: string;
843
+ clearcoatNormalMapMagFilter?: string;
844
+ clearcoatNormalMapMinFilter?: string;
845
+ clearcoatNormalMapAnisotropy?: number;
846
+ clearcoatNormalMapTransform?: number[];
847
+ clearcoatNormalMapColorSpace?: string;
848
+ clearcoatNormalMapUsesUv2?: boolean;
849
+ clearcoatNormalScale?: number[];
850
+ sheenColor?: number[];
851
+ sheenColorMap?: Buffer;
852
+ sheenColorMapWidth?: number;
853
+ sheenColorMapHeight?: number;
854
+ sheenColorMapWrapS?: string;
855
+ sheenColorMapWrapT?: string;
856
+ sheenColorMapMagFilter?: string;
857
+ sheenColorMapMinFilter?: string;
858
+ sheenColorMapAnisotropy?: number;
859
+ sheenColorMapTransform?: number[];
860
+ sheenColorMapColorSpace?: string;
861
+ sheenColorMapUsesUv2?: boolean;
862
+ sheenRoughness?: number;
863
+ sheenRoughnessMap?: Buffer;
864
+ sheenRoughnessMapWidth?: number;
865
+ sheenRoughnessMapHeight?: number;
866
+ sheenRoughnessMapWrapS?: string;
867
+ sheenRoughnessMapWrapT?: string;
868
+ sheenRoughnessMapMagFilter?: string;
869
+ sheenRoughnessMapMinFilter?: string;
870
+ sheenRoughnessMapAnisotropy?: number;
871
+ sheenRoughnessMapTransform?: number[];
872
+ sheenRoughnessMapColorSpace?: string;
873
+ sheenRoughnessMapUsesUv2?: boolean;
874
+ anisotropy?: number;
875
+ anisotropyRotation?: number;
876
+ anisotropyMap?: Buffer;
877
+ anisotropyMapWidth?: number;
878
+ anisotropyMapHeight?: number;
879
+ anisotropyMapWrapS?: string;
880
+ anisotropyMapWrapT?: string;
881
+ anisotropyMapMagFilter?: string;
882
+ anisotropyMapMinFilter?: string;
883
+ anisotropyMapAnisotropy?: number;
884
+ anisotropyMapTransform?: number[];
885
+ anisotropyMapColorSpace?: string;
886
+ anisotropyMapUsesUv2?: boolean;
887
+ iridescence?: number;
888
+ iridescenceMap?: Buffer;
889
+ iridescenceMapWidth?: number;
890
+ iridescenceMapHeight?: number;
891
+ iridescenceMapWrapS?: string;
892
+ iridescenceMapWrapT?: string;
893
+ iridescenceMapMagFilter?: string;
894
+ iridescenceMapMinFilter?: string;
895
+ iridescenceMapAnisotropy?: number;
896
+ iridescenceMapTransform?: number[];
897
+ iridescenceMapColorSpace?: string;
898
+ iridescenceMapUsesUv2?: boolean;
899
+ iridescenceIor?: number;
900
+ iridescenceThicknessMin?: number;
901
+ iridescenceThicknessMax?: number;
902
+ iridescenceThicknessMap?: Buffer;
903
+ iridescenceThicknessMapWidth?: number;
904
+ iridescenceThicknessMapHeight?: number;
905
+ iridescenceThicknessMapWrapS?: string;
906
+ iridescenceThicknessMapWrapT?: string;
907
+ iridescenceThicknessMapMagFilter?: string;
908
+ iridescenceThicknessMapMinFilter?: string;
909
+ iridescenceThicknessMapAnisotropy?: number;
910
+ iridescenceThicknessMapTransform?: number[];
911
+ iridescenceThicknessMapColorSpace?: string;
912
+ iridescenceThicknessMapUsesUv2?: boolean;
913
+ transmission?: number;
914
+ transmissionMap?: Buffer;
915
+ transmissionMapWidth?: number;
916
+ transmissionMapHeight?: number;
917
+ transmissionMapWrapS?: string;
918
+ transmissionMapWrapT?: string;
919
+ transmissionMapMagFilter?: string;
920
+ transmissionMapMinFilter?: string;
921
+ transmissionMapAnisotropy?: number;
922
+ transmissionMapTransform?: number[];
923
+ transmissionMapColorSpace?: string;
924
+ transmissionMapUsesUv2?: boolean;
925
+ dispersion?: number;
926
+ ior?: number;
927
+ thickness?: number;
928
+ thicknessMap?: Buffer;
929
+ thicknessMapWidth?: number;
930
+ thicknessMapHeight?: number;
931
+ thicknessMapWrapS?: string;
932
+ thicknessMapWrapT?: string;
933
+ thicknessMapMagFilter?: string;
934
+ thicknessMapMinFilter?: string;
935
+ thicknessMapAnisotropy?: number;
936
+ thicknessMapTransform?: number[];
937
+ thicknessMapColorSpace?: string;
938
+ thicknessMapUsesUv2?: boolean;
939
+ attenuationDistance?: number;
940
+ attenuationColor?: number[];
941
+ physicalSpecularColor?: number[];
942
+ physicalSpecularIntensity?: number;
943
+ specularColorMap?: Buffer;
944
+ specularColorMapWidth?: number;
945
+ specularColorMapHeight?: number;
946
+ specularColorMapWrapS?: string;
947
+ specularColorMapWrapT?: string;
948
+ specularColorMapMagFilter?: string;
949
+ specularColorMapMinFilter?: string;
950
+ specularColorMapAnisotropy?: number;
951
+ specularColorMapTransform?: number[];
952
+ specularColorMapColorSpace?: string;
953
+ specularColorMapUsesUv2?: boolean;
954
+ specularIntensityMap?: Buffer;
955
+ specularIntensityMapWidth?: number;
956
+ specularIntensityMapHeight?: number;
957
+ specularIntensityMapWrapS?: string;
958
+ specularIntensityMapWrapT?: string;
959
+ specularIntensityMapMagFilter?: string;
960
+ specularIntensityMapMinFilter?: string;
961
+ specularIntensityMapAnisotropy?: number;
962
+ specularIntensityMapTransform?: number[];
963
+ specularIntensityMapColorSpace?: string;
964
+ specularIntensityMapUsesUv2?: boolean;
234
965
  emissive?: number[];
235
966
  emissiveIntensity?: number;
236
967
  normalMap?: Buffer;
237
968
  normalMapWidth?: number;
238
969
  normalMapHeight?: number;
970
+ normalMapWrapS?: string;
971
+ normalMapWrapT?: string;
972
+ normalMapMagFilter?: string;
973
+ normalMapMinFilter?: string;
974
+ normalMapAnisotropy?: number;
975
+ normalMapTransform?: number[];
976
+ normalMapColorSpace?: string;
977
+ normalMapUsesUv2?: boolean;
978
+ normalMapType?: 'tangent' | 'object';
239
979
  normalScale?: number[];
980
+ bumpMap?: Buffer;
981
+ bumpMapWidth?: number;
982
+ bumpMapHeight?: number;
983
+ bumpMapWrapS?: string;
984
+ bumpMapWrapT?: string;
985
+ bumpMapMagFilter?: string;
986
+ bumpMapMinFilter?: string;
987
+ bumpMapAnisotropy?: number;
988
+ bumpMapTransform?: number[];
989
+ bumpMapColorSpace?: string;
990
+ bumpMapUsesUv2?: boolean;
991
+ bumpScale?: number;
992
+ matcapMap?: Buffer;
993
+ matcapMapWidth?: number;
994
+ matcapMapHeight?: number;
995
+ matcapMapWrapS?: string;
996
+ matcapMapWrapT?: string;
997
+ matcapMapMagFilter?: string;
998
+ matcapMapMinFilter?: string;
999
+ matcapMapAnisotropy?: number;
1000
+ matcapMapTransform?: number[];
1001
+ matcapMapColorSpace?: string;
1002
+ matcapMapUsesUv2?: boolean;
1003
+ depthPacking?: number;
1004
+ distanceReferencePosition?: number[];
1005
+ distanceNear?: number;
1006
+ distanceFar?: number;
1007
+ gradientMap?: Buffer;
1008
+ gradientMapWidth?: number;
1009
+ gradientMapHeight?: number;
1010
+ gradientMapWrapS?: string;
1011
+ gradientMapWrapT?: string;
1012
+ gradientMapMagFilter?: string;
1013
+ gradientMapMinFilter?: string;
1014
+ gradientMapAnisotropy?: number;
1015
+ gradientMapColorSpace?: string;
1016
+ displacementMap?: Buffer;
1017
+ displacementMapWidth?: number;
1018
+ displacementMapHeight?: number;
1019
+ displacementMapWrapS?: string;
1020
+ displacementMapWrapT?: string;
1021
+ displacementMapMagFilter?: string;
1022
+ displacementMapMinFilter?: string;
1023
+ displacementMapAnisotropy?: number;
1024
+ displacementMapTransform?: number[];
1025
+ displacementMapColorSpace?: string;
1026
+ displacementMapUsesUv2?: boolean;
1027
+ displacementScale?: number;
1028
+ displacementBias?: number;
240
1029
  metallicRoughnessTexture?: Buffer;
241
1030
  metallicRoughnessTextureWidth?: number;
242
1031
  metallicRoughnessTextureHeight?: number;
1032
+ metallicRoughnessTextureWrapS?: string;
1033
+ metallicRoughnessTextureWrapT?: string;
1034
+ metallicRoughnessTextureMagFilter?: string;
1035
+ metallicRoughnessTextureMinFilter?: string;
1036
+ metallicRoughnessTextureAnisotropy?: number;
1037
+ metallicRoughnessTextureTransform?: number[];
1038
+ metallicRoughnessTextureColorSpace?: string;
1039
+ metallicRoughnessTextureUsesUv2?: boolean;
243
1040
  emissiveMap?: Buffer;
244
1041
  emissiveMapWidth?: number;
245
1042
  emissiveMapHeight?: number;
1043
+ emissiveMapWrapS?: string;
1044
+ emissiveMapWrapT?: string;
1045
+ emissiveMapMagFilter?: string;
1046
+ emissiveMapMinFilter?: string;
1047
+ emissiveMapAnisotropy?: number;
1048
+ emissiveMapTransform?: number[];
1049
+ emissiveMapColorSpace?: string;
1050
+ emissiveMapUsesUv2?: boolean;
246
1051
  aoMap?: Buffer;
247
1052
  aoMapWidth?: number;
248
1053
  aoMapHeight?: number;
1054
+ aoMapWrapS?: string;
1055
+ aoMapWrapT?: string;
1056
+ aoMapMagFilter?: string;
1057
+ aoMapMinFilter?: string;
1058
+ aoMapAnisotropy?: number;
1059
+ aoMapTransform?: number[];
1060
+ aoMapColorSpace?: string;
1061
+ aoMapUsesUv2?: boolean;
249
1062
  aoMapIntensity?: number;
1063
+ lightMap?: Buffer;
1064
+ lightMapWidth?: number;
1065
+ lightMapHeight?: number;
1066
+ lightMapWrapS?: string;
1067
+ lightMapWrapT?: string;
1068
+ lightMapMagFilter?: string;
1069
+ lightMapMinFilter?: string;
1070
+ lightMapAnisotropy?: number;
1071
+ lightMapTransform?: number[];
1072
+ lightMapColorSpace?: string;
1073
+ lightMapUsesUv2?: boolean;
1074
+ lightMapIntensity?: number;
1075
+ specularMap?: Buffer;
1076
+ specularMapWidth?: number;
1077
+ specularMapHeight?: number;
1078
+ specularMapWrapS?: string;
1079
+ specularMapWrapT?: string;
1080
+ specularMapMagFilter?: string;
1081
+ specularMapMinFilter?: string;
1082
+ specularMapAnisotropy?: number;
1083
+ specularMapTransform?: number[];
1084
+ specularMapColorSpace?: string;
1085
+ specularMapUsesUv2?: boolean;
1086
+ alphaMap?: Buffer;
1087
+ alphaMapWidth?: number;
1088
+ alphaMapHeight?: number;
1089
+ alphaMapWrapS?: string;
1090
+ alphaMapWrapT?: string;
1091
+ alphaMapMagFilter?: string;
1092
+ alphaMapMinFilter?: string;
1093
+ alphaMapAnisotropy?: number;
1094
+ alphaMapTransform?: number[];
1095
+ alphaMapColorSpace?: string;
1096
+ alphaMapUsesUv2?: boolean;
250
1097
  alphaTest?: number;
1098
+ alphaHash?: boolean;
1099
+ alphaToCoverage?: boolean;
1100
+ premultipliedAlpha?: boolean;
1101
+ toneMapped?: boolean;
1102
+ flatShading?: boolean;
1103
+ fog?: boolean;
1104
+ /** Flattened world-space clipping planes `[nx, ny, nz, constant, ...]`, up to 8 planes. */
1105
+ clippingPlanes?: number[];
1106
+ /** Number of leading clipping planes evaluated as union planes; remaining planes use intersection semantics. */
1107
+ clippingUnionCount?: number;
1108
+ /** Whether material clipping planes affect this mesh in the shadow pass. */
1109
+ clipShadows?: boolean;
1110
+ blending?: string;
1111
+ blendEquation?: number;
1112
+ blendSrc?: number;
1113
+ blendDst?: number;
1114
+ blendEquationAlpha?: number;
1115
+ blendSrcAlpha?: number;
1116
+ blendDstAlpha?: number;
1117
+ blendColor?: number[];
1118
+ blendAlpha?: number;
1119
+ depthTest?: boolean;
1120
+ depthFunc?: string;
1121
+ depthWrite?: boolean;
1122
+ colorWrite?: boolean;
1123
+ polygonOffset?: boolean;
1124
+ polygonOffsetFactor?: number;
1125
+ polygonOffsetUnits?: number;
1126
+ stencilWrite?: boolean;
1127
+ stencilWriteMask?: number;
1128
+ stencilFunc?: number;
1129
+ stencilRef?: number;
1130
+ stencilFuncMask?: number;
1131
+ stencilFail?: number;
1132
+ stencilZFail?: number;
1133
+ stencilZPass?: number;
251
1134
  transparent?: boolean;
252
1135
  side?: string;
1136
+ /** Optional shadow-pass face filter from material.shadowSide. Unset preserves the renderer's default no-cull caster behavior. */
1137
+ shadowSide?: string;
253
1138
  shadingModel?: string;
1139
+ useEnvironmentMap?: boolean;
1140
+ environmentMapIntensity?: number;
1141
+ environmentMapCombine?: number;
1142
+ environmentMapReflectivity?: number;
1143
+ environmentMapRefraction?: boolean;
1144
+ environmentMapRefractionRatio?: number;
254
1145
  topology?: string;
1146
+ /** WGSL fragment body used by the custom material path. */
1147
+ customFragmentShader?: string;
255
1148
  /** Whether this mesh casts shadows in the shadow pass. Defaults to false. */
256
1149
  castShadow?: boolean;
257
1150
  /** Whether this mesh receives shadows in the main pass. Defaults to false. */
258
1151
  receiveShadow?: boolean;
1152
+ groupOrder?: number;
1153
+ renderOrder?: number;
1154
+ sortZ?: number;
1155
+ sortIndex?: number;
1156
+ materialVariant?: number;
1157
+ materialSortKey?: number;
259
1158
  }
260
1159
  export interface NativeRenderScene {
261
1160
  width?: number;
262
1161
  height?: number;
263
1162
  background?: number[];
1163
+ backgroundIntensity?: number;
1164
+ viewport?: number[];
1165
+ scissor?: number[];
1166
+ backgroundTexture?: Buffer;
1167
+ backgroundTextureWidth?: number;
1168
+ backgroundTextureHeight?: number;
1169
+ backgroundTextureWrapS?: string;
1170
+ backgroundTextureWrapT?: string;
1171
+ backgroundTextureMagFilter?: string;
1172
+ backgroundTextureMinFilter?: string;
1173
+ backgroundTextureAnisotropy?: number;
1174
+ backgroundTextureTransform?: number[];
1175
+ backgroundTextureColorSpace?: string;
1176
+ backgroundTextureMapping?: string;
1177
+ backgroundTextureRotation?: number[];
1178
+ backgroundTextureBlurriness?: number;
264
1179
  format?: string;
1180
+ outputColorSpace?: string;
1181
+ toneMapping?: number;
1182
+ toneMappingExposure?: number;
1183
+ transmissionResolutionScale?: number;
1184
+ sampleCount?: number;
1185
+ shadowMapType?: number;
265
1186
  meshes?: NativeSceneMesh[];
266
1187
  lights?: NativeSceneLight[];
267
1188
  ambientLight?: number[];
268
1189
  ambientIntensity?: number;
1190
+ lightProbe?: number[];
269
1191
  environmentMap?: Buffer;
270
1192
  environmentMapWidth?: number;
271
1193
  environmentMapHeight?: number;
272
1194
  environmentMapIntensity?: number;
1195
+ environmentMapColorSpace?: string;
1196
+ environmentMapRotation?: number[];
1197
+ fogType?: string;
1198
+ fogColor?: number[];
1199
+ fogNear?: number;
1200
+ fogFar?: number;
1201
+ fogDensity?: number;
1202
+ postExposure?: number;
1203
+ postContrast?: number;
1204
+ postSaturation?: number;
1205
+ postVignette?: number;
1206
+ postGrayscale?: number;
1207
+ postInvert?: number;
273
1208
  }
274
1209
  export type Color4 = [number, number, number, number];
275
1210
  export type Mat4 = number[];
@@ -277,26 +1212,333 @@ export type Vec3 = [number, number, number];
277
1212
  export interface PbrProperties {
278
1213
  metallic?: number;
279
1214
  roughness?: number;
1215
+ clearcoat?: number;
1216
+ clearcoatMap?: Buffer;
1217
+ clearcoatMapWidth?: number;
1218
+ clearcoatMapHeight?: number;
1219
+ clearcoatMapWrapS?: string;
1220
+ clearcoatMapWrapT?: string;
1221
+ clearcoatMapMagFilter?: string;
1222
+ clearcoatMapMinFilter?: string;
1223
+ clearcoatMapAnisotropy?: number;
1224
+ clearcoatMapTransform?: number[];
1225
+ clearcoatMapColorSpace?: string;
1226
+ clearcoatMapUsesUv2?: boolean;
1227
+ clearcoatRoughness?: number;
1228
+ clearcoatRoughnessMap?: Buffer;
1229
+ clearcoatRoughnessMapWidth?: number;
1230
+ clearcoatRoughnessMapHeight?: number;
1231
+ clearcoatRoughnessMapWrapS?: string;
1232
+ clearcoatRoughnessMapWrapT?: string;
1233
+ clearcoatRoughnessMapMagFilter?: string;
1234
+ clearcoatRoughnessMapMinFilter?: string;
1235
+ clearcoatRoughnessMapAnisotropy?: number;
1236
+ clearcoatRoughnessMapTransform?: number[];
1237
+ clearcoatRoughnessMapColorSpace?: string;
1238
+ clearcoatRoughnessMapUsesUv2?: boolean;
1239
+ clearcoatNormalMap?: Buffer;
1240
+ clearcoatNormalMapWidth?: number;
1241
+ clearcoatNormalMapHeight?: number;
1242
+ clearcoatNormalMapWrapS?: string;
1243
+ clearcoatNormalMapWrapT?: string;
1244
+ clearcoatNormalMapMagFilter?: string;
1245
+ clearcoatNormalMapMinFilter?: string;
1246
+ clearcoatNormalMapAnisotropy?: number;
1247
+ clearcoatNormalMapTransform?: number[];
1248
+ clearcoatNormalMapColorSpace?: string;
1249
+ clearcoatNormalMapUsesUv2?: boolean;
1250
+ clearcoatNormalScale?: number[];
1251
+ sheenColor?: number[];
1252
+ sheenColorMap?: Buffer;
1253
+ sheenColorMapWidth?: number;
1254
+ sheenColorMapHeight?: number;
1255
+ sheenColorMapWrapS?: string;
1256
+ sheenColorMapWrapT?: string;
1257
+ sheenColorMapMagFilter?: string;
1258
+ sheenColorMapMinFilter?: string;
1259
+ sheenColorMapAnisotropy?: number;
1260
+ sheenColorMapTransform?: number[];
1261
+ sheenColorMapColorSpace?: string;
1262
+ sheenColorMapUsesUv2?: boolean;
1263
+ sheenRoughness?: number;
1264
+ sheenRoughnessMap?: Buffer;
1265
+ sheenRoughnessMapWidth?: number;
1266
+ sheenRoughnessMapHeight?: number;
1267
+ sheenRoughnessMapWrapS?: string;
1268
+ sheenRoughnessMapWrapT?: string;
1269
+ sheenRoughnessMapMagFilter?: string;
1270
+ sheenRoughnessMapMinFilter?: string;
1271
+ sheenRoughnessMapAnisotropy?: number;
1272
+ sheenRoughnessMapTransform?: number[];
1273
+ sheenRoughnessMapColorSpace?: string;
1274
+ sheenRoughnessMapUsesUv2?: boolean;
1275
+ anisotropy?: number;
1276
+ anisotropyRotation?: number;
1277
+ anisotropyMap?: Buffer;
1278
+ anisotropyMapWidth?: number;
1279
+ anisotropyMapHeight?: number;
1280
+ anisotropyMapWrapS?: string;
1281
+ anisotropyMapWrapT?: string;
1282
+ anisotropyMapMagFilter?: string;
1283
+ anisotropyMapMinFilter?: string;
1284
+ anisotropyMapAnisotropy?: number;
1285
+ anisotropyMapTransform?: number[];
1286
+ anisotropyMapColorSpace?: string;
1287
+ anisotropyMapUsesUv2?: boolean;
1288
+ iridescence?: number;
1289
+ iridescenceMap?: Buffer;
1290
+ iridescenceMapWidth?: number;
1291
+ iridescenceMapHeight?: number;
1292
+ iridescenceMapWrapS?: string;
1293
+ iridescenceMapWrapT?: string;
1294
+ iridescenceMapMagFilter?: string;
1295
+ iridescenceMapMinFilter?: string;
1296
+ iridescenceMapAnisotropy?: number;
1297
+ iridescenceMapTransform?: number[];
1298
+ iridescenceMapColorSpace?: string;
1299
+ iridescenceMapUsesUv2?: boolean;
1300
+ iridescenceIor?: number;
1301
+ iridescenceThicknessMin?: number;
1302
+ iridescenceThicknessMax?: number;
1303
+ iridescenceThicknessMap?: Buffer;
1304
+ iridescenceThicknessMapWidth?: number;
1305
+ iridescenceThicknessMapHeight?: number;
1306
+ iridescenceThicknessMapWrapS?: string;
1307
+ iridescenceThicknessMapWrapT?: string;
1308
+ iridescenceThicknessMapMagFilter?: string;
1309
+ iridescenceThicknessMapMinFilter?: string;
1310
+ iridescenceThicknessMapAnisotropy?: number;
1311
+ iridescenceThicknessMapTransform?: number[];
1312
+ iridescenceThicknessMapColorSpace?: string;
1313
+ iridescenceThicknessMapUsesUv2?: boolean;
1314
+ transmission?: number;
1315
+ transmissionMap?: Buffer;
1316
+ transmissionMapWidth?: number;
1317
+ transmissionMapHeight?: number;
1318
+ transmissionMapWrapS?: string;
1319
+ transmissionMapWrapT?: string;
1320
+ transmissionMapMagFilter?: string;
1321
+ transmissionMapMinFilter?: string;
1322
+ transmissionMapAnisotropy?: number;
1323
+ transmissionMapTransform?: number[];
1324
+ transmissionMapColorSpace?: string;
1325
+ transmissionMapUsesUv2?: boolean;
1326
+ dispersion?: number;
1327
+ ior?: number;
1328
+ thickness?: number;
1329
+ thicknessMap?: Buffer;
1330
+ thicknessMapWidth?: number;
1331
+ thicknessMapHeight?: number;
1332
+ thicknessMapWrapS?: string;
1333
+ thicknessMapWrapT?: string;
1334
+ thicknessMapMagFilter?: string;
1335
+ thicknessMapMinFilter?: string;
1336
+ thicknessMapAnisotropy?: number;
1337
+ thicknessMapTransform?: number[];
1338
+ thicknessMapColorSpace?: string;
1339
+ thicknessMapUsesUv2?: boolean;
1340
+ attenuationDistance?: number;
1341
+ attenuationColor?: number[];
1342
+ physicalSpecularColor?: number[];
1343
+ physicalSpecularIntensity?: number;
1344
+ useEnvironmentMap?: boolean;
1345
+ environmentMapIntensity?: number;
1346
+ environmentMapCombine?: number;
1347
+ environmentMapReflectivity?: number;
1348
+ environmentMapRefraction?: boolean;
1349
+ environmentMapRefractionRatio?: number;
1350
+ specularColorMap?: Buffer;
1351
+ specularColorMapWidth?: number;
1352
+ specularColorMapHeight?: number;
1353
+ specularColorMapWrapS?: string;
1354
+ specularColorMapWrapT?: string;
1355
+ specularColorMapMagFilter?: string;
1356
+ specularColorMapMinFilter?: string;
1357
+ specularColorMapAnisotropy?: number;
1358
+ specularColorMapTransform?: number[];
1359
+ specularColorMapColorSpace?: string;
1360
+ specularColorMapUsesUv2?: boolean;
1361
+ specularIntensityMap?: Buffer;
1362
+ specularIntensityMapWidth?: number;
1363
+ specularIntensityMapHeight?: number;
1364
+ specularIntensityMapWrapS?: string;
1365
+ specularIntensityMapWrapT?: string;
1366
+ specularIntensityMapMagFilter?: string;
1367
+ specularIntensityMapMinFilter?: string;
1368
+ specularIntensityMapAnisotropy?: number;
1369
+ specularIntensityMapTransform?: number[];
1370
+ specularIntensityMapColorSpace?: string;
1371
+ specularIntensityMapUsesUv2?: boolean;
280
1372
  emissive?: number[];
281
1373
  emissiveIntensity?: number;
1374
+ specularColor?: number[];
1375
+ shininess?: number;
282
1376
  normalMap?: Buffer;
283
1377
  normalMapWidth?: number;
284
1378
  normalMapHeight?: number;
1379
+ normalMapWrapS?: string;
1380
+ normalMapWrapT?: string;
1381
+ normalMapMagFilter?: string;
1382
+ normalMapMinFilter?: string;
1383
+ normalMapAnisotropy?: number;
1384
+ normalMapTransform?: number[];
1385
+ normalMapColorSpace?: string;
1386
+ normalMapUsesUv2?: boolean;
1387
+ normalMapType?: 'tangent' | 'object';
285
1388
  normalScale?: number[];
1389
+ bumpMap?: Buffer;
1390
+ bumpMapWidth?: number;
1391
+ bumpMapHeight?: number;
1392
+ bumpMapWrapS?: string;
1393
+ bumpMapWrapT?: string;
1394
+ bumpMapMagFilter?: string;
1395
+ bumpMapMinFilter?: string;
1396
+ bumpMapAnisotropy?: number;
1397
+ bumpMapTransform?: number[];
1398
+ bumpMapColorSpace?: string;
1399
+ bumpMapUsesUv2?: boolean;
1400
+ bumpScale?: number;
1401
+ matcapMap?: Buffer;
1402
+ matcapMapWidth?: number;
1403
+ matcapMapHeight?: number;
1404
+ matcapMapWrapS?: string;
1405
+ matcapMapWrapT?: string;
1406
+ matcapMapMagFilter?: string;
1407
+ matcapMapMinFilter?: string;
1408
+ matcapMapAnisotropy?: number;
1409
+ matcapMapTransform?: number[];
1410
+ matcapMapColorSpace?: string;
1411
+ matcapMapUsesUv2?: boolean;
1412
+ depthPacking?: number;
1413
+ distanceReferencePosition?: number[];
1414
+ distanceNear?: number;
1415
+ distanceFar?: number;
1416
+ gradientMap?: Buffer;
1417
+ gradientMapWidth?: number;
1418
+ gradientMapHeight?: number;
1419
+ gradientMapWrapS?: string;
1420
+ gradientMapWrapT?: string;
1421
+ gradientMapMagFilter?: string;
1422
+ gradientMapMinFilter?: string;
1423
+ gradientMapAnisotropy?: number;
1424
+ gradientMapColorSpace?: string;
1425
+ displacementMap?: Buffer;
1426
+ displacementMapWidth?: number;
1427
+ displacementMapHeight?: number;
1428
+ displacementMapWrapS?: string;
1429
+ displacementMapWrapT?: string;
1430
+ displacementMapMagFilter?: string;
1431
+ displacementMapMinFilter?: string;
1432
+ displacementMapAnisotropy?: number;
1433
+ displacementMapTransform?: number[];
1434
+ displacementMapColorSpace?: string;
1435
+ displacementMapUsesUv2?: boolean;
1436
+ displacementScale?: number;
1437
+ displacementBias?: number;
286
1438
  metallicRoughnessTexture?: Buffer;
287
1439
  metallicRoughnessTextureWidth?: number;
288
1440
  metallicRoughnessTextureHeight?: number;
1441
+ metallicRoughnessTextureWrapS?: string;
1442
+ metallicRoughnessTextureWrapT?: string;
1443
+ metallicRoughnessTextureMagFilter?: string;
1444
+ metallicRoughnessTextureMinFilter?: string;
1445
+ metallicRoughnessTextureAnisotropy?: number;
1446
+ metallicRoughnessTextureTransform?: number[];
1447
+ metallicRoughnessTextureColorSpace?: string;
1448
+ metallicRoughnessTextureUsesUv2?: boolean;
289
1449
  emissiveMap?: Buffer;
290
1450
  emissiveMapWidth?: number;
291
1451
  emissiveMapHeight?: number;
1452
+ emissiveMapWrapS?: string;
1453
+ emissiveMapWrapT?: string;
1454
+ emissiveMapMagFilter?: string;
1455
+ emissiveMapMinFilter?: string;
1456
+ emissiveMapAnisotropy?: number;
1457
+ emissiveMapTransform?: number[];
1458
+ emissiveMapColorSpace?: string;
1459
+ emissiveMapUsesUv2?: boolean;
292
1460
  aoMap?: Buffer;
293
1461
  aoMapWidth?: number;
294
1462
  aoMapHeight?: number;
1463
+ aoMapWrapS?: string;
1464
+ aoMapWrapT?: string;
1465
+ aoMapMagFilter?: string;
1466
+ aoMapMinFilter?: string;
1467
+ aoMapAnisotropy?: number;
1468
+ aoMapTransform?: number[];
1469
+ aoMapColorSpace?: string;
1470
+ aoMapUsesUv2?: boolean;
295
1471
  aoMapIntensity?: number;
1472
+ lightMap?: Buffer;
1473
+ lightMapWidth?: number;
1474
+ lightMapHeight?: number;
1475
+ lightMapWrapS?: string;
1476
+ lightMapWrapT?: string;
1477
+ lightMapMagFilter?: string;
1478
+ lightMapMinFilter?: string;
1479
+ lightMapAnisotropy?: number;
1480
+ lightMapTransform?: number[];
1481
+ lightMapColorSpace?: string;
1482
+ lightMapUsesUv2?: boolean;
1483
+ lightMapIntensity?: number;
1484
+ specularMap?: Buffer;
1485
+ specularMapWidth?: number;
1486
+ specularMapHeight?: number;
1487
+ specularMapWrapS?: string;
1488
+ specularMapWrapT?: string;
1489
+ specularMapMagFilter?: string;
1490
+ specularMapMinFilter?: string;
1491
+ specularMapAnisotropy?: number;
1492
+ specularMapTransform?: number[];
1493
+ specularMapColorSpace?: string;
1494
+ specularMapUsesUv2?: boolean;
1495
+ alphaMap?: Buffer;
1496
+ alphaMapWidth?: number;
1497
+ alphaMapHeight?: number;
1498
+ alphaMapWrapS?: string;
1499
+ alphaMapWrapT?: string;
1500
+ alphaMapMagFilter?: string;
1501
+ alphaMapMinFilter?: string;
1502
+ alphaMapAnisotropy?: number;
1503
+ alphaMapTransform?: number[];
1504
+ alphaMapColorSpace?: string;
1505
+ alphaMapUsesUv2?: boolean;
296
1506
  alphaTest?: number;
1507
+ alphaHash?: boolean;
1508
+ alphaToCoverage?: boolean;
1509
+ premultipliedAlpha?: boolean;
1510
+ toneMapped?: boolean;
1511
+ flatShading?: boolean;
1512
+ fog?: boolean;
297
1513
  transparent?: boolean;
1514
+ blending?: string;
1515
+ blendEquation?: number;
1516
+ blendSrc?: number;
1517
+ blendDst?: number;
1518
+ blendEquationAlpha?: number;
1519
+ blendSrcAlpha?: number;
1520
+ blendDstAlpha?: number;
1521
+ blendColor?: number[];
1522
+ blendAlpha?: number;
1523
+ depthTest?: boolean;
1524
+ depthFunc?: string;
1525
+ depthWrite?: boolean;
1526
+ colorWrite?: boolean;
1527
+ polygonOffset?: boolean;
1528
+ polygonOffsetFactor?: number;
1529
+ polygonOffsetUnits?: number;
1530
+ stencilWrite?: boolean;
1531
+ stencilWriteMask?: number;
1532
+ stencilFunc?: number;
1533
+ stencilRef?: number;
1534
+ stencilFuncMask?: number;
1535
+ stencilFail?: number;
1536
+ stencilZFail?: number;
1537
+ stencilZPass?: number;
298
1538
  side?: string;
1539
+ shadowSide?: string;
299
1540
  shadingModel?: string;
1541
+ customFragmentShader?: string;
300
1542
  }
301
1543
  export interface TextureInfo {
302
1544
  data: Buffer;
@@ -304,6 +1546,13 @@ export interface TextureInfo {
304
1546
  height: number;
305
1547
  wrapS?: string;
306
1548
  wrapT?: string;
1549
+ magFilter?: string;
1550
+ minFilter?: string;
1551
+ anisotropy?: number;
1552
+ transform?: number[];
1553
+ colorSpace?: string;
1554
+ mapping?: 'uv' | 'equirectangular';
1555
+ usesUv2?: boolean;
307
1556
  }
308
1557
  export interface GeometryGroup {
309
1558
  start: number;