@types/three 0.138.0 → 0.141.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 (60) hide show
  1. three/README.md +2 -2
  2. three/examples/jsm/controls/OrbitControls.d.ts +1 -1
  3. three/examples/jsm/controls/TransformControls.d.ts +41 -1
  4. three/examples/jsm/exporters/EXRExporter.d.ts +2 -1
  5. three/examples/jsm/exporters/GLTFExporter.d.ts +102 -5
  6. three/examples/jsm/exporters/KTX2Exporter.d.ts +5 -0
  7. three/examples/jsm/geometries/LightningStrike.d.ts +3 -3
  8. three/examples/jsm/loaders/GLTFLoader.d.ts +6 -1
  9. three/examples/jsm/loaders/NRRDLoader.d.ts +2 -2
  10. three/examples/jsm/misc/MorphAnimMesh.d.ts +1 -1
  11. three/examples/jsm/objects/LightningStorm.d.ts +3 -3
  12. three/examples/jsm/objects/Reflector.d.ts +11 -1
  13. three/examples/jsm/objects/Refractor.d.ts +11 -1
  14. three/examples/jsm/postprocessing/SSAARenderPass.d.ts +1 -1
  15. three/examples/jsm/postprocessing/SavePass.d.ts +1 -1
  16. three/examples/jsm/utils/BufferGeometryUtils.d.ts +8 -0
  17. three/examples/jsm/utils/SceneUtils.d.ts +3 -1
  18. three/examples/jsm/utils/SkeletonUtils.d.ts +15 -11
  19. three/examples/jsm/webxr/ARButton.d.ts +5 -1
  20. three/examples/jsm/webxr/OculusHandModel.d.ts +3 -2
  21. three/examples/jsm/webxr/OculusHandPointerModel.d.ts +6 -2
  22. three/examples/jsm/webxr/XRControllerModelFactory.d.ts +2 -0
  23. three/examples/jsm/webxr/XREstimatedLight.d.ts +5 -5
  24. three/examples/jsm/webxr/XRHandModelFactory.d.ts +1 -1
  25. three/index.d.ts +6 -5
  26. three/package.json +5 -3
  27. three/src/Three.d.ts +2 -1
  28. three/src/animation/AnimationUtils.d.ts +1 -1
  29. three/src/constants.d.ts +6 -2
  30. three/src/core/BufferGeometry.d.ts +0 -2
  31. three/src/core/InstancedBufferGeometry.d.ts +0 -4
  32. three/src/core/Uniform.d.ts +0 -1
  33. three/src/extras/DataUtils.d.ts +1 -0
  34. three/src/extras/Earcut.d.ts +4 -0
  35. three/src/geometries/CapsuleGeometry.d.ts +27 -0
  36. three/src/geometries/Geometries.d.ts +1 -0
  37. three/src/materials/Material.d.ts +0 -15
  38. three/src/materials/MeshBasicMaterial.d.ts +7 -0
  39. three/src/materials/MeshLambertMaterial.d.ts +7 -0
  40. three/src/materials/MeshMatcapMaterial.d.ts +7 -1
  41. three/src/materials/MeshPhongMaterial.d.ts +7 -1
  42. three/src/materials/MeshPhysicalMaterial.d.ts +20 -0
  43. three/src/materials/MeshStandardMaterial.d.ts +7 -7
  44. three/src/materials/MeshToonMaterial.d.ts +7 -0
  45. three/src/materials/PointsMaterial.d.ts +7 -0
  46. three/src/materials/ShadowMaterial.d.ts +7 -0
  47. three/src/materials/SpriteMaterial.d.ts +7 -0
  48. three/src/math/Color.d.ts +22 -10
  49. three/src/math/ColorManagement.d.ts +18 -0
  50. three/src/math/Euler.d.ts +2 -0
  51. three/src/math/Plane.d.ts +0 -1
  52. three/src/math/Quaternion.d.ts +2 -0
  53. three/src/renderers/WebGLRenderTarget.d.ts +6 -1
  54. three/src/renderers/WebGLRenderer.d.ts +2 -3
  55. three/src/renderers/webgl/WebGLUtils.d.ts +2 -2
  56. three/src/renderers/webxr/WebXRController.d.ts +31 -5
  57. three/src/renderers/webxr/WebXRManager.d.ts +23 -7
  58. three/src/scenes/Scene.d.ts +0 -15
  59. three/examples/jsm/postprocessing/SSRrPass.d.ts +0 -121
  60. three/src/renderers/webxr/WebXR.d.ts +0 -328
@@ -13,12 +13,8 @@ export class InstancedBufferGeometry extends BufferGeometry {
13
13
 
14
14
  isInstancedBufferGeometry: boolean;
15
15
 
16
- groups: Array<{ start: number; count: number; instances: number }>;
17
-
18
16
  /**
19
17
  * @default Infinity
20
18
  */
21
19
  instanceCount: number;
22
-
23
- addGroup(start: number, count: number, instances: number): void;
24
20
  }
@@ -13,7 +13,6 @@ export class Uniform {
13
13
  * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
14
14
  */
15
15
  dynamic: boolean;
16
- onUpdateCallback: () => void;
17
16
 
18
17
  /**
19
18
  * @deprecated Use {@link Object3D#onBeforeRender object.onBeforeRender()} instead.
@@ -1,3 +1,4 @@
1
1
  export namespace DataUtils {
2
2
  function toHalfFloat(val: number): number;
3
+ function fromHalfFloat(val: number): number;
3
4
  }
@@ -0,0 +1,4 @@
1
+ import { Triangle } from '../Three';
2
+ export namespace Earcut {
3
+ function triangulate(data: number[], holeIndices: number[], dim: number): Triangle[];
4
+ }
@@ -0,0 +1,27 @@
1
+ import { BufferGeometry } from '../core/BufferGeometry';
2
+
3
+ export class CapsuleGeometry extends BufferGeometry {
4
+ /**
5
+ * @param [radius=1] — Radius of the capsule.
6
+ * @param [length=1] — Length of the middle section.
7
+ * @param [capSegments=4] — Number of curve segments used to build the caps.
8
+ * @param [radialSegments=8] — Number of segmented faces around the circumference of the capsule.
9
+ */
10
+ constructor(radius?: number, length?: number, capSegments?: number, radialSegments?: number);
11
+
12
+ /**
13
+ * @default 'CapsuleGeometry'
14
+ */
15
+ type: string;
16
+
17
+ parameters: {
18
+ radius: number;
19
+ length: number;
20
+ capSegments: number;
21
+ radialSegments: number;
22
+ };
23
+
24
+ static fromJSON(data: any): CapsuleGeometry;
25
+ }
26
+
27
+ export { CapsuleGeometry as CapsuleBufferGeometry };
@@ -1,4 +1,5 @@
1
1
  export * from './BoxGeometry';
2
+ export * from './CapsuleGeometry';
2
3
  export * from './CircleGeometry';
3
4
  export * from './ConeGeometry';
4
5
  export * from './CylinderGeometry';
@@ -13,9 +13,6 @@ import {
13
13
  StencilOp,
14
14
  PixelFormat,
15
15
  } from '../constants';
16
- import { ColorRepresentation } from '../utils';
17
- import { Color } from '../math/Color';
18
- import { Texture } from '../textures/Texture';
19
16
 
20
17
  export interface MaterialParameters {
21
18
  alphaTest?: number | undefined;
@@ -35,7 +32,6 @@ export interface MaterialParameters {
35
32
  depthFunc?: DepthModes | undefined;
36
33
  depthTest?: boolean | undefined;
37
34
  depthWrite?: boolean | undefined;
38
- fog?: boolean | undefined;
39
35
  name?: string | undefined;
40
36
  opacity?: number | undefined;
41
37
  polygonOffset?: boolean | undefined;
@@ -80,11 +76,6 @@ export class Material extends EventDispatcher {
80
76
  */
81
77
  alphaToCoverage: boolean;
82
78
 
83
- /**
84
- * @default false
85
- */
86
- alphaWrite: boolean;
87
-
88
79
  /**
89
80
  * Blending destination. It's one of the blending mode constants defined in Three.js. Default is {@link OneMinusSrcAlphaFactor}.
90
81
  * @default THREE.OneMinusSrcAlphaFactor
@@ -180,12 +171,6 @@ export class Material extends EventDispatcher {
180
171
  */
181
172
  depthWrite: boolean;
182
173
 
183
- /**
184
- * Whether the material is affected by fog. Default is true.
185
- * @default fog
186
- */
187
- fog: boolean;
188
-
189
174
  /**
190
175
  * Unique number of this material instance.
191
176
  */
@@ -16,6 +16,7 @@ export interface MeshBasicMaterialParameters extends MaterialParameters {
16
16
  aoMapIntensity?: number | undefined;
17
17
  specularMap?: Texture | null | undefined;
18
18
  alphaMap?: Texture | null | undefined;
19
+ fog?: boolean | undefined;
19
20
  envMap?: Texture | null | undefined;
20
21
  combine?: Combine | undefined;
21
22
  reflectivity?: number | undefined;
@@ -114,5 +115,11 @@ export class MeshBasicMaterial extends Material {
114
115
  */
115
116
  wireframeLinejoin: string;
116
117
 
118
+ /**
119
+ * Whether the material is affected by fog. Default is true.
120
+ * @default fog
121
+ */
122
+ fog: boolean;
123
+
117
124
  setValues(parameters: MeshBasicMaterialParameters): void;
118
125
  }
@@ -24,6 +24,7 @@ export interface MeshLambertMaterialParameters extends MaterialParameters {
24
24
  wireframeLinewidth?: number | undefined;
25
25
  wireframeLinecap?: string | undefined;
26
26
  wireframeLinejoin?: string | undefined;
27
+ fog?: boolean | undefined;
27
28
  }
28
29
 
29
30
  export class MeshLambertMaterial extends Material {
@@ -129,5 +130,11 @@ export class MeshLambertMaterial extends Material {
129
130
  */
130
131
  wireframeLinejoin: string;
131
132
 
133
+ /**
134
+ * Whether the material is affected by fog. Default is true.
135
+ * @default fog
136
+ */
137
+ fog: boolean;
138
+
132
139
  setValues(parameters: MeshLambertMaterialParameters): void;
133
140
  }
@@ -18,7 +18,7 @@ export interface MeshMatcapMaterialParameters extends MaterialParameters {
18
18
  displacementScale?: number | undefined;
19
19
  displacementBias?: number | undefined;
20
20
  alphaMap?: Texture | null | undefined;
21
-
21
+ fog?: boolean | undefined;
22
22
  flatShading?: boolean | undefined;
23
23
  }
24
24
 
@@ -101,5 +101,11 @@ export class MeshMatcapMaterial extends Material {
101
101
  */
102
102
  flatShading: boolean;
103
103
 
104
+ /**
105
+ * Whether the material is affected by fog. Default is true.
106
+ * @default fog
107
+ */
108
+ fog: boolean;
109
+
104
110
  setValues(parameters: MeshMatcapMaterialParameters): void;
105
111
  }
@@ -37,7 +37,7 @@ export interface MeshPhongMaterialParameters extends MaterialParameters {
37
37
  wireframeLinewidth?: number | undefined;
38
38
  wireframeLinecap?: string | undefined;
39
39
  wireframeLinejoin?: string | undefined;
40
-
40
+ fog?: boolean | undefined;
41
41
  flatShading?: boolean | undefined;
42
42
  }
43
43
 
@@ -205,5 +205,11 @@ export class MeshPhongMaterial extends Material {
205
205
  */
206
206
  metal: boolean;
207
207
 
208
+ /**
209
+ * Whether the material is affected by fog. Default is true.
210
+ * @default fog
211
+ */
212
+ fog: boolean;
213
+
208
214
  setValues(parameters: MeshPhongMaterialParameters): void;
209
215
  }
@@ -156,4 +156,24 @@ export class MeshPhysicalMaterial extends MeshStandardMaterial {
156
156
  * @default null
157
157
  */
158
158
  specularColorMap: Texture | null;
159
+
160
+ /**
161
+ * @default null
162
+ */
163
+ iridescenceMap: Texture | null;
164
+
165
+ /**
166
+ * @default 1.3
167
+ */
168
+ iridescenceIOR: number;
169
+
170
+ /**
171
+ * @default [100, 400]
172
+ */
173
+ iridescenceThicknessRange: number[];
174
+
175
+ /**
176
+ * @default null
177
+ */
178
+ iridescenceThicknessMap: Texture | null;
159
179
  }
@@ -30,10 +30,9 @@ export interface MeshStandardMaterialParameters extends MaterialParameters {
30
30
  alphaMap?: Texture | null | undefined;
31
31
  envMap?: Texture | null | undefined;
32
32
  envMapIntensity?: number | undefined;
33
- refractionRatio?: number | undefined;
34
33
  wireframe?: boolean | undefined;
35
34
  wireframeLinewidth?: number | undefined;
36
-
35
+ fog?: boolean | undefined;
37
36
  flatShading?: boolean | undefined;
38
37
  }
39
38
 
@@ -170,11 +169,6 @@ export class MeshStandardMaterial extends Material {
170
169
  */
171
170
  envMapIntensity: number;
172
171
 
173
- /**
174
- * @default 0.98
175
- */
176
- refractionRatio: number;
177
-
178
172
  /**
179
173
  * @default false
180
174
  */
@@ -201,6 +195,12 @@ export class MeshStandardMaterial extends Material {
201
195
  */
202
196
  flatShading: boolean;
203
197
 
198
+ /**
199
+ * Whether the material is affected by fog. Default is true.
200
+ * @default fog
201
+ */
202
+ fog: boolean;
203
+
204
204
  isMeshStandardMaterial: boolean;
205
205
 
206
206
  setValues(parameters: MeshStandardMaterialParameters): void;
@@ -31,6 +31,7 @@ export interface MeshToonMaterialParameters extends MaterialParameters {
31
31
  wireframeLinewidth?: number | undefined;
32
32
  wireframeLinecap?: string | undefined;
33
33
  wireframeLinejoin?: string | undefined;
34
+ fog?: boolean | undefined;
34
35
  }
35
36
 
36
37
  export class MeshToonMaterial extends Material {
@@ -161,5 +162,11 @@ export class MeshToonMaterial extends Material {
161
162
  */
162
163
  wireframeLinejoin: string;
163
164
 
165
+ /**
166
+ * Whether the material is affected by fog. Default is true.
167
+ * @default fog
168
+ */
169
+ fog: boolean;
170
+
164
171
  setValues(parameters: MeshToonMaterialParameters): void;
165
172
  }
@@ -9,6 +9,7 @@ export interface PointsMaterialParameters extends MaterialParameters {
9
9
  alphaMap?: Texture | null | undefined;
10
10
  size?: number | undefined;
11
11
  sizeAttenuation?: boolean | undefined;
12
+ fog?: boolean | undefined;
12
13
  }
13
14
 
14
15
  export class PointsMaterial extends Material {
@@ -44,5 +45,11 @@ export class PointsMaterial extends Material {
44
45
  */
45
46
  sizeAttenuation: boolean;
46
47
 
48
+ /**
49
+ * Whether the material is affected by fog. Default is true.
50
+ * @default fog
51
+ */
52
+ fog: boolean;
53
+
47
54
  setValues(parameters: PointsMaterialParameters): void;
48
55
  }
@@ -4,6 +4,7 @@ import { MaterialParameters, Material } from './Material';
4
4
 
5
5
  export interface ShadowMaterialParameters extends MaterialParameters {
6
6
  color?: ColorRepresentation | undefined;
7
+ fog?: boolean | undefined;
7
8
  }
8
9
 
9
10
  export class ShadowMaterial extends Material {
@@ -23,4 +24,10 @@ export class ShadowMaterial extends Material {
23
24
  * @default true
24
25
  */
25
26
  transparent: boolean;
27
+
28
+ /**
29
+ * Whether the material is affected by fog. Default is true.
30
+ * @default fog
31
+ */
32
+ fog: boolean;
26
33
  }
@@ -9,6 +9,7 @@ export interface SpriteMaterialParameters extends MaterialParameters {
9
9
  alphaMap?: Texture | null | undefined;
10
10
  rotation?: number | undefined;
11
11
  sizeAttenuation?: boolean | undefined;
12
+ fog?: boolean | undefined;
12
13
  }
13
14
 
14
15
  export class SpriteMaterial extends Material {
@@ -48,6 +49,12 @@ export class SpriteMaterial extends Material {
48
49
  */
49
50
  transparent: boolean;
50
51
 
52
+ /**
53
+ * Whether the material is affected by fog. Default is true.
54
+ * @default fog
55
+ */
56
+ fog: boolean;
57
+
51
58
  readonly isSpriteMaterial: true;
52
59
 
53
60
  setValues(parameters: SpriteMaterialParameters): void;
three/src/math/Color.d.ts CHANGED
@@ -1,13 +1,21 @@
1
+ import { ColorSpace } from '../constants';
1
2
  import { ColorRepresentation } from '../utils';
3
+
2
4
  import { BufferAttribute } from './../core/BufferAttribute';
3
5
 
6
+ export { SRGBToLinear } from './ColorManagement';
7
+
4
8
  export interface HSL {
5
9
  h: number;
6
10
  s: number;
7
11
  l: number;
8
12
  }
9
13
 
10
- export function SRGBToLinear(c: number): number;
14
+ export interface RGB {
15
+ r: number;
16
+ g: number;
17
+ b: number;
18
+ }
11
19
 
12
20
  /**
13
21
  * Represents a color. See also {@link ColorUtils}.
@@ -43,7 +51,7 @@ export class Color {
43
51
 
44
52
  set(color: ColorRepresentation): Color;
45
53
  setScalar(scalar: number): Color;
46
- setHex(hex: number): Color;
54
+ setHex(hex: number, colorSpace?: ColorSpace): Color;
47
55
 
48
56
  /**
49
57
  * Sets this color from RGB values.
@@ -51,7 +59,7 @@ export class Color {
51
59
  * @param g Green channel value between 0 and 1.
52
60
  * @param b Blue channel value between 0 and 1.
53
61
  */
54
- setRGB(r: number, g: number, b: number): Color;
62
+ setRGB(r: number, g: number, b: number, colorSpace?: ColorSpace): Color;
55
63
 
56
64
  /**
57
65
  * Sets this color from HSL values.
@@ -61,20 +69,20 @@ export class Color {
61
69
  * @param s Saturation value channel between 0 and 1.
62
70
  * @param l Value channel value between 0 and 1.
63
71
  */
64
- setHSL(h: number, s: number, l: number): Color;
72
+ setHSL(h: number, s: number, l: number, colorSpace?: ColorSpace): Color;
65
73
 
66
74
  /**
67
75
  * Sets this color from a CSS context style string.
68
76
  * @param contextStyle Color in CSS context style format.
69
77
  */
70
- setStyle(style: string): Color;
78
+ setStyle(style: string, colorSpace?: ColorSpace): Color;
71
79
 
72
80
  /**
73
81
  * Sets this color from a color name.
74
82
  * Faster than {@link Color#setStyle .setStyle()} method if you don't need the other CSS-style formats.
75
83
  * @param style Color name in X11 format.
76
84
  */
77
- setColorName(style: string): Color;
85
+ setColorName(style: string, colorSpace?: ColorSpace): Color;
78
86
 
79
87
  /**
80
88
  * Clones this color.
@@ -112,20 +120,22 @@ export class Color {
112
120
  /**
113
121
  * Returns the hexadecimal value of this color.
114
122
  */
115
- getHex(): number;
123
+ getHex(colorSpace?: ColorSpace): number;
116
124
 
117
125
  /**
118
126
  * Returns the string formated hexadecimal value of this color.
119
127
  */
120
- getHexString(): string;
128
+ getHexString(colorSpace?: ColorSpace): string;
121
129
 
122
- getHSL(target: HSL): HSL;
130
+ getHSL(target: HSL, colorSpace?: ColorSpace): HSL;
131
+
132
+ getRGB(target: RGB, colorSpace?: ColorSpace): RGB;
123
133
 
124
134
  /**
125
135
  * Returns the value of this color in CSS context style.
126
136
  * Example: rgb(r, g, b)
127
137
  */
128
- getStyle(): string;
138
+ getStyle(colorSpace?: ColorSpace): string;
129
139
 
130
140
  offsetHSL(h: number, s: number, l: number): this;
131
141
 
@@ -165,6 +175,8 @@ export class Color {
165
175
 
166
176
  fromBufferAttribute(attribute: BufferAttribute, index: number): this;
167
177
 
178
+ [Symbol.iterator](): Generator<number, void>;
179
+
168
180
  /**
169
181
  * List of X11 color names.
170
182
  */
@@ -0,0 +1,18 @@
1
+ import { LinearSRGBColorSpace, SRGBColorSpace } from '../constants';
2
+ import { Color } from './Color';
3
+
4
+ export function SRGBToLinear(c: number): number;
5
+
6
+ export function LinearToSRGB(c: number): number;
7
+
8
+ export namespace ColorManagement {
9
+ function convert(
10
+ color: Color,
11
+ sourceColorSpace: SRGBColorSpace | LinearSRGBColorSpace,
12
+ targetColorSpace: SRGBColorSpace | LinearSRGBColorSpace,
13
+ ): Color;
14
+
15
+ function fromWorkingColorSpace(color: Color, targetColorSpace: SRGBColorSpace | LinearSRGBColorSpace): Color;
16
+
17
+ function toWorkingColorSpace(color: Color, sourceColorSpace: SRGBColorSpace | LinearSRGBColorSpace): Color;
18
+ }
three/src/math/Euler.d.ts CHANGED
@@ -42,4 +42,6 @@ export class Euler {
42
42
 
43
43
  static RotationOrders: string[];
44
44
  static DefaultOrder: string;
45
+
46
+ [Symbol.iterator](): Generator<string | number, void>;
45
47
  }
three/src/math/Plane.d.ts CHANGED
@@ -31,7 +31,6 @@ export class Plane {
31
31
  distanceToPoint(point: Vector3): number;
32
32
  distanceToSphere(sphere: Sphere): number;
33
33
  projectPoint(point: Vector3, target: Vector3): Vector3;
34
- orthoPoint(point: Vector3, target: Vector3): Vector3;
35
34
  intersectLine(line: Line3, target: Vector3): Vector3 | null;
36
35
  intersectsLine(line: Line3): boolean;
37
36
  intersectsBox(box: Box3): boolean;
@@ -174,4 +174,6 @@ export class Quaternion {
174
174
  inverse(): Quaternion;
175
175
 
176
176
  random(): Quaternion;
177
+
178
+ [Symbol.iterator](): Generator<number, void>;
177
179
  }
@@ -17,12 +17,17 @@ export interface WebGLRenderTargetOptions {
17
17
  generateMipmaps?: boolean | undefined; // true;
18
18
  depthTexture?: DepthTexture | undefined;
19
19
  encoding?: TextureEncoding | undefined;
20
+
21
+ /**
22
+ * Defines the count of MSAA samples. Can only be used with WebGL 2. Default is **0**.
23
+ * @default 0
24
+ */
25
+ samples?: number;
20
26
  }
21
27
 
22
28
  export class WebGLRenderTarget extends EventDispatcher {
23
29
  constructor(width: number, height: number, options?: WebGLRenderTargetOptions);
24
30
 
25
- uuid: string;
26
31
  width: number;
27
32
  height: number;
28
33
  depth: number;
@@ -19,7 +19,6 @@ import { WebXRManager } from '../renderers/webxr/WebXRManager';
19
19
  import { BufferGeometry } from './../core/BufferGeometry';
20
20
  import { Texture } from '../textures/Texture';
21
21
  import { Data3DTexture } from '../textures/Data3DTexture';
22
- import { XRAnimationLoopCallback } from './webxr/WebXR';
23
22
  import { Vector3 } from '../math/Vector3';
24
23
  import { Box3 } from '../math/Box3';
25
24
  import { DataArrayTexture } from '../textures/DataArrayTexture';
@@ -218,7 +217,7 @@ export class WebGLRenderer implements Renderer {
218
217
  /**
219
218
  * Return the WebGL context.
220
219
  */
221
- getContext(): WebGLRenderingContext;
220
+ getContext(): WebGLRenderingContext | WebGL2RenderingContext;
222
221
  getContextAttributes(): any;
223
222
  forceContextLoss(): void;
224
223
  forceContextRestore(): void;
@@ -336,7 +335,7 @@ export class WebGLRenderer implements Renderer {
336
335
  * A build in function that can be used instead of requestAnimationFrame. For WebXR projects this function must be used.
337
336
  * @param callback The function will be called every available frame. If `null` is passed it will stop any already ongoing animation.
338
337
  */
339
- setAnimationLoop(callback: XRAnimationLoopCallback | null): void;
338
+ setAnimationLoop(callback: XRFrameRequestCallback | null): void;
340
339
 
341
340
  /**
342
341
  * @deprecated Use {@link WebGLRenderer#setAnimationLoop .setAnimationLoop()} instead.
@@ -1,7 +1,7 @@
1
- import { CompressedPixelFormat, TextureEncoding } from '../../constants';
1
+ import { CompressedPixelFormat, PixelFormat, TextureEncoding, TextureDataType } from '../../constants';
2
2
 
3
3
  export class WebGLUtils {
4
4
  constructor(gl: WebGLRenderingContext | WebGL2RenderingContext, extensions: any, capabilities: any);
5
5
 
6
- convert(p: CompressedPixelFormat, encoding?: TextureEncoding | null): void;
6
+ convert(p: PixelFormat | CompressedPixelFormat | TextureDataType, encoding?: TextureEncoding | null): number | null;
7
7
  }
@@ -1,14 +1,40 @@
1
1
  import { Group } from '../../objects/Group';
2
- import { XREventType, XRFrame, XRInputSource, XRReferenceSpace } from './WebXR';
2
+ import { Vector3 } from '../../math/Vector3';
3
3
 
4
- export type XRControllerEventType = XREventType | 'disconnected' | 'connected';
4
+ export type XRControllerEventType = XRSessionEventType | XRInputSourceEventType | 'disconnected' | 'connected';
5
+
6
+ export type XRHandJoints = Record<XRHandJoint, number>;
7
+
8
+ export interface XRHandInputState {
9
+ pinching: boolean;
10
+ }
11
+
12
+ export class XRHandSpace extends Group {
13
+ readonly joints: Partial<XRHandJoints>;
14
+ readonly inputState: XRHandInputState;
15
+ }
16
+
17
+ export class XRTargetRaySpace extends Group {
18
+ hasLinearVelocity: boolean;
19
+ readonly linearVelocity: Vector3;
20
+ hasAngularVelocity: boolean;
21
+ readonly angularVelocity: Vector3;
22
+ }
23
+
24
+ export class XRGripSpace extends Group {
25
+ hasLinearVelocity: boolean;
26
+ readonly linearVelocity: Vector3;
27
+ hasAngularVelocity: boolean;
28
+ readonly angularVelocity: Vector3;
29
+ }
5
30
 
6
31
  export class WebXRController {
7
32
  constructor();
8
33
 
9
- getTargetRaySpace(): Group;
10
- getGripSpace(): Group;
11
- dispatchEvent(event: { type: XRControllerEventType; data?: XRInputSource | undefined }): this;
34
+ getHandSpace(): XRHandSpace;
35
+ getTargetRaySpace(): XRTargetRaySpace;
36
+ getGripSpace(): XRGripSpace;
37
+ dispatchEvent(event: { type: XRControllerEventType; data?: XRInputSource }): this;
12
38
  disconnect(inputSource: XRInputSource): this;
13
39
  update(inputSource: XRInputSource, frame: XRFrame, referenceSpace: XRReferenceSpace): this;
14
40
  }
@@ -1,7 +1,13 @@
1
- import { Group } from '../../objects/Group';
2
- import { Camera } from '../../cameras/Camera';
1
+ /// <reference types="webxr" />
2
+
3
+ import { Vector4 } from '../../math/Vector4';
4
+ import { ArrayCamera } from '../../cameras/ArrayCamera';
5
+ import { PerspectiveCamera } from '../../cameras/PerspectiveCamera';
3
6
  import { EventDispatcher } from '../../core/EventDispatcher';
4
- import { XRFrameRequestCallback, XRReferenceSpace, XRReferenceSpaceType, XRSession } from './WebXR';
7
+ import { XRTargetRaySpace, XRGripSpace, XRHandSpace } from './WebXRController';
8
+
9
+ export type WebXRCamera = PerspectiveCamera & { viewport: Vector4 };
10
+ export type WebXRArrayCamera = Omit<ArrayCamera, 'cameras'> & { cameras: [WebXRCamera, WebXRCamera] };
5
11
 
6
12
  export class WebXRManager extends EventDispatcher {
7
13
  constructor(renderer: any, gl: WebGLRenderingContext);
@@ -16,15 +22,25 @@ export class WebXRManager extends EventDispatcher {
16
22
  */
17
23
  isPresenting: boolean;
18
24
 
19
- getController(index: number): Group;
20
- getControllerGrip(index: number): Group;
21
- getHand(index: number): Group;
25
+ /**
26
+ * @default true
27
+ */
28
+ cameraAutoUpdate: boolean;
29
+
30
+ getController(index: number): XRTargetRaySpace;
31
+ getControllerGrip(index: number): XRGripSpace;
32
+ getHand(index: number): XRHandSpace;
22
33
  setFramebufferScaleFactor(value: number): void;
23
34
  setReferenceSpaceType(value: XRReferenceSpaceType): void;
24
35
  getReferenceSpace(): XRReferenceSpace | null;
36
+ setReferenceSpace(value: XRReferenceSpace): void;
37
+ getBaseLayer(): XRWebGLLayer | XRProjectionLayer;
38
+ getBinding(): XRWebGLBinding;
39
+ getFrame(): XRFrame;
25
40
  getSession(): XRSession | null;
26
41
  setSession(value: XRSession): Promise<void>;
27
- getCamera(camera: Camera): Camera;
42
+ getCamera(): WebXRArrayCamera;
43
+ updateCamera(camera: PerspectiveCamera): void;
28
44
  setAnimationLoop(callback: XRFrameRequestCallback | null): void;
29
45
  getFoveation(): number | undefined;
30
46
  setFoveation(foveation: number): void;
@@ -45,20 +45,5 @@ export class Scene extends Object3D {
45
45
 
46
46
  readonly isScene: true;
47
47
 
48
- /**
49
- * Calls before rendering scene
50
- */
51
- onBeforeRender: (
52
- renderer: WebGLRenderer,
53
- scene: Scene,
54
- camera: Camera,
55
- renderTarget: any, // any required for Object3D.onBeforeRender compatibility
56
- ) => void;
57
-
58
- /**
59
- * Calls after rendering scene
60
- */
61
- onAfterRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera) => void;
62
-
63
48
  toJSON(meta?: any): any;
64
49
  }