@types/three 0.171.0 → 0.173.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 (152) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/Addons.d.ts +0 -5
  3. three/examples/jsm/controls/ArcballControls.d.ts +1 -1
  4. three/examples/jsm/controls/OrbitControls.d.ts +5 -0
  5. three/examples/jsm/csm/CSMShadowNode.d.ts +2 -3
  6. three/examples/jsm/geometries/TextGeometry.d.ts +0 -8
  7. three/examples/jsm/helpers/VertexNormalsHelper.d.ts +2 -0
  8. three/examples/jsm/interactive/InteractiveGroup.d.ts +9 -1
  9. three/examples/jsm/lines/LineSegments2.d.ts +3 -1
  10. three/examples/jsm/materials/MeshGouraudMaterial.d.ts +3 -0
  11. three/examples/jsm/modifiers/CurveModifier.d.ts +1 -1
  12. three/examples/jsm/modifiers/CurveModifierGPU.d.ts +1 -1
  13. three/examples/jsm/postprocessing/OutlinePass.d.ts +1 -1
  14. three/examples/jsm/postprocessing/UnrealBloomPass.d.ts +1 -1
  15. three/examples/jsm/utils/ShadowMapViewer.d.ts +2 -2
  16. three/examples/jsm/webxr/XRButton.d.ts +4 -2
  17. three/package.json +2 -2
  18. three/src/Three.Core.d.ts +4 -1
  19. three/src/Three.TSL.d.ts +18 -5
  20. three/src/Three.WebGPU.Nodes.d.ts +2 -2
  21. three/src/Three.WebGPU.d.ts +2 -2
  22. three/src/animation/AnimationClip.d.ts +1 -1
  23. three/src/cameras/ArrayCamera.d.ts +7 -6
  24. three/src/cameras/Camera.d.ts +7 -7
  25. three/src/cameras/CubeCamera.d.ts +19 -2
  26. three/src/constants.d.ts +6 -0
  27. three/src/core/BufferAttribute.d.ts +5 -0
  28. three/src/core/RenderTarget.d.ts +3 -5
  29. three/src/core/RenderTarget3D.d.ts +9 -0
  30. three/src/core/RenderTargetArray.d.ts +9 -0
  31. three/src/materials/Material.d.ts +3 -1
  32. three/src/materials/MeshDepthMaterial.d.ts +0 -5
  33. three/src/materials/MeshDistanceMaterial.d.ts +0 -5
  34. three/src/materials/nodes/Line2NodeMaterial.d.ts +1 -0
  35. three/src/materials/nodes/MeshSSSNodeMaterial.d.ts +6 -6
  36. three/src/materials/nodes/NodeMaterial.d.ts +3 -0
  37. three/src/materials/nodes/NodeMaterials.d.ts +0 -4
  38. three/src/materials/nodes/PointsNodeMaterial.d.ts +7 -14
  39. three/src/materials/nodes/manager/NodeMaterialObserver.d.ts +57 -0
  40. three/src/math/Matrix4.d.ts +2 -1
  41. three/src/nodes/Nodes.d.ts +6 -7
  42. three/src/nodes/TSL.d.ts +6 -3
  43. three/src/nodes/accessors/Arrays.d.ts +10 -2
  44. three/src/nodes/accessors/BufferAttributeNode.d.ts +117 -0
  45. three/src/nodes/accessors/BufferNode.d.ts +4 -4
  46. three/src/nodes/accessors/Camera.d.ts +1 -0
  47. three/src/nodes/accessors/MaterialNode.d.ts +6 -6
  48. three/src/nodes/accessors/ModelNode.d.ts +10 -2
  49. three/src/nodes/accessors/ModelViewProjectionNode.d.ts +2 -6
  50. three/src/nodes/accessors/StorageBufferNode.d.ts +12 -4
  51. three/src/nodes/accessors/TextureNode.d.ts +5 -0
  52. three/src/nodes/accessors/UniformArrayNode.d.ts +3 -2
  53. three/src/nodes/core/ArrayNode.d.ts +26 -0
  54. three/src/nodes/core/Node.d.ts +245 -0
  55. three/src/nodes/core/NodeAttribute.d.ts +13 -0
  56. three/src/nodes/core/NodeBuilder.d.ts +1 -2
  57. three/src/nodes/core/NodeCache.d.ts +23 -1
  58. three/src/nodes/core/NodeParser.d.ts +11 -0
  59. three/src/nodes/core/NodeUniform.d.ts +28 -0
  60. three/src/nodes/core/NodeVar.d.ts +18 -2
  61. three/src/nodes/core/NodeVarying.d.ts +14 -0
  62. three/src/nodes/core/StructNode.d.ts +21 -0
  63. three/src/nodes/core/StructType.d.ts +8 -0
  64. three/src/nodes/core/StructTypeNode.d.ts +41 -4
  65. three/src/nodes/core/UniformNode.d.ts +44 -0
  66. three/src/nodes/core/VarNode.d.ts +8 -1
  67. three/src/nodes/core/VaryingNode.d.ts +12 -0
  68. three/src/nodes/core/constants.d.ts +35 -0
  69. three/src/nodes/display/PassNode.d.ts +1 -1
  70. three/src/nodes/fog/Fog.d.ts +26 -0
  71. three/src/nodes/geometry/RangeNode.d.ts +6 -11
  72. three/src/nodes/gpgpu/AtomicFunctionNode.d.ts +5 -0
  73. three/src/nodes/gpgpu/ComputeBuiltinNode.d.ts +1 -0
  74. three/src/nodes/gpgpu/ComputeNode.d.ts +6 -1
  75. three/src/nodes/gpgpu/WorkgroupInfoNode.d.ts +2 -0
  76. three/src/nodes/lighting/ShadowBaseNode.d.ts +15 -0
  77. three/src/nodes/lighting/ShadowNode.d.ts +2 -1
  78. three/src/nodes/math/MathNode.d.ts +15 -4
  79. three/src/nodes/math/OperatorNode.d.ts +2 -0
  80. three/src/nodes/shapes/Shapes.d.ts +4 -0
  81. three/src/nodes/tsl/TSLBase.d.ts +1 -0
  82. three/src/nodes/tsl/TSLCore.d.ts +62 -17
  83. three/src/nodes/utils/EquirectUVNode.d.ts +2 -2
  84. three/src/nodes/utils/LoopNode.d.ts +23 -2
  85. three/src/nodes/utils/MemberNode.d.ts +11 -0
  86. three/src/objects/BatchedMesh.d.ts +1 -0
  87. three/src/objects/ClippingGroup.d.ts +1 -1
  88. three/src/objects/InstancedMesh.d.ts +4 -3
  89. three/src/renderers/WebGLRenderer.d.ts +10 -10
  90. three/src/renderers/common/Animation.d.ts +43 -1
  91. three/src/renderers/common/Attributes.d.ts +31 -0
  92. three/src/renderers/common/Backend.d.ts +11 -0
  93. three/src/renderers/common/Background.d.ts +22 -0
  94. three/src/renderers/common/BindGroup.d.ts +15 -0
  95. three/src/renderers/common/Binding.d.ts +24 -0
  96. three/src/renderers/common/Bindings.d.ts +54 -0
  97. three/src/renderers/common/Buffer.d.ts +31 -0
  98. three/src/renderers/common/BufferUtils.d.ts +26 -0
  99. three/src/renderers/common/BundleGroup.d.ts +22 -0
  100. three/src/renderers/common/ChainMap.d.ts +33 -3
  101. three/src/renderers/common/ClippingContext.d.ts +45 -0
  102. three/src/renderers/common/Color4.d.ts +40 -0
  103. three/src/renderers/common/ComputePipeline.d.ts +12 -0
  104. three/src/renderers/common/CubeRenderTarget.d.ts +13 -0
  105. three/src/renderers/common/DataMap.d.ts +30 -0
  106. three/src/renderers/common/Geometries.d.ts +52 -0
  107. three/src/renderers/common/Info.d.ts +21 -5
  108. three/src/renderers/common/Pipeline.d.ts +11 -0
  109. three/src/renderers/common/Pipelines.d.ts +104 -0
  110. three/src/renderers/common/PostProcessing.d.ts +1 -1
  111. three/src/renderers/common/ProgrammableStage.d.ts +19 -1
  112. three/src/renderers/common/RenderBundle.d.ts +15 -4
  113. three/src/renderers/common/RenderBundles.d.ts +20 -2
  114. three/src/renderers/common/RenderContext.d.ts +27 -3
  115. three/src/renderers/common/RenderContexts.d.ts +37 -6
  116. three/src/renderers/common/RenderList.d.ts +85 -0
  117. three/src/renderers/common/RenderLists.d.ts +21 -0
  118. three/src/renderers/common/RenderObject.d.ts +163 -4
  119. three/src/renderers/common/RenderObjects.d.ts +53 -0
  120. three/src/renderers/common/RenderPipeline.d.ts +13 -0
  121. three/src/renderers/common/Renderer.d.ts +604 -10
  122. three/src/renderers/common/{PostProcessingUtils.d.ts → RendererUtils.d.ts} +16 -4
  123. three/src/renderers/common/StorageBufferAttribute.d.ts +1 -1
  124. three/src/renderers/common/Textures.d.ts +66 -0
  125. three/src/renderers/common/TimestampQueryPool.d.ts +31 -0
  126. three/src/renderers/common/Uniform.d.ts +133 -1
  127. three/src/renderers/common/UniformBuffer.d.ts +12 -0
  128. three/src/renderers/common/UniformsGroup.d.ts +103 -0
  129. three/src/renderers/common/XRManager.d.ts +196 -0
  130. three/src/renderers/common/XRRenderTarget.d.ts +23 -0
  131. three/src/renderers/common/nodes/NodeBuilderState.d.ts +32 -2
  132. three/src/renderers/common/nodes/NodeLibrary.d.ts +71 -0
  133. three/src/renderers/common/nodes/NodeUniform.d.ts +185 -0
  134. three/src/renderers/common/nodes/NodeUniformsGroup.d.ts +14 -2
  135. three/src/renderers/common/nodes/Nodes.d.ts +192 -17
  136. three/src/renderers/webgpu/WebGPUBackend.d.ts +2 -1
  137. three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts +10 -0
  138. three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +11 -0
  139. three/src/textures/DataTexture.d.ts +2 -2
  140. three/src/textures/Texture.d.ts +5 -5
  141. three/src/textures/VideoFrameTexture.d.ts +27 -0
  142. three/examples/jsm/animation/MMDAnimationHelper.d.ts +0 -99
  143. three/examples/jsm/animation/MMDPhysics.d.ts +0 -128
  144. three/examples/jsm/exporters/MMDExporter.d.ts +0 -11
  145. three/examples/jsm/loaders/MMDLoader.d.ts +0 -60
  146. three/examples/jsm/shaders/MMDToonShader.d.ts +0 -15
  147. three/src/Three.Legacy.d.ts +0 -20
  148. three/src/materials/nodes/InstancedPointsNodeMaterial.d.ts +0 -33
  149. three/src/nodes/core/UniformGroup.d.ts +0 -7
  150. three/src/nodes/fog/FogExp2Node.d.ts +0 -14
  151. three/src/nodes/fog/FogNode.d.ts +0 -20
  152. three/src/nodes/fog/FogRangeNode.d.ts +0 -19
@@ -33,20 +33,37 @@ interface ComputeNodeData {
33
33
  }
34
34
  interface SceneData {
35
35
  background?: Color | Texture | CubeTexture | undefined;
36
- backgroundNode?: Node | undefined;
36
+ backgroundNode?: ShaderNodeObject<Node> | undefined;
37
37
  fog?: Fog | FogExp2 | undefined;
38
- fogNode?: Node | undefined;
38
+ fogNode?: ShaderNodeObject<Node> | undefined;
39
39
  environment?: Texture | undefined;
40
- environmentNode?: Node | undefined;
40
+ environmentNode?: ShaderNodeObject<Node> | undefined;
41
+ }
42
+ interface CacheKeyData {
43
+ callId: number;
44
+ cacheKey: number;
41
45
  }
42
46
  declare module "../../../scenes/Scene.js" {
43
47
  interface Scene {
44
- environmentNode?: Node | null | undefined;
45
- backgroundNode?: Node | null | undefined;
46
- fogNode?: Node | null | undefined;
48
+ environmentNode?: ShaderNodeObject<Node> | null | undefined;
49
+ backgroundNode?: ShaderNodeObject<Node> | null | undefined;
50
+ fogNode?: ShaderNodeObject<Node> | null | undefined;
47
51
  }
48
52
  }
53
+ /**
54
+ * This renderer module manages node-related objects and is the
55
+ * primary interface between the renderer and the node system.
56
+ *
57
+ * @private
58
+ * @augments DataMap
59
+ */
49
60
  declare class Nodes extends DataMap<{
61
+ /**
62
+ * Constructs a new nodes management component.
63
+ *
64
+ * @param {Renderer} renderer - The renderer.
65
+ * @param {Backend} backend - The renderer's backend.
66
+ */
50
67
  nodeUniformsGroup: {
51
68
  key: NodeUniformsGroup;
52
69
  value: NodeUniformsGroupData;
@@ -68,30 +85,136 @@ declare class Nodes extends DataMap<{
68
85
  backend: Backend;
69
86
  nodeFrame: NodeFrame;
70
87
  nodeBuilderCache: Map<string, NodeBuilderState>;
71
- callHashCache: ChainMap<readonly [Scene, LightsNode], {
72
- callId: number;
73
- cacheKey: string;
74
- }>;
88
+ callHashCache: ChainMap<readonly [Scene, LightsNode], CacheKeyData>;
75
89
  groupsData: ChainMap<readonly [UniformGroupNode, NodeUniformsGroup], {
76
90
  version?: number;
77
91
  }>;
92
+ cacheLib: {
93
+ [type: string]: WeakMap<object, ShaderNodeObject<Node> | undefined>;
94
+ };
78
95
  constructor(renderer: Renderer, backend: Backend);
96
+ /**
97
+ * Returns `true` if the given node uniforms group must be updated or not.
98
+ *
99
+ * @param {NodeUniformsGroup} nodeUniformsGroup - The node uniforms group.
100
+ * @return {Boolean} Whether the node uniforms group requires an update or not.
101
+ */
79
102
  updateGroup(nodeUniformsGroup: NodeUniformsGroup): boolean;
103
+ /**
104
+ * Returns the cache key for the given render object.
105
+ *
106
+ * @param {RenderObject} renderObject - The render object.
107
+ * @return {Number} The cache key.
108
+ */
80
109
  getForRenderCacheKey(renderObject: RenderObject): string;
110
+ /**
111
+ * Returns a node builder state for the given render object.
112
+ *
113
+ * @param {RenderObject} renderObject - The render object.
114
+ * @return {NodeBuilderState} The node builder state.
115
+ */
81
116
  getForRender(renderObject: RenderObject): NodeBuilderState;
117
+ /**
118
+ * Deletes the given object from the internal data map
119
+ *
120
+ * @param {Any} object - The object to delete.
121
+ * @return {Object?} The deleted dictionary.
122
+ */
82
123
  delete(
83
124
  object: NodeUniformsGroup | RenderObject | ComputeNode | Scene,
84
- ): SceneData | RenderObjectData | NodeUniformsGroupData | ComputeNodeData;
125
+ ): RenderObjectData | NodeUniformsGroupData | ComputeNodeData | SceneData;
126
+ /**
127
+ * Returns a node builder state for the given compute node.
128
+ *
129
+ * @param {Node} computeNode - The compute node.
130
+ * @return {NodeBuilderState} The node builder state.
131
+ */
85
132
  getForCompute(computeNode: ComputeNode): NodeBuilderState;
133
+ /**
134
+ * Creates a node builder state for the given node builder.
135
+ *
136
+ * @private
137
+ * @param {NodeBuilder} nodeBuilder - The node builder.
138
+ * @return {NodeBuilderState} The node builder state.
139
+ */
86
140
  _createNodeBuilderState(nodeBuilder: NodeBuilder): NodeBuilderState;
87
- getEnvironmentNode(scene: Scene): Node | null;
88
- getBackgroundNode(scene: Scene): Node | null;
89
- getFogNode(scene: Scene): Node | null;
90
- getCacheKey(scene: Scene, lightsNode: LightsNode): string;
91
- updateScene(scene: Scene): void;
141
+ /**
142
+ * Returns an environment node for the current configured
143
+ * scene environment.
144
+ *
145
+ * @param {Scene} scene - The scene.
146
+ * @return {Node} A node representing the current scene environment.
147
+ */
148
+ getEnvironmentNode(scene: Scene): ShaderNodeObject<Node> | null;
149
+ /**
150
+ * Returns a background node for the current configured
151
+ * scene background.
152
+ *
153
+ * @param {Scene} scene - The scene.
154
+ * @return {Node} A node representing the current scene background.
155
+ */
156
+ getBackgroundNode(scene: Scene): ShaderNodeObject<Node> | null;
157
+ /**
158
+ * Returns a fog node for the current configured scene fog.
159
+ *
160
+ * @param {Scene} scene - The scene.
161
+ * @return {Node} A node representing the current scene fog.
162
+ */
163
+ getFogNode(scene: Scene): ShaderNodeObject<Node> | null;
164
+ /**
165
+ * Returns a cache key for the given scene and lights node.
166
+ * This key is used by `RenderObject` as a part of the dynamic
167
+ * cache key (a key that must be checked every time the render
168
+ * objects is drawn).
169
+ *
170
+ * @param {Scene} scene - The scene.
171
+ * @param {LightsNode} lightsNode - The lights node.
172
+ * @return {Number} The cache key.
173
+ */
174
+ getCacheKey(scene: Scene, lightsNode: LightsNode): number;
175
+ /**
176
+ * A boolean that indicates whether tone mapping should be enabled
177
+ * or not.
178
+ *
179
+ * @type {Boolean}
180
+ */
92
181
  get isToneMappingState(): boolean;
182
+ /**
183
+ * If a scene background is configured, this method makes sure to
184
+ * represent the background with a corresponding node-based implementation.
185
+ *
186
+ * @param {Scene} scene - The scene.
187
+ */
93
188
  updateBackground(scene: Scene): void;
189
+ /**
190
+ * This method is part of the caching of nodes which are used to represents the
191
+ * scene's background, fog or environment.
192
+ *
193
+ * @param {String} type - The type of object to cache.
194
+ * @param {Object} object - The object.
195
+ * @param {Function} callback - A callback that produces a node representation for the given object.
196
+ * @param {Boolean} [forceUpdate=false] - Whether an update should be enforced or not.
197
+ * @return {Node} The node representation.
198
+ */
199
+ getCacheNode(
200
+ type: string,
201
+ object: object,
202
+ callback: () => ShaderNodeObject<Node> | undefined,
203
+ forceUpdate?: boolean,
204
+ ): ShaderNodeObject<Node> | undefined;
205
+ /**
206
+ * If a scene fog is configured, this method makes sure to
207
+ * represent the fog with a corresponding node-based implementation.
208
+ *
209
+ * @param {Scene} scene - The scene.
210
+ */
94
211
  updateFog(scene: Scene): void;
212
+ /**
213
+ * If a scene environment is configured, this method makes sure to
214
+ * represent the environment with a corresponding node-based implementation.
215
+ *
216
+ * @param {Scene} scene - The scene.
217
+ */
95
218
  updateEnvironment(scene: Scene): void;
96
219
  getNodeFrame(
97
220
  renderer?: Renderer,
@@ -101,14 +224,66 @@ declare class Nodes extends DataMap<{
101
224
  material?: Material | null,
102
225
  ): NodeFrame;
103
226
  getNodeFrameForRender(renderObject: RenderObject): NodeFrame;
227
+ /**
228
+ * Returns the current output cache key.
229
+ *
230
+ * @return {String} The output cache key.
231
+ */
104
232
  getOutputCacheKey(): string;
233
+ /**
234
+ * Checks if the output configuration (tone mapping and color space) for
235
+ * the given target has changed.
236
+ *
237
+ * @param {Texture} outputTarget - The output target.
238
+ * @return {Boolean} Whether the output configuration has changed or not.
239
+ */
105
240
  hasOutputChange(outputTarget: Texture): boolean;
106
- getOutputNode(outputTexture: Texture): ShaderNodeObject<Node>;
241
+ /**
242
+ * Returns a node that represents the output configuration (tone mapping and
243
+ * color space) for the current target.
244
+ *
245
+ * @param {Texture} outputTarget - The output target.
246
+ * @return {Node} The output node.
247
+ */
248
+ getOutputNode(outputTarget: Texture): ShaderNodeObject<Node>;
249
+ /**
250
+ * Triggers the call of `updateBefore()` methods
251
+ * for all nodes of the given render object.
252
+ *
253
+ * @param {RenderObject} renderObject - The render object.
254
+ */
107
255
  updateBefore(renderObject: RenderObject): void;
256
+ /**
257
+ * Triggers the call of `updateAfter()` methods
258
+ * for all nodes of the given render object.
259
+ *
260
+ * @param {RenderObject} renderObject - The render object.
261
+ */
108
262
  updateAfter(renderObject: RenderObject): void;
263
+ /**
264
+ * Triggers the call of `update()` methods
265
+ * for all nodes of the given compute node.
266
+ *
267
+ * @param {Node} computeNode - The compute node.
268
+ */
109
269
  updateForCompute(computeNode: ComputeNode): void;
270
+ /**
271
+ * Triggers the call of `update()` methods
272
+ * for all nodes of the given compute node.
273
+ *
274
+ * @param {RenderObject} renderObject - The render object.
275
+ */
110
276
  updateForRender(renderObject: RenderObject): void;
277
+ /**
278
+ * Returns `true` if the given render object requires a refresh.
279
+ *
280
+ * @param {RenderObject} renderObject - The render object.
281
+ * @return {Boolean} Whether the given render object requires a refresh or not.
282
+ */
111
283
  needsRefresh(renderObject: RenderObject): boolean;
284
+ /**
285
+ * Frees the internal resources.
286
+ */
112
287
  dispose(): void;
113
288
  }
114
289
  export default Nodes;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="@webgpu/types" />
2
2
 
3
- import { CoordinateSystem } from "../../constants.js";
3
+ import { CoordinateSystem, HalfFloatType, UnsignedByteType } from "../../constants.js";
4
4
  import Backend, { BackendParameters } from "../common/Backend.js";
5
5
 
6
6
  export interface WebGPUBackendParameters extends BackendParameters {
@@ -10,6 +10,7 @@ export interface WebGPUBackendParameters extends BackendParameters {
10
10
  device?: GPUDevice | undefined;
11
11
  powerPreference?: GPUPowerPreference | undefined;
12
12
  context?: GPUCanvasContext | undefined;
13
+ outputType?: typeof UnsignedByteType | typeof HalfFloatType | undefined;
13
14
  }
14
15
 
15
16
  export default class WebGPUBackend extends Backend {
@@ -1,5 +1,15 @@
1
1
  import NodeLibrary from "../../common/nodes/NodeLibrary.js";
2
+ /**
3
+ * This version of a node library represents a basic version
4
+ * just focusing on lights and tone mapping techniques.
5
+ *
6
+ * @private
7
+ * @augments NodeLibrary
8
+ */
2
9
  declare class BasicNodeLibrary extends NodeLibrary {
10
+ /**
11
+ * Constructs a new basic node library.
12
+ */
3
13
  constructor();
4
14
  }
5
15
  export default BasicNodeLibrary;
@@ -1,5 +1,16 @@
1
1
  import NodeLibrary from "../../common/nodes/NodeLibrary.js";
2
+ /**
3
+ * This version of a node library represents the standard version
4
+ * used in {@link WebGPURenderer}. It maps lights, tone mapping
5
+ * techniques and materials to node-based implementations.
6
+ *
7
+ * @private
8
+ * @augments NodeLibrary
9
+ */
2
10
  declare class StandardNodeLibrary extends NodeLibrary {
11
+ /**
12
+ * Constructs a new standard node library.
13
+ */
3
14
  constructor();
4
15
  }
5
16
  export default StandardNodeLibrary;
@@ -51,7 +51,7 @@ export class DataTexture extends Texture {
51
51
  * @param colorSpace See {@link Texture.colorSpace | .colorSpace}. Default {@link NoColorSpace}
52
52
  */
53
53
  constructor(
54
- data?: BufferSource | null,
54
+ data?: ArrayBufferView | null,
55
55
  width?: number,
56
56
  height?: number,
57
57
  format?: PixelFormat,
@@ -111,7 +111,7 @@ export class DataTexture extends Texture {
111
111
  }
112
112
 
113
113
  export interface TextureImageData {
114
- data: Uint8Array | Uint8ClampedArray;
114
+ data: ArrayBufferView;
115
115
  height: number;
116
116
  width: number;
117
117
  }
@@ -10,6 +10,7 @@ import {
10
10
  Wrapping,
11
11
  } from "../constants.js";
12
12
  import { EventDispatcher } from "../core/EventDispatcher.js";
13
+ import { RenderTarget } from "../core/RenderTarget.js";
13
14
  import { Matrix3 } from "../math/Matrix3.js";
14
15
  import { Vector2 } from "../math/Vector2.js";
15
16
  import { CompressedTextureMipmap } from "./CompressedTexture.js";
@@ -426,6 +427,8 @@ export class Texture extends EventDispatcher<{ dispose: {} }> {
426
427
  */
427
428
  static DEFAULT_MAPPING: Mapping;
428
429
 
430
+ renderTarget: RenderTarget | null;
431
+
429
432
  /**
430
433
  * A callback function, called when the texture is updated _(e.g., when needsUpdate has been set to true and then the texture is used)_.
431
434
  */
@@ -452,11 +455,8 @@ export class Texture extends EventDispatcher<{ dispose: {} }> {
452
455
  updateMatrix(): void;
453
456
 
454
457
  /**
455
- * Make copy of the texture
456
- * @remarks Note this is not a **"deep copy"**, the image is shared
457
- * @remarks
458
- * Besides, cloning a texture does not automatically mark it for a texture upload
459
- * You have to set {@link needsUpdate | .needsUpdate} to `true` as soon as it's image property (the data source) is fully loaded or ready.
458
+ * Make copy of the texture. Note this is not a "deep copy", the image is shared. Cloning the texture automatically
459
+ * marks it for texture upload.
460
460
  */
461
461
  clone(): this;
462
462
 
@@ -0,0 +1,27 @@
1
+ import {
2
+ MagnificationTextureFilter,
3
+ Mapping,
4
+ MinificationTextureFilter,
5
+ PixelFormat,
6
+ TextureDataType,
7
+ Wrapping,
8
+ } from "../constants.js";
9
+ import { VideoTexture } from "./VideoTexture.js";
10
+
11
+ declare class VideoFrameTexture extends VideoTexture {
12
+ constructor(
13
+ mapping?: Mapping,
14
+ wrapS?: Wrapping,
15
+ wrapT?: Wrapping,
16
+ magFilter?: MagnificationTextureFilter,
17
+ minFilter?: MinificationTextureFilter,
18
+ format?: PixelFormat,
19
+ type?: TextureDataType,
20
+ anisotropy?: number,
21
+ );
22
+
23
+ // FIXME Replace with VideoFrame when we no longer need to support TypeScript 5.0
24
+ setFrame(frane: unknown): void;
25
+ }
26
+
27
+ export { VideoFrameTexture };
@@ -1,99 +0,0 @@
1
- import { AnimationClip, AnimationMixer, Audio, Bone, Camera, Mesh, Object3D, Quaternion, SkinnedMesh } from "three";
2
-
3
- import { CCDIKSolver } from "./CCDIKSolver.js";
4
- import { MMDPhysics } from "./MMDPhysics.js";
5
-
6
- export interface MMDAnimationHelperParameter {
7
- sync?: boolean | undefined;
8
- afterglow?: number | undefined;
9
- resetPhysicsOnLoop?: boolean | undefined;
10
- pmxAnimation?: boolean | undefined;
11
- }
12
-
13
- export interface MMDAnimationHelperAddParameter {
14
- animation?: AnimationClip | AnimationClip[] | undefined;
15
- physics?: boolean | undefined;
16
- warmup?: number | undefined;
17
- unitStep?: number | undefined;
18
- maxStepNum?: number | undefined;
19
- gravity?: number | undefined;
20
- delayTime?: number | undefined;
21
- }
22
-
23
- export interface MMDAnimationHelperPoseParameter {
24
- resetPose?: boolean | undefined;
25
- ik?: boolean | undefined;
26
- grant?: boolean | undefined;
27
- }
28
-
29
- export interface MMDAnimationHelperMixer {
30
- looped: boolean;
31
- mixer?: AnimationMixer | undefined;
32
- ikSolver: CCDIKSolver;
33
- grantSolver: GrantSolver;
34
- physics?: MMDPhysics | undefined;
35
- duration?: number | undefined;
36
- }
37
-
38
- /**
39
- * @deprecated The module has been deprecated and will be removed with r172. Please migrate to
40
- * https://github.com/takahirox/three-mmd-loader instead.
41
- */
42
- export class MMDAnimationHelper {
43
- constructor(params?: MMDAnimationHelperParameter);
44
- meshes: SkinnedMesh[];
45
- camera: Camera | null;
46
- cameraTarget: Object3D;
47
- audio: Audio;
48
- audioManager: AudioManager;
49
- configuration: {
50
- sync: boolean;
51
- afterglow: number;
52
- resetPhysicsOnLoop: boolean;
53
- pmxAnimation: boolean;
54
- };
55
- enabled: {
56
- animation: boolean;
57
- ik: boolean;
58
- grant: boolean;
59
- physics: boolean;
60
- cameraAnimation: boolean;
61
- };
62
- objects: WeakMap<SkinnedMesh | Camera | AudioManager, MMDAnimationHelperMixer>;
63
- onBeforePhysics: (mesh: SkinnedMesh) => void;
64
- sharedPhysics: boolean;
65
- masterPhysics: null;
66
-
67
- add(object: SkinnedMesh | Camera | Audio, params?: MMDAnimationHelperAddParameter): this;
68
- remove(object: SkinnedMesh | Camera | Audio): this;
69
- update(delta: number): this;
70
- pose(mesh: SkinnedMesh, vpd: object, params?: MMDAnimationHelperPoseParameter): this;
71
- enable(key: string, enabled: boolean): this;
72
- createGrantSolver(mesh: SkinnedMesh): GrantSolver;
73
- }
74
-
75
- export interface AudioManagerParameter {
76
- delayTime?: number | undefined;
77
- }
78
-
79
- export class AudioManager {
80
- constructor(audio: Audio, params?: AudioManagerParameter);
81
- audio: Audio;
82
- elapsedTime: number;
83
- currentTime: number;
84
- delayTime: number;
85
- audioDuration: number;
86
- duration: number;
87
-
88
- control(delta: number): this;
89
- }
90
-
91
- export class GrantSolver {
92
- constructor(mesh: SkinnedMesh, grants: object[]);
93
- mesh: SkinnedMesh;
94
- grants: object[];
95
-
96
- update(): this;
97
- updateOne(gran: object[]): this;
98
- addGrantRotation(bone: Bone, q: Quaternion, ratio: number): this;
99
- }
@@ -1,128 +0,0 @@
1
- import { Bone, Euler, Matrix4, MeshBasicMaterial, Object3D, Quaternion, SkinnedMesh, Vector3 } from "three";
2
-
3
- export interface MMDPhysicsParameter {
4
- unitStep?: number | undefined;
5
- maxStepNum?: number | undefined;
6
- gravity?: Vector3 | undefined;
7
- }
8
-
9
- /**
10
- * @deprecated The module has been deprecated and will be removed with r172. Please migrate to
11
- * https://github.com/takahirox/three-mmd-loader instead.
12
- */
13
- export class MMDPhysics {
14
- constructor(
15
- mesh: SkinnedMesh,
16
- rigidBodyParams: object[],
17
- constraintParams?: object[],
18
- params?: MMDPhysicsParameter,
19
- );
20
- manager: ResourceManager;
21
- mesh: SkinnedMesh;
22
- unitStep: number;
23
- maxStepNum: number;
24
- gravity: Vector3;
25
- world: null;
26
- bodies: RigidBody[];
27
- constraints: Constraint[];
28
-
29
- update(delta: number): this;
30
- reset(): this;
31
- warmup(cycles: number): this;
32
- setGravity(gravity: Vector3): this;
33
- createHelper(): MMDPhysicsHelper;
34
- }
35
-
36
- export class ResourceManager {
37
- constructor();
38
- threeVector3s: Vector3[];
39
- threeMatrix4s: Matrix4[];
40
- threeQuaternions: Quaternion[];
41
- threeEulers: Euler[];
42
- transforms: object[];
43
- quaternions: object[];
44
- vector3s: object[];
45
-
46
- allocThreeVector3(): void;
47
- freeThreeVector3(v: Vector3): void;
48
- allocThreeMatrix4(): void;
49
- freeThreeMatrix4(m: Matrix4): void;
50
- allocThreeQuaternion(): void;
51
- freeThreeQuaternion(q: Quaternion): void;
52
- allocThreeEuler(): void;
53
- freeThreeEuler(e: Euler): void;
54
- allocTransform(): void;
55
- freeTransform(t: object): void;
56
- allocQuaternion(): void;
57
- freeQuaternion(q: object): void;
58
- allocVector3(): void;
59
- freeVector3(v: object): void;
60
- setIdentity(): void;
61
- getBasis(t: object): object;
62
- getBasisAsMatrix3(t: object): object;
63
- getOrigin(t: object): object;
64
- setOrigin(t: object, v: object): void;
65
- copyOrigin(t1: object, t2: object): void;
66
- setBasis(t: object, q: object): void;
67
- setBasisFromMatrix3(t: object, m: object): void;
68
- setOriginFromArray3(t: object, a: number[]): void;
69
- setOriginFromThreeVector3(t: object, v: Vector3): void;
70
- setBasisFromArray3(t: object, a: number[]): void;
71
- setBasisFromThreeQuaternion(t: object, a: Quaternion): void;
72
- multiplyTransforms(t1: object, t2: object): object;
73
- inverseTransform(t: object): object;
74
- multiplyMatrices3(m1: object, m2: object): object;
75
- addVector3(v1: object, v2: object): object;
76
- dotVectors3(v1: object, v2: object): number;
77
- rowOfMatrix3(m: object, i: number): object;
78
- columnOfMatrix3(m: object, i: number): object;
79
- negativeVector3(v: object): object;
80
- multiplyMatrix3ByVector3(m: object, v: object): object;
81
- transposeMatrix3(m: object): object;
82
- quaternionToMatrix3(q: object): object;
83
- matrix3ToQuaternion(m: object): object;
84
- }
85
-
86
- export class RigidBody {
87
- constructor(mesh: SkinnedMesh, world: object, params: object, manager: ResourceManager);
88
- mesh: SkinnedMesh;
89
- world: object;
90
- params: object;
91
- manager: ResourceManager;
92
-
93
- body: object;
94
- bone: Bone;
95
- boneOffsetForm: object;
96
- boneOffsetFormInverse: object;
97
-
98
- reset(): this;
99
- updateFromBone(): this;
100
- updateBone(): this;
101
- }
102
-
103
- export class Constraint {
104
- constructor(
105
- mesh: SkinnedMesh,
106
- world: object,
107
- bodyA: RigidBody,
108
- bodyB: RigidBody,
109
- params: object,
110
- manager: ResourceManager,
111
- );
112
-
113
- mesh: SkinnedMesh;
114
- world: object;
115
- bodyA: RigidBody;
116
- bodyB: RigidBody;
117
- params: object;
118
- manager: ResourceManager;
119
- }
120
-
121
- export class MMDPhysicsHelper extends Object3D {
122
- mesh: SkinnedMesh;
123
- physics: MMDPhysics;
124
- materials: [MeshBasicMaterial, MeshBasicMaterial, MeshBasicMaterial];
125
-
126
- constructor(mesh: SkinnedMesh, physics: MMDPhysics);
127
- dispose(): void;
128
- }
@@ -1,11 +0,0 @@
1
- import { Object3D } from "three";
2
-
3
- /**
4
- * @deprecated The module has been deprecated and will be removed with r172. Please migrate to
5
- * https://github.com/takahirox/three-mmd-loader instead.
6
- */
7
- export class MMDExporter {
8
- constructor();
9
-
10
- parseVpd(skin: Object3D, outputShiftJis: boolean, useOriginalBones: boolean): [] | Uint8Array;
11
- }
@@ -1,60 +0,0 @@
1
- import { AnimationClip, Camera, FileLoader, Loader, LoadingManager, SkinnedMesh } from "three";
2
-
3
- export interface MMDLoaderAnimationObject {
4
- animation: AnimationClip;
5
- mesh: SkinnedMesh;
6
- }
7
-
8
- /**
9
- * @deprecated The module has been deprecated and will be removed with r172. Please migrate to
10
- * https://github.com/takahirox/three-mmd-loader instead.
11
- */
12
- export class MMDLoader extends Loader<SkinnedMesh> {
13
- constructor(manager?: LoadingManager);
14
- animationBuilder: object;
15
- animationPath: string;
16
- loader: FileLoader;
17
- meshBuilder: object;
18
- parser: object | null;
19
-
20
- loadAnimation(
21
- url: string,
22
- object: SkinnedMesh | Camera,
23
- onLoad: (object: SkinnedMesh | AnimationClip) => void,
24
- onProgress?: (event: ProgressEvent) => void,
25
- onError?: (event: ErrorEvent) => void,
26
- ): void;
27
- loadPMD(
28
- url: string,
29
- onLoad: (object: object) => void,
30
- onProgress?: (event: ProgressEvent) => void,
31
- onError?: (event: ErrorEvent) => void,
32
- ): void;
33
- loadPMX(
34
- url: string,
35
- onLoad: (object: object) => void,
36
- onProgress?: (event: ProgressEvent) => void,
37
- onError?: (event: ErrorEvent) => void,
38
- ): void;
39
- loadVMD(
40
- url: string,
41
- onLoad: (object: object) => void,
42
- onProgress?: (event: ProgressEvent) => void,
43
- onError?: (event: ErrorEvent) => void,
44
- ): void;
45
- loadVPD(
46
- url: string,
47
- isUnicode: boolean,
48
- onLoad: (object: object) => void,
49
- onProgress?: (event: ProgressEvent) => void,
50
- onError?: (event: ErrorEvent) => void,
51
- ): void;
52
- loadWithAnimation(
53
- url: string,
54
- vmdUrl: string | string[],
55
- onLoad: (object: MMDLoaderAnimationObject) => void,
56
- onProgress?: (event: ProgressEvent) => void,
57
- onError?: (event: ErrorEvent) => void,
58
- ): void;
59
- setAnimationPath(animationPath: string): this;
60
- }