@types/three 0.148.1 → 0.150.0

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 (62) hide show
  1. three/README.md +2 -2
  2. three/build/three.d.cts +2 -0
  3. three/build/three.d.ts +2 -0
  4. three/build/three.module.d.ts +2 -0
  5. three/examples/jsm/controls/OrbitControls.d.ts +8 -3
  6. three/examples/jsm/controls/TrackballControls.d.ts +2 -2
  7. three/examples/jsm/controls/TransformControls.d.ts +4 -4
  8. three/examples/jsm/helpers/OctreeHelper.d.ts +1 -1
  9. three/examples/jsm/helpers/ViewHelper.d.ts +16 -0
  10. three/examples/jsm/libs/fflate.module.d.ts +1 -0
  11. three/examples/jsm/libs/lil-gui.module.min.d.ts +1 -0
  12. three/examples/jsm/libs/stats.module.d.ts +2 -23
  13. three/examples/jsm/loaders/HDRCubeTextureLoader.d.ts +1 -1
  14. three/examples/jsm/loaders/IFCLoader.d.ts +1 -0
  15. three/examples/jsm/loaders/USDZLoader.d.ts +1 -0
  16. three/examples/jsm/loaders/VOXLoader.d.ts +1 -1
  17. three/examples/jsm/nodes/loaders/NodeLoader.d.ts +1 -0
  18. three/examples/jsm/nodes/shadernode/ShaderNode.d.ts +3 -4
  19. three/examples/jsm/objects/MarchingCubes.d.ts +1 -0
  20. three/examples/jsm/shaders/VelocityShader.d.ts +2 -2
  21. three/index.d.ts +1 -1
  22. three/package.json +19 -4
  23. three/src/Three.d.ts +1 -5
  24. three/src/constants.d.ts +395 -253
  25. three/src/core/BufferAttribute.d.ts +456 -85
  26. three/src/core/BufferGeometry.d.ts +241 -70
  27. three/src/core/Clock.d.ts +28 -20
  28. three/src/core/EventDispatcher.d.ts +20 -4
  29. three/src/core/GLBufferAttribute.d.ts +105 -7
  30. three/src/core/InstancedBufferAttribute.d.ts +13 -24
  31. three/src/core/InstancedBufferGeometry.d.ts +22 -4
  32. three/src/core/InstancedInterleavedBuffer.d.ts +10 -2
  33. three/src/core/InterleavedBuffer.d.ts +98 -14
  34. three/src/core/InterleavedBufferAttribute.d.ts +146 -7
  35. three/src/core/Layers.d.ts +61 -6
  36. three/src/core/Object3D.d.ts +252 -119
  37. three/src/core/Raycaster.d.ts +103 -27
  38. three/src/core/Uniform.d.ts +30 -13
  39. three/src/core/UniformsGroup.d.ts +10 -4
  40. three/src/extras/Earcut.d.ts +3 -4
  41. three/src/helpers/CameraHelper.d.ts +43 -0
  42. three/src/lights/DirectionalLight.d.ts +3 -1
  43. three/src/lights/HemisphereLight.d.ts +3 -1
  44. three/src/lights/SpotLight.d.ts +3 -1
  45. three/src/loaders/CubeTextureLoader.d.ts +1 -1
  46. three/src/loaders/Loader.d.ts +1 -2
  47. three/src/materials/Material.d.ts +9 -2
  48. three/src/materials/MeshPhysicalMaterial.d.ts +13 -1
  49. three/src/math/Color.d.ts +157 -3
  50. three/src/math/ColorManagement.d.ts +13 -7
  51. three/src/math/Euler.d.ts +2 -3
  52. three/src/objects/Mesh.d.ts +2 -2
  53. three/src/renderers/WebGLRenderer.d.ts +2 -2
  54. three/src/renderers/webgl/WebGLAttributes.d.ts +4 -3
  55. three/src/renderers/webgl/WebGLClipping.d.ts +3 -1
  56. three/src/renderers/webxr/WebXRManager.d.ts +2 -2
  57. three/src/textures/Data3DTexture.d.ts +2 -2
  58. three/src/utils.d.ts +5 -2
  59. three/examples/jsm/libs/fflate.module.min.d.ts +0 -1185
  60. three/src/renderers/WebGLMultisampleRenderTarget.d.ts +0 -6
  61. three/src/textures/DataTexture2DArray.d.ts +0 -6
  62. three/src/textures/DataTexture3D.d.ts +0 -6
@@ -14,15 +14,21 @@ export interface Face {
14
14
  }
15
15
 
16
16
  export interface Intersection<TIntersected extends Object3D = Object3D> {
17
+ /** Distance between the origin of the ray and the intersection */
17
18
  distance: number;
18
19
  distanceToRay?: number | undefined;
20
+ /** Point of intersection, in world coordinates */
19
21
  point: Vector3;
20
22
  index?: number | undefined;
23
+ /** Intersected face */
21
24
  face?: Face | null | undefined;
25
+ /** Index of the intersected face */
22
26
  faceIndex?: number | undefined;
27
+ /** The intersected object */
23
28
  object: TIntersected;
24
29
  uv?: Vector2 | undefined;
25
30
  uv2?: Vector2 | undefined;
31
+ /** The index number of the instance where the ray intersects the {@link THREE.InstancedMesh | InstancedMesh } */
26
32
  instanceId?: number | undefined;
27
33
  }
28
34
 
@@ -34,52 +40,105 @@ export interface RaycasterParameters {
34
40
  Sprite?: any;
35
41
  }
36
42
 
43
+ /**
44
+ * This class is designed to assist with {@link https://en.wikipedia.org/wiki/Ray_casting | raycasting}
45
+ * @remarks
46
+ * Raycasting is used for mouse picking (working out what objects in the 3d space the mouse is over) amongst other things.
47
+ * @example
48
+ * ```typescript
49
+ * const raycaster = new THREE.Raycaster();
50
+ * const pointer = new THREE.Vector2();
51
+ *
52
+ * function onPointerMove(event) {
53
+ * // calculate pointer position in normalized device coordinates (-1 to +1) for both components
54
+ * pointer.x = (event.clientX / window.innerWidth) * 2 - 1;
55
+ * pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
56
+ * }
57
+ *
58
+ * function render() {
59
+ * // update the picking ray with the camera and pointer position
60
+ * raycaster.setFromCamera(pointer, camera);
61
+ * // calculate objects intersecting the picking ray
62
+ * const intersects = raycaster.intersectObjects(scene.children);
63
+ * for (let i = 0; i & lt; intersects.length; i++) {
64
+ * intersects[i].object.material.color.set(0xff0000);
65
+ * }
66
+ * renderer.render(scene, camera);
67
+ * }
68
+ * window.addEventListener('pointermove', onPointerMove);
69
+ * window.requestAnimationFrame(render);
70
+ * ```
71
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_cubes | Raycasting to a Mesh}
72
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_cubes_ortho | Raycasting to a Mesh in using an OrthographicCamera}
73
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_buffergeometry | Raycasting to a Mesh with BufferGeometry}
74
+ * @see Example: {@link https://threejs.org/examples/#webgl_instancing_raycast | Raycasting to a InstancedMesh}
75
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_lines | Raycasting to a Line}
76
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_raycasting_points | Raycasting to Points}
77
+ * @see Example: {@link https://threejs.org/examples/#webgl_geometry_terrain_raycast | Terrain raycasting}
78
+ * @see Example: {@link https://threejs.org/examples/#webgl_interactive_voxelpainter | Raycasting to paint voxels}
79
+ * @see Example: {@link https://threejs.org/examples/#webgl_raycaster_texture | Raycast to a Texture}
80
+ * @see {@link https://threejs.org/docs/index.html#api/en/core/Raycaster | Official Documentation}
81
+ * @see {@link https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js | Source}
82
+ */
37
83
  export class Raycaster {
38
84
  /**
39
- * This creates a new raycaster object.
40
- * @param origin The origin vector where the ray casts from.
41
- * @param direction The direction vector that gives direction to the ray. Should be normalized.
42
- * @param near All results returned are further away than near. Near can't be negative. Default value is 0.
43
- * @param far All results returned are closer then far. Far can't be lower then near . Default value is Infinity.
85
+ * This creates a new {@link Raycaster} object.
86
+ * @param origin The origin vector where the ray casts from. Default `new Vector3()`
87
+ * @param direction The direction vector that gives direction to the ray. Should be normalized. Default `new Vector3(0, 0, -1)`
88
+ * @param near All results returned are further away than near. Near can't be negative. Expects a `Float`. Default `0`
89
+ * @param far All results returned are closer than far. Far can't be lower than near. Expects a `Float`. Default `Infinity`
44
90
  */
45
91
  constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number);
46
92
 
47
- /** The Ray used for the raycasting. */
93
+ /**
94
+ * The {@link THREE.RaycasterRay | Ray} used for the raycasting.
95
+ */
48
96
  ray: Ray;
49
97
 
50
98
  /**
51
- * The near factor of the raycaster. This value indicates which objects can be discarded based on the
52
- * distance. This value shouldn't be negative and should be smaller than the far property.
53
- * @default 0
99
+ * The near factor of the raycaster. This value indicates which objects can be discarded based on the distance.
100
+ * This value shouldn't be negative and should be smaller than the far property.
101
+ * @remarks Expects a `Float`
102
+ * @defaultValue `0`
54
103
  */
55
104
  near: number;
56
105
 
57
106
  /**
58
- * The far factor of the raycaster. This value indicates which objects can be discarded based on the
59
- * distance. This value shouldn't be negative and should be larger than the near property.
60
- * @default Infinity
107
+ * The far factor of the raycaster. This value indicates which objects can be discarded based on the distance.
108
+ * This value shouldn't be negative and should be larger than the near property.
109
+ * @remarks Expects a `Float`
110
+ * @defaultValue `Infinity`
61
111
  */
62
112
  far: number;
63
113
 
64
114
  /**
65
- * The camera to use when raycasting against view-dependent objects such as billboarded objects like Sprites. This field
66
- * can be set manually or is set when calling "setFromCamera".
115
+ * The camera to use when raycasting against view-dependent objects such as billboarded objects like {@link THREE.Sprites | Sprites}.
116
+ * This field can be set manually or is set when calling {@link setFromCamera}.
117
+ * @defaultValue `null`
67
118
  */
68
119
  camera: Camera;
69
120
 
70
121
  /**
71
- * Used by Raycaster to selectively ignore 3D objects when performing intersection tests.
72
- * @default new THREE.Layers()
122
+ * Used by {@link Raycaster} to selectively ignore 3D objects when performing intersection tests.
123
+ * The following code example ensures that only 3D objects on layer `1` will be honored by the instance of Raycaster.
124
+ * ```
125
+ * raycaster.layers.set( 1 );
126
+ * object.layers.enable( 1 );
127
+ * ```
128
+ * @defaultValue `new THREE.Layers()` - See {@link THREE.Layers | Layers}.
73
129
  */
74
130
  layers: Layers;
75
131
 
76
132
  /**
77
- * @default { Mesh: {}, Line: { threshold: 1 }, LOD: {}, Points: { threshold: 1 }, Sprite: {} }
133
+ * An data object where threshold is the precision of the {@link Raycaster} when intersecting objects, in world units.
134
+ * @defaultValue `{ Mesh: {}, Line: { threshold: 1 }, LOD: {}, Points: { threshold: 1 }, Sprite: {} }`
78
135
  */
79
136
  params: RaycasterParameters;
80
137
 
81
138
  /**
82
- * Updates the ray with a new origin and direction.
139
+ * Updates the ray with a new origin and direction
140
+ * @remarks
141
+ * Please note that this method only copies the values from the arguments.
83
142
  * @param origin The origin vector where the ray casts from.
84
143
  * @param direction The normalized direction vector that gives direction to the ray.
85
144
  */
@@ -90,13 +149,22 @@ export class Raycaster {
90
149
  * @param coords 2D coordinates of the mouse, in normalized device coordinates (NDC)---X and Y components should be between -1 and 1.
91
150
  * @param camera camera from which the ray should originate
92
151
  */
93
- setFromCamera(coords: { x: number; y: number }, camera: Camera): void;
152
+ setFromCamera(coords: Vector2, camera: Camera): void;
94
153
 
95
154
  /**
96
- * Checks all intersection between the ray and the object with or without the descendants. Intersections are returned sorted by distance, closest first.
155
+ * Checks all intersection between the ray and the object with or without the descendants
156
+ * @remarks Intersections are returned sorted by distance, closest first
157
+ * @remarks {@link Raycaster} delegates to the {@link Object3D.raycast | raycast} method of the passed object, when evaluating whether the ray intersects the object or not
158
+ * This allows {@link THREE.Mesh | meshes} to respond differently to ray casting than {@link THREE.Line | lines} and {@link THREE.Points | pointclouds}.
159
+ * **Note** that for meshes, faces must be pointed towards the origin of the {@link Raycaster.ray | ray} in order to be detected;
160
+ * intersections of the ray passing through the back of a face will not be detected
161
+ * To raycast against both faces of an object, you'll want to set the {@link Mesh.material | material}'s {@link Material.side | side} property to `THREE.DoubleSide`.
162
+ * @see {@link intersectObjects | .intersectObjects()}.
97
163
  * @param object The object to check for intersection with the ray.
98
- * @param recursive If true, it also checks all descendants. Otherwise it only checks intersecton with the object. Default is true.
99
- * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
164
+ * @param recursive If true, it also checks all descendants. Otherwise it only checks intersection with the object. Default `true`
165
+ * @param optionalTarget Target to set the result. Otherwise a new {@link Array | Array} is instantiated.
166
+ * If set, you must clear this array prior to each call (i.e., array.length = 0;). Default `[]`
167
+ * @returns An array of intersections is returned.
100
168
  */
101
169
  intersectObject<TIntersected extends Object3D>(
102
170
  object: Object3D,
@@ -105,12 +173,20 @@ export class Raycaster {
105
173
  ): Array<Intersection<TIntersected>>;
106
174
 
107
175
  /**
108
- * Checks all intersection between the ray and the objects with or without the descendants.
109
- * Intersections are returned sorted by distance, closest first.
110
- * Intersections are of the same form as those returned by .intersectObject.
176
+ * Checks all intersection between the ray and the objects with or without the descendants
177
+ * @remarks Intersections are returned sorted by distance, closest first
178
+ * @remarks Intersections are of the same form as those returned by {@link intersectObject | .intersectObject()}.
179
+ * @remarks {@link Raycaster} delegates to the {@link Object3D.raycast | raycast} method of the passed object, when evaluating whether the ray intersects the object or not
180
+ * This allows {@link THREE.Mesh | meshes} to respond differently to ray casting than {@link THREE.Line | lines} and {@link THREE.Points | pointclouds}.
181
+ * **Note** that for meshes, faces must be pointed towards the origin of the {@link Raycaster.ray | ray} in order to be detected;
182
+ * intersections of the ray passing through the back of a face will not be detected
183
+ * To raycast against both faces of an object, you'll want to set the {@link Mesh.material | material}'s {@link Material.side | side} property to `THREE.DoubleSide`.
184
+ * @see {@link intersectObject | .intersectObject()}.
111
185
  * @param objects The objects to check for intersection with the ray.
112
- * @param recursive If true, it also checks all descendants of the objects. Otherwise it only checks intersecton with the objects. Default is true.
113
- * @param optionalTarget (optional) target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
186
+ * @param recursive If true, it also checks all descendants of the objects. Otherwise it only checks intersection with the objects. Default `true`
187
+ * @param optionalTarget Target to set the result. Otherwise a new {@link Array | Array} is instantiated.
188
+ * If set, you must clear this array prior to each call (i.e., array.length = 0;). Default `[]`
189
+ * @returns An array of intersections is returned.
114
190
  */
115
191
  intersectObjects<TIntersected extends Object3D>(
116
192
  objects: Object3D[],
@@ -1,21 +1,38 @@
1
- export class Uniform {
2
- constructor(value: any);
1
+ /**
2
+ * Uniforms are global GLSL variables.
3
+ * They are passed to shader programs.
4
+ * @example
5
+ * When declaring a uniform of a {@link THREE.ShaderMaterial | ShaderMaterial}, it is declared by value or by object.
6
+ * ```typescript
7
+ * uniforms: {
8
+ * time: {
9
+ * value: 1.0
10
+ * },
11
+ * resolution: new Uniform(new Vector2())
12
+ * };
13
+ * ```
14
+ * @see Example: {@link https://threejs.org/examples/#webgl_nodes_materials_instance_uniform | WebGL2 / nodes / materials / instance / uniform}
15
+ * @see Example: {@link https://threejs.org/examples/#webgpu_instance_uniform| WebGPU / instance / uniform}
16
+ * @see {@link https://threejs.org/docs/index.html#api/en/core/Uniform | Official Documentation}
17
+ * @see {@link https://github.com/mrdoob/three.js/blob/master/src/core/Uniform.js | Source}
18
+ */
19
+ export class Uniform<T = any> {
3
20
  /**
4
- * @deprecated
21
+ * Create a new instance of {@link THREE.Uniform | Uniform}
22
+ * @param value An object containing the value to set up the uniform. It's type must be one of the Uniform Types described above.
5
23
  */
6
- constructor(type: string, value: any);
7
- /**
8
- * @deprecated
9
- */
10
- type: string;
11
- value: any;
24
+ constructor(value: T);
25
+
12
26
  /**
13
- * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
27
+ * Current value of the uniform.
14
28
  */
15
- dynamic: boolean;
29
+ value: T;
16
30
 
17
31
  /**
18
- * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
32
+ * Returns a clone of this uniform.
33
+ * @remarks
34
+ * If the uniform's {@link value} property is an {@link Object | Object} with a `clone()` method, this is used,
35
+ * otherwise the value is copied by assignment Array values are **shared** between cloned {@link THREE.UniformUniform | Uniform}s.
19
36
  */
20
- onUpdate(callback: () => void): Uniform;
37
+ clone(): Uniform<T>;
21
38
  }
@@ -1,15 +1,21 @@
1
1
  import { EventDispatcher } from './EventDispatcher';
2
2
  import { Uniform } from './Uniform';
3
-
4
3
  import { Usage } from '../constants';
5
4
 
5
+ /**
6
+ * @see Example: {@link https://threejs.org/examples/#webgl2_ubo | WebGL2 / UBO}
7
+ * @see {@link https://github.com/mrdoob/three.js/blob/master/src/core/UniformsGroup.js | Source}
8
+ */
6
9
  export class UniformsGroup extends EventDispatcher {
7
- isUniformsGroup: true;
10
+ constructor();
11
+
12
+ readonly isUniformsGroup: true;
13
+
8
14
  id: number;
15
+
9
16
  usage: Usage;
10
- uniforms: Uniform[];
11
17
 
12
- constructor();
18
+ uniforms: Uniform[];
13
19
 
14
20
  add(uniform: Uniform): this;
15
21
 
@@ -1,4 +1,3 @@
1
- import { Triangle } from '../Three';
2
- export namespace Earcut {
3
- function triangulate(data: number[], holeIndices: number[], dim: number): Triangle[];
4
- }
1
+ export const Earcut: {
2
+ triangulate(data: number[], holeIndices?: number[], dim?: number): number[];
3
+ };
@@ -1,18 +1,61 @@
1
+ import { Color } from '../math/Color';
2
+ import { Matrix4 } from '../math/Matrix4';
1
3
  import { Camera } from './../cameras/Camera';
2
4
  import { LineSegments } from './../objects/LineSegments';
3
5
 
6
+ /**
7
+ * This helps with visualizing what a camera contains in its frustum.
8
+ * It visualizes the frustum of a camera using a {@link LineSegments}.
9
+ *
10
+ * CameraHelper must be a child of the scene.
11
+ */
4
12
  export class CameraHelper extends LineSegments {
13
+ /**
14
+ * This create a new CameraHelper for the specified camera.
15
+ *
16
+ * @param camera - The camera to visualize.
17
+ */
5
18
  constructor(camera: Camera);
6
19
 
20
+ /**
21
+ * The camera being visualized.
22
+ */
7
23
  camera: Camera;
24
+
25
+ /**
26
+ * This contains the points used to visualize the camera.
27
+ */
8
28
  pointMap: { [id: string]: number[] };
9
29
 
30
+ /**
31
+ * Reference to the {@link Camera.matrixWorld}.
32
+ */
33
+ matrix: Matrix4;
34
+
35
+ /**
36
+ * See {@link Object3D.matrixAutoUpdate}.
37
+ * Set to `false` here as the helper is using the camera's {@link Camera.matrixWorld}.
38
+ */
39
+ matrixAutoUpdate: boolean;
40
+
10
41
  /**
11
42
  * @default 'CameraHelper'
12
43
  */
13
44
  type: string;
14
45
 
46
+ /**
47
+ * Updates the helper based on the projectionMatrix of the camera.
48
+ */
15
49
  update(): void;
16
50
 
51
+ /**
52
+ * Frees the GPU-related resources allocated by this instance.
53
+ * Call this method whenever this instance is no longer used in your app.
54
+ */
17
55
  dispose(): void;
56
+
57
+ /**
58
+ * Defines the colors of the helper.
59
+ */
60
+ setColors(frustum: Color, cone: Color, up: Color, target: Color, cross: Color): this;
18
61
  }
@@ -22,7 +22,9 @@ export class DirectionalLight extends Light {
22
22
  type: string;
23
23
 
24
24
  /**
25
- * @default THREE.Object3D.DefaultUp
25
+ * This is set equal to {@link Object3D.DEFAULT_UP} (0, 1, 0), so that the light shines from the top down.
26
+ *
27
+ * @default {@link Object3D.DEFAULT_UP}
26
28
  */
27
29
  readonly position: Vector3;
28
30
 
@@ -17,7 +17,9 @@ export class HemisphereLight extends Light {
17
17
  type: string;
18
18
 
19
19
  /**
20
- * @default THREE.Object3D.DefaultUp
20
+ * This is set equal to {@link Object3D.DEFAULT_UP} (0, 1, 0), so that the light shines from the top down.
21
+ *
22
+ * @default {@link Object3D.DEFAULT_UP}
21
23
  */
22
24
  position: Vector3;
23
25
 
@@ -25,7 +25,9 @@ export class SpotLight extends Light {
25
25
  type: string;
26
26
 
27
27
  /**
28
- * @default THREE.Object3D.DefaultUp
28
+ * This is set equal to {@link Object3D.DEFAULT_UP} (0, 1, 0), so that the light shines from the top down.
29
+ *
30
+ * @default {@link Object3D.DEFAULT_UP}
29
31
  */
30
32
  position: Vector3;
31
33
 
@@ -12,5 +12,5 @@ export class CubeTextureLoader extends Loader {
12
12
  onError?: (event: ErrorEvent) => void,
13
13
  ): CubeTexture;
14
14
 
15
- loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<CubeTexture>;
15
+ loadAsync(urls: string[], onProgress?: (event: ProgressEvent) => void): Promise<CubeTexture>;
16
16
  }
@@ -34,11 +34,10 @@ export class Loader {
34
34
 
35
35
  /*
36
36
  load(): void;
37
+ loadAsync(): Promise<unknown>;
37
38
  parse(): void;
38
39
  */
39
40
 
40
- loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<any>;
41
-
42
41
  setCrossOrigin(crossOrigin: string): this;
43
42
  setWithCredentials(value: boolean): this;
44
43
  setPath(path: string): this;
@@ -39,6 +39,7 @@ export interface MaterialParameters {
39
39
  polygonOffsetUnits?: number | undefined;
40
40
  precision?: 'highp' | 'mediump' | 'lowp' | null | undefined;
41
41
  premultipliedAlpha?: boolean | undefined;
42
+ forceSinglePass?: boolean | undefined;
42
43
  dithering?: boolean | undefined;
43
44
  side?: Side | undefined;
44
45
  shadowSide?: Side | undefined;
@@ -283,6 +284,11 @@ export class Material extends EventDispatcher {
283
284
  */
284
285
  premultipliedAlpha: boolean;
285
286
 
287
+ /**
288
+ * @default false
289
+ */
290
+ forceSinglePass: boolean;
291
+
286
292
  /**
287
293
  * Whether to apply dithering to the color to remove the appearance of banding. Default is false.
288
294
  * @default false
@@ -291,8 +297,9 @@ export class Material extends EventDispatcher {
291
297
 
292
298
  /**
293
299
  * Defines which of the face sides will be rendered - front, back or both.
294
- * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide.
295
- * @default THREE.FrontSide
300
+ * Default is {@link THREE.FrontSide}. Other options are {@link THREE.BackSide} and {@link THREE.DoubleSide}.
301
+ *
302
+ * @default {@link THREE.FrontSide}
296
303
  */
297
304
  side: Side;
298
305
 
@@ -16,10 +16,16 @@ export interface MeshPhysicalMaterialParameters extends MeshStandardMaterialPara
16
16
 
17
17
  sheen?: number | undefined;
18
18
  sheenColor?: Color | undefined;
19
+ sheenColorMap?: Texture | null | undefined;
19
20
  sheenRoughness?: number | undefined;
21
+ sheenRoughnessMap?: Texture | null | undefined;
20
22
 
21
23
  transmission?: number | undefined;
22
24
  transmissionMap?: Texture | null | undefined;
25
+
26
+ thickness?: number | undefined;
27
+ thicknessMap?: Texture | null | undefined;
28
+
23
29
  attenuationDistance?: number | undefined;
24
30
  attenuationColor?: Color | undefined;
25
31
 
@@ -27,6 +33,12 @@ export interface MeshPhysicalMaterialParameters extends MeshStandardMaterialPara
27
33
  specularColor?: Color | undefined;
28
34
  specularIntensityMap?: Texture | null | undefined;
29
35
  specularColorMap?: Texture | null | undefined;
36
+
37
+ iridescenceMap?: Texture | null | undefined;
38
+ iridescenceIOR?: number | undefined;
39
+ iridescence?: number | undefined;
40
+ iridescenceThicknessRange?: [number, number] | undefined;
41
+ iridescenceThicknessMap?: Texture | null | undefined;
30
42
  }
31
43
 
32
44
  export class MeshPhysicalMaterial extends MeshStandardMaterial {
@@ -175,7 +187,7 @@ export class MeshPhysicalMaterial extends MeshStandardMaterial {
175
187
  /**
176
188
  * @default [100, 400]
177
189
  */
178
- iridescenceThicknessRange: number[];
190
+ iridescenceThicknessRange: [number, number];
179
191
 
180
192
  /**
181
193
  * @default null
three/src/math/Color.d.ts CHANGED
@@ -2,9 +2,163 @@ import { ColorSpace } from '../constants';
2
2
  import { ColorRepresentation } from '../utils';
3
3
 
4
4
  import { BufferAttribute } from './../core/BufferAttribute';
5
+ import { InterleavedBufferAttribute } from './../core/InterleavedBufferAttribute';
5
6
 
6
7
  export { SRGBToLinear } from './ColorManagement';
7
8
 
9
+ declare const _colorKeywords: {
10
+ aliceblue: 0xf0f8ff;
11
+ antiquewhite: 0xfaebd7;
12
+ aqua: 0x00ffff;
13
+ aquamarine: 0x7fffd4;
14
+ azure: 0xf0ffff;
15
+ beige: 0xf5f5dc;
16
+ bisque: 0xffe4c4;
17
+ black: 0x000000;
18
+ blanchedalmond: 0xffebcd;
19
+ blue: 0x0000ff;
20
+ blueviolet: 0x8a2be2;
21
+ brown: 0xa52a2a;
22
+ burlywood: 0xdeb887;
23
+ cadetblue: 0x5f9ea0;
24
+ chartreuse: 0x7fff00;
25
+ chocolate: 0xd2691e;
26
+ coral: 0xff7f50;
27
+ cornflowerblue: 0x6495ed;
28
+ cornsilk: 0xfff8dc;
29
+ crimson: 0xdc143c;
30
+ cyan: 0x00ffff;
31
+ darkblue: 0x00008b;
32
+ darkcyan: 0x008b8b;
33
+ darkgoldenrod: 0xb8860b;
34
+ darkgray: 0xa9a9a9;
35
+ darkgreen: 0x006400;
36
+ darkgrey: 0xa9a9a9;
37
+ darkkhaki: 0xbdb76b;
38
+ darkmagenta: 0x8b008b;
39
+ darkolivegreen: 0x556b2f;
40
+ darkorange: 0xff8c00;
41
+ darkorchid: 0x9932cc;
42
+ darkred: 0x8b0000;
43
+ darksalmon: 0xe9967a;
44
+ darkseagreen: 0x8fbc8f;
45
+ darkslateblue: 0x483d8b;
46
+ darkslategray: 0x2f4f4f;
47
+ darkslategrey: 0x2f4f4f;
48
+ darkturquoise: 0x00ced1;
49
+ darkviolet: 0x9400d3;
50
+ deeppink: 0xff1493;
51
+ deepskyblue: 0x00bfff;
52
+ dimgray: 0x696969;
53
+ dimgrey: 0x696969;
54
+ dodgerblue: 0x1e90ff;
55
+ firebrick: 0xb22222;
56
+ floralwhite: 0xfffaf0;
57
+ forestgreen: 0x228b22;
58
+ fuchsia: 0xff00ff;
59
+ gainsboro: 0xdcdcdc;
60
+ ghostwhite: 0xf8f8ff;
61
+ gold: 0xffd700;
62
+ goldenrod: 0xdaa520;
63
+ gray: 0x808080;
64
+ green: 0x008000;
65
+ greenyellow: 0xadff2f;
66
+ grey: 0x808080;
67
+ honeydew: 0xf0fff0;
68
+ hotpink: 0xff69b4;
69
+ indianred: 0xcd5c5c;
70
+ indigo: 0x4b0082;
71
+ ivory: 0xfffff0;
72
+ khaki: 0xf0e68c;
73
+ lavender: 0xe6e6fa;
74
+ lavenderblush: 0xfff0f5;
75
+ lawngreen: 0x7cfc00;
76
+ lemonchiffon: 0xfffacd;
77
+ lightblue: 0xadd8e6;
78
+ lightcoral: 0xf08080;
79
+ lightcyan: 0xe0ffff;
80
+ lightgoldenrodyellow: 0xfafad2;
81
+ lightgray: 0xd3d3d3;
82
+ lightgreen: 0x90ee90;
83
+ lightgrey: 0xd3d3d3;
84
+ lightpink: 0xffb6c1;
85
+ lightsalmon: 0xffa07a;
86
+ lightseagreen: 0x20b2aa;
87
+ lightskyblue: 0x87cefa;
88
+ lightslategray: 0x778899;
89
+ lightslategrey: 0x778899;
90
+ lightsteelblue: 0xb0c4de;
91
+ lightyellow: 0xffffe0;
92
+ lime: 0x00ff00;
93
+ limegreen: 0x32cd32;
94
+ linen: 0xfaf0e6;
95
+ magenta: 0xff00ff;
96
+ maroon: 0x800000;
97
+ mediumaquamarine: 0x66cdaa;
98
+ mediumblue: 0x0000cd;
99
+ mediumorchid: 0xba55d3;
100
+ mediumpurple: 0x9370db;
101
+ mediumseagreen: 0x3cb371;
102
+ mediumslateblue: 0x7b68ee;
103
+ mediumspringgreen: 0x00fa9a;
104
+ mediumturquoise: 0x48d1cc;
105
+ mediumvioletred: 0xc71585;
106
+ midnightblue: 0x191970;
107
+ mintcream: 0xf5fffa;
108
+ mistyrose: 0xffe4e1;
109
+ moccasin: 0xffe4b5;
110
+ navajowhite: 0xffdead;
111
+ navy: 0x000080;
112
+ oldlace: 0xfdf5e6;
113
+ olive: 0x808000;
114
+ olivedrab: 0x6b8e23;
115
+ orange: 0xffa500;
116
+ orangered: 0xff4500;
117
+ orchid: 0xda70d6;
118
+ palegoldenrod: 0xeee8aa;
119
+ palegreen: 0x98fb98;
120
+ paleturquoise: 0xafeeee;
121
+ palevioletred: 0xdb7093;
122
+ papayawhip: 0xffefd5;
123
+ peachpuff: 0xffdab9;
124
+ peru: 0xcd853f;
125
+ pink: 0xffc0cb;
126
+ plum: 0xdda0dd;
127
+ powderblue: 0xb0e0e6;
128
+ purple: 0x800080;
129
+ rebeccapurple: 0x663399;
130
+ red: 0xff0000;
131
+ rosybrown: 0xbc8f8f;
132
+ royalblue: 0x4169e1;
133
+ saddlebrown: 0x8b4513;
134
+ salmon: 0xfa8072;
135
+ sandybrown: 0xf4a460;
136
+ seagreen: 0x2e8b57;
137
+ seashell: 0xfff5ee;
138
+ sienna: 0xa0522d;
139
+ silver: 0xc0c0c0;
140
+ skyblue: 0x87ceeb;
141
+ slateblue: 0x6a5acd;
142
+ slategray: 0x708090;
143
+ slategrey: 0x708090;
144
+ snow: 0xfffafa;
145
+ springgreen: 0x00ff7f;
146
+ steelblue: 0x4682b4;
147
+ tan: 0xd2b48c;
148
+ teal: 0x008080;
149
+ thistle: 0xd8bfd8;
150
+ tomato: 0xff6347;
151
+ turquoise: 0x40e0d0;
152
+ violet: 0xee82ee;
153
+ wheat: 0xf5deb3;
154
+ white: 0xffffff;
155
+ whitesmoke: 0xf5f5f5;
156
+ yellow: 0xffff00;
157
+ yellowgreen: 0x9acd32;
158
+ };
159
+
160
+ export type ColorKeyword = keyof typeof _colorKeywords;
161
+
8
162
  export interface HSL {
9
163
  h: number;
10
164
  s: number;
@@ -82,7 +236,7 @@ export class Color {
82
236
  * Faster than {@link Color#setStyle .setStyle()} method if you don't need the other CSS-style formats.
83
237
  * @param style Color name in X11 format.
84
238
  */
85
- setColorName(style: string, colorSpace?: ColorSpace): Color;
239
+ setColorName(style: ColorKeyword, colorSpace?: ColorSpace): Color;
86
240
 
87
241
  /**
88
242
  * Clones this color.
@@ -173,12 +327,12 @@ export class Color {
173
327
  */
174
328
  toArray(xyz: ArrayLike<number>, offset?: number): ArrayLike<number>;
175
329
 
176
- fromBufferAttribute(attribute: BufferAttribute, index: number): this;
330
+ fromBufferAttribute(attribute: BufferAttribute | InterleavedBufferAttribute, index: number): this;
177
331
 
178
332
  [Symbol.iterator](): Generator<number, void>;
179
333
 
180
334
  /**
181
335
  * List of X11 color names.
182
336
  */
183
- static NAMES: Record<string, number>;
337
+ static NAMES: typeof _colorKeywords;
184
338
  }