@types/three 0.163.0 → 0.164.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 (53) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/animation/CCDIKSolver.d.ts +19 -6
  3. three/examples/jsm/exporters/USDZExporter.d.ts +8 -1
  4. three/examples/jsm/interactive/SelectionBox.d.ts +1 -0
  5. three/examples/jsm/math/Octree.d.ts +2 -1
  6. three/examples/jsm/nodes/Nodes.d.ts +28 -4
  7. three/examples/jsm/nodes/accessors/AccessorsUtils.d.ts +2 -0
  8. three/examples/jsm/nodes/accessors/MaterialNode.d.ts +84 -1
  9. three/examples/jsm/nodes/accessors/TextureNode.d.ts +3 -0
  10. three/examples/jsm/nodes/code/CodeNode.d.ts +7 -2
  11. three/examples/jsm/nodes/code/FunctionNode.d.ts +10 -4
  12. three/examples/jsm/nodes/core/LightingModel.d.ts +1 -0
  13. three/examples/jsm/nodes/core/NodeBuilder.d.ts +1 -1
  14. three/examples/jsm/nodes/core/OutputStructNode.d.ts +12 -0
  15. three/examples/jsm/nodes/core/PropertyNode.d.ts +10 -0
  16. three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.d.ts +3 -1
  17. three/examples/jsm/nodes/functions/BSDF/D_GGX_Anisotropic.d.ts +10 -0
  18. three/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.d.ts +7 -2
  19. three/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.d.ts +16 -0
  20. three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts +10 -2
  21. three/examples/jsm/nodes/functions/ShadowMaskModel.d.ts +9 -0
  22. three/examples/jsm/nodes/functions/material/getGeometryRoughness.d.ts +3 -2
  23. three/examples/jsm/nodes/functions/material/getRoughness.d.ts +3 -2
  24. three/examples/jsm/nodes/lighting/AnalyticLightNode.d.ts +0 -2
  25. three/examples/jsm/nodes/lighting/IrradianceNode.d.ts +8 -0
  26. three/examples/jsm/nodes/lighting/LightUtils.d.ts +7 -2
  27. three/examples/jsm/nodes/materials/Materials.d.ts +1 -0
  28. three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts +24 -14
  29. three/examples/jsm/nodes/materials/NodeMaterial.d.ts +6 -2
  30. three/examples/jsm/nodes/materials/ShadowNodeMaterial.d.ts +15 -0
  31. three/examples/jsm/nodes/materialx/MaterialXNodes.d.ts +36 -32
  32. three/examples/jsm/nodes/materialx/lib/mx_hsv.d.ts +3 -4
  33. three/examples/jsm/nodes/materialx/lib/mx_noise.d.ts +127 -6
  34. three/examples/jsm/nodes/materialx/lib/mx_transform_color.d.ts +4 -0
  35. three/examples/jsm/nodes/shadernode/ShaderNode.d.ts +6 -3
  36. three/examples/jsm/physics/JoltPhysics.d.ts +10 -0
  37. three/examples/jsm/postprocessing/RenderTransitionPass.d.ts +33 -0
  38. three/examples/jsm/renderers/common/Renderer.d.ts +7 -4
  39. three/examples/jsm/utils/SceneUtils.d.ts +18 -0
  40. three/examples/jsm/webxr/OculusHandModel.d.ts +5 -2
  41. three/examples/jsm/webxr/XRHandModelFactory.d.ts +8 -2
  42. three/package.json +2 -2
  43. three/src/core/Object3D.d.ts +6 -5
  44. three/src/core/RenderTarget.d.ts +25 -10
  45. three/src/materials/MeshPhysicalMaterial.d.ts +65 -51
  46. three/src/objects/BatchedMesh.d.ts +13 -0
  47. three/src/renderers/shaders/ShaderChunk.d.ts +0 -1
  48. three/src/renderers/webgl/WebGLBufferRenderer.d.ts +6 -0
  49. three/src/renderers/webgl/WebGLCapabilities.d.ts +5 -0
  50. three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts +6 -0
  51. three/src/renderers/webgl/WebGLPrograms.d.ts +2 -0
  52. three/src/textures/types.d.ts +4 -4
  53. three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.d.ts +0 -3
@@ -9,6 +9,7 @@ import {
9
9
  PointsMaterial,
10
10
  ShaderMaterial,
11
11
  ShaderMaterialParameters,
12
+ ShadowMaterial,
12
13
  SpriteMaterial,
13
14
  } from "three";
14
15
  import ClippingNode from "../accessors/ClippingNode.js";
@@ -24,6 +25,7 @@ import MeshPhongNodeMaterial from "./MeshPhongNodeMaterial.js";
24
25
  import MeshPhysicalNodeMaterial from "./MeshPhysicalNodeMaterial.js";
25
26
  import MeshStandardNodeMaterial from "./MeshStandardNodeMaterial.js";
26
27
  import PointsNodeMaterial from "./PointsNodeMaterial.js";
28
+ import ShadowNodeMaterial from "./ShadowNodeMaterial.js";
27
29
  import SpriteNodeMaterial from "./SpriteNodeMaterial.js";
28
30
 
29
31
  export interface NodeMaterialParameters extends ShaderMaterialParameters {
@@ -33,6 +35,7 @@ export interface NodeMaterialParameters extends ShaderMaterialParameters {
33
35
 
34
36
  lightsNode?: ShaderNodeObject<LightsNode> | null | undefined;
35
37
  envNode?: ShaderNodeObject<Node> | null | undefined;
38
+ aoNode?: ShaderNodeObject<Node> | null | undefined;
36
39
 
37
40
  colorNode?: ShaderNodeObject<Node> | null | undefined;
38
41
  normalNode?: ShaderNodeObject<Node> | null | undefined;
@@ -57,10 +60,9 @@ export default class NodeMaterial extends ShaderMaterial {
57
60
 
58
61
  normals: boolean;
59
62
 
60
- colorSpaced: boolean;
61
-
62
63
  lightsNode: ShaderNodeObject<LightsNode> | null;
63
64
  envNode: ShaderNodeObject<Node> | null;
65
+ aoNode: ShaderNodeObject<Node> | null;
64
66
 
65
67
  colorNode: ShaderNodeObject<Node> | null;
66
68
  normalNode: ShaderNodeObject<Node> | null;
@@ -73,6 +75,7 @@ export default class NodeMaterial extends ShaderMaterial {
73
75
 
74
76
  depthNode: ShaderNodeObject<Node> | null;
75
77
  shadowNode: ShaderNodeObject<Node> | null;
78
+ shadowPositionNode: ShaderNodeObject<Node> | null;
76
79
 
77
80
  outputNode: ShaderNodeObject<Node> | null;
78
81
 
@@ -104,6 +107,7 @@ export default class NodeMaterial extends ShaderMaterial {
104
107
  static fromMaterial(material: MeshPhysicalMaterial): MeshPhysicalNodeMaterial;
105
108
  static fromMaterial(material: MeshStandardMaterial): MeshStandardNodeMaterial;
106
109
  static fromMaterial(material: PointsMaterial): PointsNodeMaterial;
110
+ static fromMaterial(material: ShadowMaterial): ShadowNodeMaterial;
107
111
  static fromMaterial(material: SpriteMaterial): SpriteNodeMaterial;
108
112
  static fromMaterial(material: NodeMaterial): NodeMaterial;
109
113
  static fromMaterial(material: Material): NodeMaterial;
@@ -0,0 +1,15 @@
1
+ import { Color, ShadowMaterialParameters } from "three";
2
+ import NodeMaterial, { NodeMaterialParameters } from "./NodeMaterial.js";
3
+
4
+ export interface ShadowNodeMaterialParameters extends NodeMaterialParameters, ShadowMaterialParameters {
5
+ }
6
+
7
+ export default class ShadowNodeMaterial extends NodeMaterial {
8
+ readonly isShadowNodeMaterial: true;
9
+
10
+ // Properties from ShadowMaterial
11
+ readonly isShadowMaterial: true;
12
+ color: Color;
13
+
14
+ constructor(parameters?: ShadowNodeMaterialParameters);
15
+ }
@@ -2,102 +2,106 @@ import Node from "../core/Node.js";
2
2
  import MathNode from "../math/MathNode.js";
3
3
  import { NodeRepresentation, ShaderNodeObject } from "../shadernode/ShaderNode.js";
4
4
  import { mx_hsvtorgb, mx_rgbtohsv } from "./lib/mx_hsv.js";
5
+ import { mx_srgb_texture_to_lin_rec709 } from "./lib/mx_transform_color.js";
5
6
 
6
- export function mx_aastep(threshold?: NodeRepresentation, value?: NodeRepresentation): ShaderNodeObject<MathNode>;
7
+ export function mx_aastep(threshold: NodeRepresentation, value: NodeRepresentation): ShaderNodeObject<MathNode>;
7
8
 
8
9
  export function mx_ramplr(
9
- valuel?: NodeRepresentation,
10
- valuer?: NodeRepresentation,
11
- texcoord?: ShaderNodeObject<Node>,
10
+ valuel: NodeRepresentation,
11
+ valuer: NodeRepresentation,
12
+ texcoord?: NodeRepresentation,
12
13
  ): ShaderNodeObject<MathNode>;
13
14
  export function mx_ramptb(
14
- valuet?: NodeRepresentation,
15
- valueb?: NodeRepresentation,
16
- texcoord?: ShaderNodeObject<Node>,
15
+ valuet: NodeRepresentation,
16
+ valueb: NodeRepresentation,
17
+ texcoord?: NodeRepresentation,
17
18
  ): ShaderNodeObject<MathNode>;
18
19
 
19
20
  export function mx_splitlr(
20
- valuel?: NodeRepresentation,
21
- valuer?: NodeRepresentation,
22
- center?: NodeRepresentation,
23
- texcoord?: ShaderNodeObject<Node>,
21
+ valuel: NodeRepresentation,
22
+ valuer: NodeRepresentation,
23
+ center: NodeRepresentation,
24
+ texcoord?: NodeRepresentation,
24
25
  ): ShaderNodeObject<MathNode>;
25
26
  export function mx_splittb(
26
- valuet?: NodeRepresentation,
27
- valueb?: NodeRepresentation,
28
- center?: NodeRepresentation,
29
- texcoord?: ShaderNodeObject<Node>,
27
+ valuet: NodeRepresentation,
28
+ valueb: NodeRepresentation,
29
+ center: NodeRepresentation,
30
+ texcoord?: NodeRepresentation,
30
31
  ): ShaderNodeObject<MathNode>;
31
32
 
32
33
  export function mx_transform_uv(
33
34
  uv_scale?: NodeRepresentation,
34
35
  uv_offset?: NodeRepresentation,
35
- uv_geo?: ShaderNodeObject<Node>,
36
+ uv_geo?: NodeRepresentation,
36
37
  ): ShaderNodeObject<Node>;
37
38
 
38
- export function mx_noise_float(
39
- texcoord?: ShaderNodeObject<Node>,
40
- amplitude?: NodeRepresentation,
39
+ export function mx_safepower(in1: NodeRepresentation, in2?: NodeRepresentation): ShaderNodeObject<Node>;
40
+
41
+ export function mx_contrast(
42
+ input: NodeRepresentation,
43
+ amount?: NodeRepresentation,
41
44
  pivot?: NodeRepresentation,
42
45
  ): ShaderNodeObject<Node>;
43
- export function mx_noise_vec2(
44
- texcoord?: ShaderNodeObject<Node>,
46
+
47
+ export function mx_noise_float(
48
+ texcoord?: NodeRepresentation,
45
49
  amplitude?: NodeRepresentation,
46
50
  pivot?: NodeRepresentation,
47
51
  ): ShaderNodeObject<Node>;
48
52
  export function mx_noise_vec3(
49
- texcoord?: ShaderNodeObject<Node>,
53
+ texcoord?: NodeRepresentation,
50
54
  amplitude?: NodeRepresentation,
51
55
  pivot?: NodeRepresentation,
52
56
  ): ShaderNodeObject<Node>;
53
57
  export function mx_noise_vec4(
54
- texcoord?: ShaderNodeObject<Node>,
58
+ texcoord?: NodeRepresentation,
55
59
  amplitude?: NodeRepresentation,
56
60
  pivot?: NodeRepresentation,
57
61
  ): ShaderNodeObject<Node>;
58
62
 
59
63
  export function mx_worley_noise_float(
60
- texcoord?: ShaderNodeObject<Node>,
64
+ texcoord?: NodeRepresentation,
61
65
  jitter?: NodeRepresentation,
62
66
  ): ShaderNodeObject<Node>;
63
67
  export function mx_worley_noise_vec2(
64
- texcoord?: ShaderNodeObject<Node>,
68
+ texcoord?: NodeRepresentation,
65
69
  jitter?: NodeRepresentation,
66
70
  ): ShaderNodeObject<Node>;
67
71
  export function mx_worley_noise_vec3(
68
- texcoord?: ShaderNodeObject<Node>,
72
+ texcoord?: NodeRepresentation,
69
73
  jitter?: NodeRepresentation,
70
74
  ): ShaderNodeObject<Node>;
71
75
 
72
- export function mx_cell_noise_float(texcoord?: ShaderNodeObject<Node>): ShaderNodeObject<Node>;
76
+ export function mx_cell_noise_float(texcoord?: NodeRepresentation): ShaderNodeObject<Node>;
73
77
 
74
78
  export function mx_fractal_noise_float(
75
- position?: ShaderNodeObject<Node>,
79
+ position?: NodeRepresentation,
76
80
  octaves?: NodeRepresentation,
77
81
  lacunarity?: NodeRepresentation,
78
82
  diminish?: NodeRepresentation,
79
83
  amplitude?: NodeRepresentation,
80
84
  ): ShaderNodeObject<Node>;
81
85
  export function mx_fractal_noise_vec2(
82
- position?: ShaderNodeObject<Node>,
86
+ position?: NodeRepresentation,
83
87
  octaves?: NodeRepresentation,
84
88
  lacunarity?: NodeRepresentation,
85
89
  diminish?: NodeRepresentation,
86
90
  amplitude?: NodeRepresentation,
87
91
  ): ShaderNodeObject<Node>;
88
92
  export function mx_fractal_noise_vec3(
89
- position?: ShaderNodeObject<Node>,
93
+ position?: NodeRepresentation,
90
94
  octaves?: NodeRepresentation,
91
95
  lacunarity?: NodeRepresentation,
92
96
  diminish?: NodeRepresentation,
93
97
  amplitude?: NodeRepresentation,
94
98
  ): ShaderNodeObject<Node>;
95
99
  export function mx_fractal_noise_vec4(
96
- position?: ShaderNodeObject<Node>,
100
+ position?: NodeRepresentation,
97
101
  octaves?: NodeRepresentation,
98
102
  lacunarity?: NodeRepresentation,
99
103
  diminish?: NodeRepresentation,
100
104
  amplitude?: NodeRepresentation,
101
105
  ): ShaderNodeObject<Node>;
102
106
 
103
- export { mx_hsvtorgb, mx_rgbtohsv };
107
+ export { mx_hsvtorgb, mx_rgbtohsv, mx_srgb_texture_to_lin_rec709 };
@@ -1,6 +1,5 @@
1
- import { Fn } from "../../code/FunctionNode.js";
2
1
  import Node from "../../core/Node.js";
3
- import { ShaderNodeObject } from "../../shadernode/ShaderNode.js";
2
+ import { NodeRepresentation, ShaderNodeObject } from "../../shadernode/ShaderNode.js";
4
3
 
5
- export function mx_hsvtorgb(...params: Fn<[Node]>): ShaderNodeObject<Node>;
6
- export function mx_rgbtohsv(...params: Fn<[Node]>): ShaderNodeObject<Node>;
4
+ export const mx_hsvtorgb: (hsv_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
5
+ export const mx_rgbtohsv: (c_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
@@ -1,8 +1,129 @@
1
- import { Fn } from "../../code/FunctionNode.js";
2
1
  import Node from "../../core/Node.js";
3
- import { ShaderNodeObject } from "../../shadernode/ShaderNode.js";
2
+ import VarNode from "../../core/VarNode.js";
3
+ import { NodeRepresentation, ShaderNodeObject } from "../../shadernode/ShaderNode.js";
4
4
 
5
- export function mx_perlin_noise_float(...params: Fn<[Node]>): ShaderNodeObject<Node>;
6
- export function mx_cell_noise_float(...params: Fn<[Node]>): ShaderNodeObject<Node>;
7
- export function mx_worley_noise_float(...params: Fn<[Node]>): ShaderNodeObject<Node>;
8
- export function mx_fractal_noise_float(...params: Fn<[Node, Node, Node, Node]>): ShaderNodeObject<Node>;
5
+ export const mx_select: (
6
+ b_immutable: NodeRepresentation,
7
+ t_immutable: NodeRepresentation,
8
+ f_immutable: NodeRepresentation,
9
+ ) => ShaderNodeObject<Node>;
10
+ export const mx_negate_if: (
11
+ val_immutable: NodeRepresentation,
12
+ b_immutable: NodeRepresentation,
13
+ ) => ShaderNodeObject<Node>;
14
+ export const mx_floor: (x_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
15
+ export const mx_floorfrac: (x_immutable: NodeRepresentation, i: ShaderNodeObject<VarNode>) => ShaderNodeObject<Node>;
16
+ export const mx_bilerp: (
17
+ v0_immutable: NodeRepresentation,
18
+ v1_immutable: NodeRepresentation,
19
+ v2_immutable: NodeRepresentation,
20
+ v3_immutable: NodeRepresentation,
21
+ s_immutable: NodeRepresentation,
22
+ t_immutable: NodeRepresentation,
23
+ ) => ShaderNodeObject<Node>;
24
+ export const mx_trilerp: (
25
+ v0_immutable: NodeRepresentation,
26
+ v1_immutable: NodeRepresentation,
27
+ v2_immutable: NodeRepresentation,
28
+ v3_immutable: NodeRepresentation,
29
+ v4_immutable: NodeRepresentation,
30
+ v5_immutable: NodeRepresentation,
31
+ v6_immutable: NodeRepresentation,
32
+ v7_immutable: NodeRepresentation,
33
+ s_immutable: NodeRepresentation,
34
+ t_immutable: NodeRepresentation,
35
+ r_immutable: NodeRepresentation,
36
+ ) => ShaderNodeObject<Node>;
37
+ export const mx_gradient_float: (
38
+ hash_immutable: NodeRepresentation,
39
+ x_immutable: NodeRepresentation,
40
+ y_immutable: NodeRepresentation,
41
+ z_immutable?: NodeRepresentation,
42
+ ) => ShaderNodeObject<Node>;
43
+ export const mx_gradient_vec3: (
44
+ hash_immutable: NodeRepresentation,
45
+ x_immutable: NodeRepresentation,
46
+ y_immutable: NodeRepresentation,
47
+ z_immutable?: NodeRepresentation,
48
+ ) => ShaderNodeObject<Node>;
49
+ export const mx_gradient_scale2d: (v_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
50
+ export const mx_gradient_scale3d: (v_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
51
+ export const mx_rotl32: (x_immutable: NodeRepresentation, k_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
52
+ export const mx_bjmix: (
53
+ a: ShaderNodeObject<VarNode>,
54
+ b: ShaderNodeObject<VarNode>,
55
+ c: ShaderNodeObject<VarNode>,
56
+ ) => ShaderNodeObject<Node>;
57
+ export const mx_bjfinal: (
58
+ a_immutable: NodeRepresentation,
59
+ b_immutable: NodeRepresentation,
60
+ c_immutable: NodeRepresentation,
61
+ ) => ShaderNodeObject<Node>;
62
+ export const mx_bits_to_01: (bits_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
63
+ export const mx_fade: (t_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
64
+ export const mx_hash_int: (
65
+ x_immutable: NodeRepresentation,
66
+ y_immutable?: NodeRepresentation,
67
+ z_immutable?: NodeRepresentation,
68
+ xx_immutable?: NodeRepresentation,
69
+ yy_immutable?: NodeRepresentation,
70
+ ) => ShaderNodeObject<Node>;
71
+ export const mx_hash_vec3: (
72
+ x_immutable: NodeRepresentation,
73
+ y_immutable: NodeRepresentation,
74
+ z_immutable?: NodeRepresentation,
75
+ ) => ShaderNodeObject<Node>;
76
+ export const mx_perlin_noise_float: (p_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
77
+ export const mx_perlin_noise_vec3: (p_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
78
+ export const mx_cell_noise_float: (p_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
79
+ export const mx_cell_noise_vec3: (p_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
80
+ export const mx_fractal_noise_float: (
81
+ p_immutable: NodeRepresentation,
82
+ octaves_immutable: NodeRepresentation,
83
+ lacunarity_immutable: NodeRepresentation,
84
+ diminish_immutable: NodeRepresentation,
85
+ ) => ShaderNodeObject<Node>;
86
+ export const mx_fractal_noise_vec3: (
87
+ p_immutable: NodeRepresentation,
88
+ octaves_immutable: NodeRepresentation,
89
+ lacunarity_immutable: NodeRepresentation,
90
+ diminish_immutable: NodeRepresentation,
91
+ ) => ShaderNodeObject<Node>;
92
+ export const mx_fractal_noise_vec2: (
93
+ p_immutable: NodeRepresentation,
94
+ octaves_immutable: NodeRepresentation,
95
+ lacunarity_immutable: NodeRepresentation,
96
+ diminish_immutable: NodeRepresentation,
97
+ ) => ShaderNodeObject<Node>;
98
+ export const mx_fractal_noise_vec4: (
99
+ p_immutable: NodeRepresentation,
100
+ octaves_immutable: NodeRepresentation,
101
+ lacunarity_immutable: NodeRepresentation,
102
+ diminish_immutable: NodeRepresentation,
103
+ ) => ShaderNodeObject<Node>;
104
+ export const mx_worley_distance: (
105
+ p_immutable: NodeRepresentation,
106
+ x_immutable: NodeRepresentation,
107
+ y_immutable: NodeRepresentation,
108
+ z_immutable: NodeRepresentation,
109
+ xoff_immutable: NodeRepresentation,
110
+ yoff_immutable: NodeRepresentation,
111
+ zoff_immutable: NodeRepresentation,
112
+ jitter_immutable: NodeRepresentation,
113
+ metric_immutable: NodeRepresentation,
114
+ ) => ShaderNodeObject<Node>;
115
+ export const mx_worley_noise_float: (
116
+ p_immutable: NodeRepresentation,
117
+ jitter_immutable: NodeRepresentation,
118
+ metric_immutable: NodeRepresentation,
119
+ ) => ShaderNodeObject<Node>;
120
+ export const mx_worley_noise_vec2: (
121
+ p_immutable: NodeRepresentation,
122
+ jitter_immutable: NodeRepresentation,
123
+ metric_immutable: NodeRepresentation,
124
+ ) => ShaderNodeObject<Node>;
125
+ export const mx_worley_noise_vec3: (
126
+ p_immutable: NodeRepresentation,
127
+ jitter_immutable: NodeRepresentation,
128
+ metric_immutable: NodeRepresentation,
129
+ ) => ShaderNodeObject<Node>;
@@ -0,0 +1,4 @@
1
+ import Node from "../../core/Node.js";
2
+ import { NodeRepresentation, ShaderNodeObject } from "../../shadernode/ShaderNode.js";
3
+
4
+ export const mx_srgb_texture_to_lin_rec709: (color_immutable: NodeRepresentation) => ShaderNodeObject<Node>;
@@ -53,8 +53,8 @@ export type Swizzable<T extends Node = Node> =
53
53
  export type ShaderNodeObject<T extends Node> =
54
54
  & T
55
55
  & {
56
- [Key in keyof NodeElements]: NodeElements[Key] extends (node: T, ...args: infer Args) => infer R
57
- ? (...args: Args) => R
56
+ [Key in keyof NodeElements]: T extends { [K in Key]: infer M } ? M
57
+ : NodeElements[Key] extends (node: T, ...args: infer Args) => infer R ? (...args: Args) => R
58
58
  : never;
59
59
  }
60
60
  & Swizzable<T>;
@@ -198,9 +198,12 @@ export function nodeImmutable<T>(
198
198
  ): ShaderNodeObject<ConstructedNode<T>>;
199
199
 
200
200
  export function tslFn<R extends Node = ShaderNodeObject<Node>>(jsFunc: () => R): () => R;
201
+ export function tslFn<T extends any[], R extends Node = ShaderNodeObject<Node>>(
202
+ jsFunc: (args: T) => R,
203
+ ): (...args: ProxiedTuple<T>) => R;
201
204
  export function tslFn<T extends AnyObject, R extends Node = ShaderNodeObject<Node>>(
202
205
  jsFunc: (args: T) => R,
203
- ): (args: T) => R;
206
+ ): (args: ProxiedObject<T>) => R;
204
207
 
205
208
  export function append(node: Node): Node;
206
209
 
@@ -0,0 +1,10 @@
1
+ import { Mesh, Object3D, Vector3Like } from "three";
2
+
3
+ export interface JoltPhysicsObject {
4
+ addScene: (scene: Object3D) => void;
5
+ addMesh: (mesh: Mesh, mass?: number, restitution?: number) => void;
6
+ setMeshPosition: (mesh: Mesh, position: Vector3Like, index?: number) => void;
7
+ setMeshVelocity: (mesh: Mesh, velocity: Vector3Like, index?: number) => void;
8
+ }
9
+
10
+ export function JoltPhysics(): Promise<JoltPhysicsObject>;
@@ -0,0 +1,33 @@
1
+ import { Camera, Object3D, ShaderMaterial, Texture, WebGLRenderer, WebGLRenderTarget } from "three";
2
+ import { FullScreenQuad, Pass } from "./Pass.js";
3
+
4
+ export class RenderTransitionPass extends Pass {
5
+ material: ShaderMaterial;
6
+ fsQuad: FullScreenQuad;
7
+
8
+ sceneA: Object3D;
9
+ cameraA: Camera;
10
+ sceneB: Object3D;
11
+ cameraB: Camera;
12
+
13
+ renderTargetA: WebGLRenderTarget;
14
+ renderTargetB: WebGLRenderTarget;
15
+
16
+ constructor(sceneA: Object3D, cameraA: Camera, sceneB: Object3D, cameraB: Camera);
17
+
18
+ setTransition(value: number): void;
19
+
20
+ useTexture(value: boolean): void;
21
+
22
+ setTexture(value: Texture | null): void;
23
+
24
+ setTextureThreshold(value: number): void;
25
+
26
+ setSize(width: number, height: number): void;
27
+
28
+ render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget): void;
29
+
30
+ dispose(): void;
31
+
32
+ createMaterial(): ShaderMaterial;
33
+ }
@@ -97,14 +97,14 @@ export default class Renderer {
97
97
 
98
98
  clippingPlanes: readonly Plane[];
99
99
 
100
+ toneMappingNode: Node | null;
101
+
100
102
  info: Info;
101
103
 
102
104
  shadowMap: { enabled: boolean; type: ShadowMapType };
103
105
 
104
106
  xr: { enabled: boolean };
105
107
 
106
- toneMappingNode?: Node;
107
-
108
108
  localClippingEnabled?: boolean;
109
109
 
110
110
  constructor(backend: Backend, parameters?: RendererParameters);
@@ -252,9 +252,9 @@ export default class Renderer {
252
252
 
253
253
  dispose(): void;
254
254
 
255
- setRenderTarget(renderTarget: RenderTarget, activeCubeFace?: number, activeMipmapLevel?: number): void;
255
+ setRenderTarget(renderTarget: RenderTarget | null, activeCubeFace?: number, activeMipmapLevel?: number): void;
256
256
 
257
- getRenderTarget(): RenderTarget;
257
+ getRenderTarget(): RenderTarget | null;
258
258
 
259
259
  setRenderObjectFunction(renderObjectFunction: () => {}): void;
260
260
 
@@ -265,6 +265,8 @@ export default class Renderer {
265
265
  */
266
266
  computeAsync(computeNodes: ComputeNode | ComputeNode[]): Promise<void>;
267
267
 
268
+ hasFeatureAsync(name: string): Promise<boolean>;
269
+
268
270
  hasFeature(name: string): boolean;
269
271
 
270
272
  copyFramebufferToTexture(framebufferTexture: FramebufferTexture): void;
@@ -277,6 +279,7 @@ export default class Renderer {
277
279
  y: number,
278
280
  width: number,
279
281
  height: number,
282
+ index?: number,
280
283
  ): Promise<Float32Array | Uint16Array | Uint8Array | Int8Array | Int16Array | Uint32Array | Int32Array>;
281
284
 
282
285
  renderObject(
@@ -31,3 +31,21 @@ export function reduceVertices<TValue>(
31
31
  func: (value: TValue, vertex: Vector3) => TValue,
32
32
  initialValue: TValue,
33
33
  ): TValue;
34
+
35
+ /**
36
+ * @param object Object to traverse.
37
+ * @yields Objects that passed the filter condition.
38
+ */
39
+ export function traverseGenerator(object: Object3D): Generator<Object3D, void, unknown>;
40
+
41
+ /**
42
+ * @param object Object to traverse.
43
+ * @yields Objects that passed the filter condition.
44
+ */
45
+ export function traverseVisibleGenerator(object: Object3D): Generator<Object3D, void, unknown>;
46
+
47
+ /**
48
+ * @param object Object to traverse.
49
+ * @yields Objects that passed the filter condition.
50
+ */
51
+ export function traverseAncestorsGenerator(object: Object3D): Generator<Object3D, void, unknown>;
@@ -1,14 +1,17 @@
1
- import { Mesh, Object3D, Texture, Vector3 } from "three";
1
+ import { Loader, Mesh, Object3D, Texture, Vector3 } from "three";
2
+ import { GLTF } from "../loaders/GLTFLoader.js";
2
3
  import { XRHandMeshModel } from "./XRHandMeshModel.js";
3
4
 
4
5
  export class OculusHandModel extends Object3D {
5
6
  controller: Object3D;
6
7
  motionController: XRHandMeshModel | null;
7
8
  envMap: Texture | null;
9
+ loader: Loader<GLTF> | null;
10
+ onLoad?: ((object: Object3D) => void) | null;
8
11
 
9
12
  mesh: Mesh | null;
10
13
 
11
- constructor(controller: Object3D);
14
+ constructor(controller: Object3D, loader?: Loader<GLTF> | null, onLoad?: ((object: Object3D) => void) | null);
12
15
 
13
16
  updateMatrixWorld(force?: boolean): void;
14
17
 
@@ -1,5 +1,6 @@
1
- import { Group, Object3D } from "three";
1
+ import { Group, Loader, Object3D } from "three";
2
2
 
3
+ import { GLTF } from "../loaders/GLTFLoader.js";
3
4
  import { XRHandMeshModel } from "./XRHandMeshModel.js";
4
5
  import { XRHandPrimitiveModel, XRHandPrimitiveModelOptions } from "./XRHandPrimitiveModel.js";
5
6
 
@@ -12,9 +13,14 @@ export class XRHandModel extends Object3D {
12
13
  }
13
14
 
14
15
  export class XRHandModelFactory {
16
+ gltfLoader: Loader<GLTF> | null;
15
17
  path: string | null;
18
+ onLoad?: ((object: Object3D) => void) | null;
16
19
 
17
- constructor();
20
+ constructor(
21
+ gltfLoader?: Loader<GLTF> | null,
22
+ onLoad?: ((object: Object3D) => void) | null,
23
+ );
18
24
 
19
25
  setPath(path: string | null): this;
20
26
 
three/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/three",
3
- "version": "0.163.0",
3
+ "version": "0.164.0",
4
4
  "description": "TypeScript definitions for three",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/three",
6
6
  "license": "MIT",
@@ -45,6 +45,6 @@
45
45
  "fflate": "~0.8.2",
46
46
  "meshoptimizer": "~0.18.1"
47
47
  },
48
- "typesPublisherContentHash": "9f0e97bd23c86f0c0c2d025de530532214c74995254c55868863ffb17e00963a",
48
+ "typesPublisherContentHash": "58c6d9927d6ac01a5c65fdd023a998d808d352da3e1d79f7bb0b3b290f2d5443",
49
49
  "typeScriptVersion": "4.7"
50
50
  }
@@ -617,10 +617,11 @@ export class Object3D<TEventMap extends Object3DEventMap = Object3DEventMap> ext
617
617
  clone(recursive?: boolean): this;
618
618
 
619
619
  /**
620
- * Copy the given object into this object
621
- * @remarks Note: event listeners and user-defined callbacks ({@link onAfterRender | .onAfterRender} and {@link onBeforeRender | .onBeforeRender}) are not copied.
622
- * @param source
623
- * @param recursive If true, descendants of the object are also copied. Default `true`
620
+ * Copies the given object into this object.
621
+ * @remarks Event listeners and user-defined callbacks ({@link .onAfterRender} and {@link .onBeforeRender}) are not copied.
622
+ * @param object
623
+ * @param recursive If set to `true`, descendants of the object are copied next to the existing ones. If set to
624
+ * `false`, descendants are left unchanged. Default is `true`.
624
625
  */
625
- copy(source: this, recursive?: boolean): this;
626
+ copy(object: Object3D, recursive?: boolean): this;
626
627
  }
@@ -16,15 +16,17 @@ export interface RenderTargetOptions {
16
16
  wrapT?: Wrapping | undefined;
17
17
  magFilter?: MagnificationTextureFilter | undefined;
18
18
  minFilter?: MinificationTextureFilter | undefined;
19
- generateMipmaps?: boolean | undefined; // true;
20
- format?: number | undefined; // RGBAFormat;
21
- type?: TextureDataType | undefined; // UnsignedByteType;
22
- anisotropy?: number | undefined; // 1;
19
+ generateMipmaps?: boolean | undefined; // true
20
+ format?: number | undefined; // RGBAFormat
21
+ type?: TextureDataType | undefined; // UnsignedByteType
22
+ anisotropy?: number | undefined; // 1
23
23
  colorSpace?: ColorSpace | undefined;
24
- internalFormat?: PixelFormatGPU | null | undefined;
25
- depthBuffer?: boolean | undefined; // true;
26
- stencilBuffer?: boolean | undefined; // false;
27
- depthTexture?: DepthTexture | undefined;
24
+ internalFormat?: PixelFormatGPU | null | undefined; // null
25
+ depthBuffer?: boolean | undefined; // true
26
+ stencilBuffer?: boolean | undefined; // false
27
+ resolveDepthBuffer?: boolean | undefined; // true
28
+ resolveStencilBuffer?: boolean | undefined; // true
29
+ depthTexture?: DepthTexture | null | undefined; // null
28
30
  /**
29
31
  * Defines the count of MSAA samples. Can only be used with WebGL 2. Default is **0**.
30
32
  * @default 0
@@ -54,14 +56,27 @@ export class RenderTarget<TTexture extends Texture | Texture[] = Texture> extend
54
56
  depthBuffer: boolean;
55
57
 
56
58
  /**
57
- * @default true
59
+ * @default false
58
60
  */
59
61
  stencilBuffer: boolean;
60
62
 
63
+ /**
64
+ * Defines whether the depth buffer should be resolved when rendering into a multisampled render target.
65
+ * @default true
66
+ */
67
+ resolveDepthBuffer: boolean;
68
+
69
+ /**
70
+ * Defines whether the stencil buffer should be resolved when rendering into a multisampled render target.
71
+ * This property has no effect when {@link .resolveDepthBuffer} is set to `false`.
72
+ * @default true
73
+ */
74
+ resolveStencilBuffer: boolean;
75
+
61
76
  /**
62
77
  * @default null
63
78
  */
64
- depthTexture: DepthTexture;
79
+ depthTexture: DepthTexture | null;
65
80
 
66
81
  /**
67
82
  * Defines the count of MSAA samples. Can only be used with WebGL 2. Default is **0**.